在翻阅与网站接入支付宝电脑网站支付功能实践操作中,发现支付宝发起异步通知有以下两种情况:
第一种情况:对于 PC 网站支付的交易,在用户支付完成之后,支付宝会根据 API 中商户传入的 notify_url,通过 POST 请求的形式将支付结果作为参数通知到商户系统。对应接收到通知的示例如下:
//以下在沙箱环境中测试返回的数据 2022-03-12 17:38:12 打印异步通知参数 array ( //交易创建时间。格式为 yyyy-MM-dd HH:mm:ss 'gmt_create' => '2022-03-12 17:38:01', //编码格式。如utf-8、gbk、gb312等 'charset' => 'UTF-8', //交易付款时间。格式为 yyyy-MM-dd HH:mm:ss 'gmt_payment' => '2022-03-12 17:38:11', //通知的发送时间。格式为 yyyy-MM-dd HH:mm:ss 'notify_time' => '2022-03-12 17:38:12', //订单标题/商品标题/交易标题/订单关键字等,是请求时对应参数,会在通知中原样传回 'subject' => '******吊坠手链;******男女手链;琉璃四方纳财进宝聚宝盆', //签名 'sign' => 'vJoRejQmUU98Joo2cP8UoNNzw6/uWpsiUntAYXjwpsujiEt8AeRg5IauAQmlTyGIFIIOc0HvvapObspjetzND8J0tIr1vkVeMXmdAJovI7RT2VA/w588Xv1mUqykLvk5EoYyLVcyKZZWKSN6nHJRu7YZdx54z8k+4ttJxLTmfvAILtYAxdjjv9U5sVU/IW6Od3CfOoAy1y8E4E7bow9SVw1+wsJjoHhEw+krobDd3M8atGzsywu/TiGy7KZJH2Rdt9priFF+wZWMWyxf+6QDdQZ+5OANG17+ioodM54btnk0dNFudTECTI/WA/EyoKZXCeHhCO8PKzvkErMpSJVFCw==', //买家支付宝账号ID。以2088开头的纯16位数字 'buyer_id' => '2088102174761636', //开票金额。用户在交易中支付的可开发票的金额,单位为人民币(元),精确到小数点后2位 'invoice_amount' => '148.92', //调用的接口版本。固定为1.0 'version' => '1.0', //通知校验ID 'notify_id' => '2022031200222173811061630523233290', //支付金额信息。支付成功的各个渠道金额信息 'fund_bill_list' => '[{"amount":"148.92","fundChannel":"ALIPAYACCOUNT"}]', //通知类型 'notify_type' => 'trade_status_sync', //商家订单号。原支付请求的商家订单号 'out_trade_no' => 'pay_220312173744493', //订单金额。本次交易支付订单金额,单位为人民币(元),精确到小数点后2位 'total_amount' => '148.92', //交易状态。交易目前所处状态 'trade_status' => 'TRADE_SUCCESS', //支付宝交易号,支付宝交易凭证号。 'trade_no' => '2022031222001461630505585435', //授权方的APPID。由于本接口暂不开放第三方应用授权,因此auth_app_id=app_id 'auth_app_id' => '2016**********06', //实收金额。商家在交易中实际收到的款项,单位为人民币(元),精确到小数点后2位 'receipt_amount' => '148.92', //使用集分宝支付金额,单位为人民币(元),精确到小数点后2位 'point_amount' => '0.00', //支付宝应用的APPID。支付宝分配给开发者的应用ID 'app_id' => '2016**********06', //用户在交易中支付的金额,单位为人民币(元),精确到小数点后2位 'buyer_pay_amount' => '148.92', //签名类型。签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 'sign_type' => 'RSA2', //卖家支付宝账号ID。以2088开头的纯16位数字 'seller_id' => '2088**********21', )
第二种情况:商户系统通过退款接口(alipay.trade.refund 统一收单交易退款接口)将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。对应接收到通知的示例如下:
2022-03-12 17:47:18 打印异步通知参数 array ( 'gmt_create' => '2022-03-12 17:38:01', 'charset' => 'UTF-8', 'gmt_payment' => '2022-03-12 17:38:11', 'notify_time' => '2022-03-12 17:47:18', 'subject' => '******吊坠手链;******男女手链;琉璃四方纳财进宝聚宝盆', //交易退款时间。格式为 yyyy-MM-dd HH:mm:ss.S 'gmt_refund' => '2022-03-12 17:47:17.676', 'sign' => 'padnkvxNTozee1B96Rv7fRieAgnNsedDmPh8osUTTIq1phonI6QTSTQVaIZxwApfTTn/mfeXXXDlXAhQnwTZAFIAzET4JxWTauanvTORbqew7bl3gXJubPsqJmTHAaKkWJV+MfOeuZYUI5Fqpxecla2n++tFnxI4jbj1wfspmmrOTkGXEAiuA8MztFA7vzd491Q1oBvMpMcmXgXRGvHJHPz22kgoCInm9wHu2lpSUvoMuvX4ivEJeLChkdb4/F+eUbUihvjFITfNeOdNBFed98IYzdyfYMiYZyZiieJ+W2n0mkK+HwlVJetUZb58T9KHFaToygy+o9vghTLhaJEM8A==', //商家业务号。商家业务ID,通常是退款通知中返回的退款申请流水号 'out_biz_no' => '220312173934482', 'buyer_id' => '2088102174761636', 'version' => '1.0', 'notify_id' => '2022031200222174718061630523233291', 'notify_type' => 'trade_status_sync', 'out_trade_no' => 'pay_220312173744493', 'total_amount' => '148.92', 'trade_status' => 'TRADE_SUCCESS', //总退款金额。退款通知中,返回总退款金额,单位为人民币(元),精确到小数点后2位 'refund_fee' => '88.88', 'trade_no' => '2022031222001461630505585435', 'auth_app_id' => '2016**********06', 'app_id' => '2016**********06', 'sign_type' => 'RSA2', 'seller_id' => '2088**********21', )