一、主要思想
- 无需支付校验,直接查询支付结果
- 支付流程整体设计,兼容支付宝、微信的支付设计
二、关于支付校验
支付校验比较麻烦,而且好像大多数人的项目里也没有支付校验,这是为什么?
在支付宝支付中,我们调用SDK,得到支付宝服务端返回的支付结果后,需要和我们自己的服务端做一步支付校验的工作:
支付校验.png但是这样做很是麻烦,支付宝官方给文是这么说的:
"由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步结果仅仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。"
也就是说为了简化流程,这一步也是可以少滴,但是安全不安全,应该没什么大问题吧。
三、支付流程
1、流程
1、向自己的服务端发起支付请求,服务端将参数拼装后返回客户端;
2、客户端调起支付宝支付SDK,SDK连接支付宝服务端发起支付;
3、收到SDK的支付回调后,客户端开启轮询,向自己的服务端查询支付结果。
4、如果自己的服务端早已收到支付宝服务端的支付异步通知则直接将结果返回给客户端,如果没收到,服务端去支付宝服务端查询,然后将结果返回给客户端。
2、注意
2.1 关于轮询查询支付结果
流程中的第3步提到“轮询”查询支付结果,为什么要轮询查询呢?是为了保证拿到支付结果,如果收到支付宝的支付回调后只查询一次,如果接口失败了,网络不畅通等状况发生,那当前支付页面要怎么处理呢,再次发起支付肯定会出bug。
轮询查询支付结果已经是业界默认的一种做法,一般情况支付结果基本上很快就能出来。
四、最后
支付宝是这样,微信支付也是大同小异,这一套流程,整体上对于支付宝、微信、银联都是通用的。
如有问题,请指正。
网友评论