对接alipay支付遇到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuchangqing123/article/details/49968891

在支付宝支付接入过程中遇到几个需要注意和理解的地方,记录一下。相比微信支付,支付宝流程上感觉还是简单不少,网上和官方给的文档和demo还是很全的。在我的支付逻辑中包括:发起支付请求、用户支付、支付通知(支付成功后自动发货)、订单状态更新。

以下是几个问题:

1).支付完成后同步通知和异步通知区别,有问题就要去好好看看支付宝文档(https://cshall.alipay.com/support/help_detail.htm?help_id=397355)!!!

同步通知(return_url):


1、 构造请求数据
商户通过提供的接口代码示例,通过代码示例的规则,程序构造与运算得到sign加密结果以及构造后的请求给支付宝的数据集合。GET方式下是URL地址链接,POST方式下是支付宝网关地址及参数集合。
2、 发送请求数据
把构造完成的数据集合,通过页面链接跳转或表单提交的方式传递给支付宝。
3、 请求的交易
支付宝得到这些集合后,会先做安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。
4、 返回相应数据
支付宝对处理完成的交易,程序上自动进行重新构造成URL地址链接,以自动跳转的方式跳回商家在请求时设定好的页面路径地址(参数return_url,商家没设定,则不会跳回)。
5、 对相应的数据进行处理
商家的返回页面(参数return_url指定页面文件)得到支付宝返回的数据,把这些数据结合自身网站情况,进行数据处理(如:订单更新)。


异步通知(notify_url):


前提:若要支付宝能主动通知,需商户在请求时设定好通知的页面路径(参数notify_url),且该页面文件完全空白,无任何字符。
1、 发起通知
一旦交易状态发生变更(如:买家已付款,等待卖家发货),支付宝便会根据自动进行数据处理,并主动调用商户在请求时设定好通知的页面路径(参数notify_url)
2、 对通知数据进行处理
商户网站收到支付宝发送过来的通知数据,把这些数据结合自身网站情况,进行数据处理,如:处理返回页(参数return_url)漏掉的订单,做订单更新,即补单措施。
3、 在页面上输出success
商户网站处理完成所有的数据处理以后,即程序运行最后,返回写页面“success”这7个字符(页面上只允许输出success),以表示自己已经成功处理完成自己的业务。
4、 完成处理该次通知,不再发送通知
支付宝得到商户反馈回来的“success”7个字符信息,进行核对与验证,结束此次通知流程。
注意:
如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。在25小时内完成6~10次通知(通知频率:5s,2m,10m,15m,1h,2h,6h,15h)


特别注意:
在异步通知中接收到支付宝的通知请求后,根据返回的支付状态码处理自己逻辑,处理完成后一定要返回“success”这7个字符,在页面上不能有任何其他html标签!否则会一直接重复收到通知。


2)关于乱码问题
一般乱码问题的结果是通知返回时sign与mysign为什么不相等(解决办法https://cshall.alipay.com/support/help_detail.htm?help_id=397351)。
注意在下载的demo中多看看注释,初始时不用对构建的请求参数进行转码。如果发现乱码问题再加上处理乱码的代码即可。


3)在支付流程中要添加必要的日志
支付状态、订单状态、异常信息记录的全一些便于查找问题。



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页