thinkPHP6 中使用 yansongda/pay 报Alipay Sign Verify FAILED
- 本地环境: lamp + thinkPHP6
yansongda/pay
版本是2.10
- 公钥和私钥都没有问题
- 报错如下:
日志记录如下 :
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(); }
- 而且, 不是很明白这个验证的作用, 因为当这个验证不通过的时候, 我支付宝里的钱是已经扣了, 难道说是要在回调函数中判断下验签是否通过, 如果没有通过, 再发起一次支付宝退款?
- 求各位大哥指教下
不好意思啊, 已经解决了, 是配置信息的问题, 虽然我也没有发现问题出在了哪里, 我从其他地方复制了一个, 改了下其中的配置, 就好了