thinkPHP6 中使用 yansongda/pay 报Alipay Sign Verify FAILED

  • 本地环境: lamp + thinkPHP6
  • yansongda/pay 版本是 2.10
  • 公钥和私钥都没有问题
  • 报错如下:

thinkPHP6 中使用 yansongda/pay 报Alipay Sign Verify FAILED

  • 日志记录如下 :

    yansongda.pay.INFO > Received Alipay Request
    {
      "/payment/alipay/return": "",
      "charset": "utf-8",
      "out_trade_no": "20201111101635181165",
      "method": "alipay.trade.page.pay.return",
      "total_amount": "1.00",
      "sign": "e1RbM0WjcZEflMLpgDpASKIeqbQaNeBa0BxDS+OHNC90RtFXfqXXv+8XAjXWF+mKhpZxl69C23WQVdSww1SmQIUu6IWAOrJ/k3beKKfgrOIvtBjPhTGsSuuJeaGD4+Ir/m+bJH2GirdSTG7iXIu1+JH1wvbKxHd4gnnCZ1iEUw3u+tTpD6DpBAQuMIhLvNrnXclB8mifiMzKObH/76phOD1unhJStMGTqSgT/cMmlAgF9j/2ZzM7xmfDNKT5n7UypTpKUJecFrLfD5oNnG33FsZq2SVc8sthsOi73ic/9FPU+ok5vZuYfLw4ldH+1GFS9Gh946NVmWVZ4Hf2EBAxtQ==",
      "trade_no": "2020111122001405340500917164",
      "auth_app_id": "2016102300746083",
      "version": "1.0",
      "app_id": "2016102300746083",
      "sign_type": "RSA2",
      "seller_id": "2088102180786795",
      "timestamp": "2020-11-11 10:17:06"
    }
  • 代码如下 :

      // 支付
      public function pay(Request $request)
      {
          $order = [
              'out_trade_no' => $request->post('orderId'),
              'total_amount' => '1',
              'subject' => 'test subject - 测试',
          ];
    
          $alipay = \Yansongda\Pay\Pay::alipay($this->config)->web($order);
    
          return $alipay->send();
       }
    
       // 前端回调
      public function alipayReturn()
      {
          $data = \Yansongda\Pay\Pay::alipay($this->config)->verify();
      }
    
      // 服务器回调
      public function alipayNotify()
      {
          $alipay = \Yansongda\Pay\Pay::alipay($this->config);
      try{
          $data = $alipay->verify(); // 是的,验签就这么简单!
          \Yansongda\Pay\Log::debug('Alipay notify', $data->all());
      } catch (\Exception $e) {
          // $e->getMessage();
      }
          return $alipay->success()->send();
      }

  • 而且, 不是很明白这个验证的作用, 因为当这个验证不通过的时候, 我支付宝里的钱是已经扣了, 难道说是要在回调函数中判断下验签是否通过, 如果没有通过, 再发起一次支付宝退款?

  • 求各位大哥指教下
最佳答案

不好意思啊, 已经解决了, 是配置信息的问题, 虽然我也没有发现问题出在了哪里, 我从其他地方复制了一个, 改了下其中的配置, 就好了

3年前 评论
讨论数量: 2

你异常捕获不捕获走了回调支付包成功了,肯定扣钱啊

3年前 评论
qingshui (楼主) 3年前

不好意思啊, 已经解决了, 是配置信息的问题, 虽然我也没有发现问题出在了哪里, 我从其他地方复制了一个, 改了下其中的配置, 就好了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!