模拟支付宝Notify通知数据
支付宝异步通知 - 关键所在
以下信息是支付宝处理的关键所在,我们已经简化提炼,请务必阅读一次以
提示:你可以复制上面Mock的json数据到你的程序内测试
# 异步通知参数说明 : https://opendocs.alipay.com/open/270/105902
# 支付宝沙箱 https://opendocs.alipay.com/open/02np8i
注意:支付宝沙箱测试时要退出支付宝登录,最好关闭浏览器再打开测试
服务器异步通知主要特性
-
必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML 标签、开发系统自带抛出的异常提示信息等。
-
支付宝是用 POST 方式发送通知信息,因此该页面中获取参数的方式,如:request.Form(“out_trade_no”)、$_POST[‘out_trade_no’]。
-
程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是 success 这7个字符,支付宝服务器会不断重发通知,直到超过 24 小时 22 分钟。一般情况下,25 小时以内完成 8 次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)。
-
程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到 success 字符,会被支付宝服务器判定为该页面程序运行出现异常,而重发处理结果通知。
订单处理流程:
-
验证数据签名,这步使用第三方包一般不存在问题,只要传入对应参数即可
-
商户需要验证该通知数据中的 out_trade_no 是否为商户系统中创建的订单号;
-
判断 total_amount 是否确实为该订单的实际金额(即商户订单创建时的金额);
-
校验通知中的 seller_id(或者 seller_email) 是否为 out_trade_no 这笔单据的对应的操作方(有的时候,一个商户可能有多个 seller_id/seller_email);
-
验证 app_id 是否为该商户本身。
上述步骤有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。 在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
注意事项:
-
状态 TRADE_SUCCESS(一般都是这个) 订单支持退款,买家付款成功;
-
交易状态 TRADE_FINISHED 不支持退款,买家付款成功;
致谢:Mock.js、Next.js、Mui、React..等
Copyright © useMock.com 2024 开心诉网络科技有限公司