支付对接流程分析

当完成一个支付请求被发送到支付渠道方,支付渠道会很快返回一个结果。但是这个结果,只是告诉你调用成功了,不是扣款成功,这叫同步调用。很多人拿这个结果当作支付成功了,那就会被坑死,结果就是支付成功率特别高,伴随着一堆无法解释的坏账率,测试人员尤其要注意测试数据的篡改:金额,同步返回结果,订单号等。

同步请求参数里面会有一个回调地址,这个地址是支付渠道在扣款成功后调用的,这叫异步调用。一般同步接口仅检查参数是否正确,签名是否无误等。异步接口才告诉你扣款结果。一般异步接口有5秒以内的延迟。调用不成功会重试。有时候是这边成功了,但支付渠道侧没收到返回,于是会继续调。当天的支付到第二天还在被异步调用也都是正常的。这也是开发人员需要特别注意的地方,不要当做重复支付。测试人员也要对重复回调进行测试,应只有一次有效。这还不是最坑的,一般支付渠道侧,只有支付成功了才通知你。要是支付失败了,压根儿都不告诉你。 另一方面,如何老收不到异步结果呢?那就得查查了。同步结果不可靠,异步调用不可靠,那怎么确定支付结果?最终的杀招就是查单了,反查,一般支付渠道侧都会提供反查接口,定时获取DB中待支付的订单调用支付渠道侧的反查接口,最终把支付渠道侧扣款成功的订单完成掉。

来源:https://www.cnblogs.com/Alexr/p/9385650.html

 

 

对比

ID

微信需要三个ID:AppID、AppSecret、PID

支付宝需要亮哥ID:AppID、PID

多平台跳转

微信过于分散,从开放平台就不容易跳转到商户平台

蚂蚁金服集中的比较好,各平台互相跳转地很舒服

引用

微信使用gradle引用;支付宝使用jar包引用

登录

微信登录已经集成在ShareSDK了;支付宝没有集成

支付

双方都要求以服务器收到的信息为准,但是微信要求的更彻底,微信的返回值连订单号都没有

调微信App支付时,你的App不知道订单号(预交易订单号不是订单号);调支付宝App支付时,你的App知道订单号(而且知道详细的交易信息)

微信App是通过接口回调异步反馈的;支付宝App是通过函数返回值异步反馈的

微信主要通过后台对后台的方式传递订单和支付信息;支付宝则是主要通过App

(如果说支付行为好像是上楼签合同的话,在微信App支付里,你的后台是那个上楼送合同的人,你的App只是个按电梯开关的;在支付宝App支付,你的App是那个拿着合同上楼的人)

微信先通过后台完成支付,然后通知App;支付宝先通过App完成支付,然后后台跟进

微信支付成功会跳转Activity(要自己写);支付宝是纯逻辑处理

发表评论

电子邮件地址不会被公开。 必填项已用*标注