jialeo / payment

支付宝支付、银联支付、微信支付、paypal、苹果内购支付
71 stars 27 forks source link

支付宝签名验证失败一般是什么原因呢? #3

Closed tojike closed 5 years ago

tojike commented 5 years ago
 $alipay = new Payment\Alipay\WebPay($config);
        $pay_list = [
            'body' => $pay_data['body'], //内容
            'subject' => $pay_data['title'], //标题
            'out_trade_no' => $pay_data['order_no'], //商户订单号
            'timeout_express' => '30m', //取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天
            'total_amount' =>  $pay_data['total_price']*100, //支付价格(单位:分)
           // 'passback_params' => $alipay->setPassbackParams($return_params), //额外字段,回调时
            'notify_url' => request()->domain().'/pay/ali_notify', //后台回调地址
            'return_url' => 'https://www.domian.cn' //支付成功后跳转的地址
        ];
        return $alipay->handle($pay_list);

这段代码执行正常 返回了一个支付跳转地址。 直接支付成功回调后

 public function ali_notify(){
        $config = config('alipay_config');

        $alipay = new Payment\Alipay\Notify($config);

        try {
            //验签
            $data = $alipay->handle();

            $this->write_log($data); //写入日志
            $order_no = $data['out_trade_no'];
            $price = $data['total_amount'];
            $resMsg = StoreOrder::callbackProcess($order_no , $price);
            if(true !== $resMsg){
                $alipay->returnFailure();
                exit();
            }
        }
        catch (\Exception $e) {
            $error_msg = $e->getMessage();
            Log::record( $error_msg , 'notice' );
            $alipay->returnFailure();
        }
    }

直接走到 catch 下面的 Log::record( $error_msg , 'notice' ); 一脸懵逼。 image

想请教一下作者,这种问题要怎么排查???

tojike commented 5 years ago

已解决了,原来是要拿支付宝生成的公钥去加密 而不是我设置那个公钥。抱歉