支付宝支付回调,回调日志记录

 1、支付报支付回调方法

public function aliPayNotify()
    {
        try {
            $app = PayService::alipay();
            $collect             = $app->verify();
            $collectData         = $collect->all();//获取支付宝回调参数
          
            $this->writeAliPayLog($collectData, true);
            
            if ($collectData['trade_status'] != 'TRADE_SUCCESS' &&                     
                $collectData['trade_status'] != 'TRADE_FINISHED') {
                return;
            }
           
            //订单处理
            

        } catch (InvalidSignException $e) {
            $this->writeAliPayLog($e->raw, false);
            echo "fail";
        }
    }
    

2、日志写入方法

private function writeAliPayLog($data, $success = true)
    {
        $logStr = "-----[APP]-ASYN-异步序列号-" . $this->indexNo . $this->dateTime . "-异步开始->BEGIN:-------" . "\n";
        if ($success === false) {
            $logStr = "     ->APP-ASYN------验签是否通过:NO\n";
            if (count($data) > 0 && array_key_exists("trade_no", $data)) {
                $logStr .= "     ->APP-DATA-LIST-支付宝交易号:" . $data["trade_no"] . "\n";
                $logStr .= "     ->APP-DATA-LIST-商户订单号:" . $data["out_trade_no"] . "\n";
            } else {
                $logStr .= "     ->APP-ASYN------非法请求:拒绝响应\n";
            }
        } else {
            $logStr .= "     ->APP-ASYN------验签是否通过:OK\n";
            // 写入支付完成时间
            $logStr .= "     ->APP-DATA-LIST-交易时间:" . $this->payTime . "\n";
            $logStr .= "     ->APP-DATA-LIST-商户订单号:" . $data["out_trade_no"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-买家支付宝账号:" . $data["buyer_logon_id"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-交易金额:" . $data["total_amount"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-实收金额:" . $data["receipt_amount"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-买家付款的金额:" . $data["buyer_pay_amount"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-支付宝交易号:" . $data["trade_no"] . "\n";
//            $logStr .= "     ->APP-DATA-LIST-交易状态:" . $data["return_code"] . "\n";
            $logStr .= "     ->APP-DATA-LIST-交易状态:" . $data["trade_status"] . "\n";
            //$logStr .= "     ->APP-DATA-LIST-设备类型:" . $data["trade_type"] . "\n";
        }

        $logStr .= " -----[APP]-ASYN-异步序列号-" . $this->indexNo . "-异步完成->END-----------\n";
        file_put_contents($this->aliPayNotifyPath, $logStr, FILE_APPEND);//this->aliPayNotifyPath日志地址
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理支付退款回调的 PHP 代码可以参考以下示例: ```php <?php // 获取支付退款回调数据 $refundData = $_POST; // 验证回调签名 if (!verifySign($refundData)) { exit('fail'); } // 处理退款回调业务逻辑 if ($refundData['trade_status'] == 'SUCCESS') { // 退款成功,更新订单状态等操作 // ... exit('success'); } else { // 退款失败,记录日志等操作 // ... exit('fail'); } /** * 验证回调签名 * * @param array $data 回调数据 * @return bool */ function verifySign($data) { // 获取支付公钥 $alipayPublicKey = file_get_contents('https://openapi.alipay.com/gateway.do?service=publicKey&charset=utf-8'); // 创建支付公钥对象 $publicKey = openssl_get_publickey($alipayPublicKey); // 处理回调数据,去除 sign、sign_type 参数 unset($data['sign']); unset($data['sign_type']); ksort($data); $queryString = http_build_query($data); // 验证签名 $result = openssl_verify($queryString, base64_decode($data['sign']), $publicKey, OPENSSL_ALGO_SHA256); // 释放公钥资源 openssl_free_key($publicKey); return $result === 1; } ``` 在上述代码中,`verifySign` 函数用于验证回调签名。首先获取支付公钥,然后将回调数据按照参数名进行排序,并将 sign、sign_type 参数去除,将剩余参数拼接成字符串。最后使用 OpenSSL 库的 `openssl_verify` 函数进行签名验证,验证通过返回 1,否则返回 0 或 -1。 在处理退款回调业务逻辑时,首先判断退款状态是否为 SUCCESS,如果是则表示退款成功,可以更新订单状态等操作。如果退款状态不是 SUCCESS,则表示退款失败,可以记录日志等操作。最后需要输出 success 或 fail 字符串,表示处理结果,以告知支付服务器是否接收到了回调信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值