上面说到了流程,下面稍微说一下对支付结果的处理:
支付的结果处理有两种方式:一个是同步通知,一个是异步通知(一定要明确自己用的是异步请求还是同步请求!Return_url是同步,notify_url是异步,选择其中之一!)
我个人建议使用异步通知(习惯而已)
异步通知的url,无论是在APP支付还是网站支付中都形如notify_url,大家可以自己定位查询下,下面以为app写接口为例说明下notify_url。
打开下载的服务端demo,我们会看到一个文件,notify_url.php,此文件就是异步通知的文件,异步通知回来后, 服务端就要根据异步的结果,去处理自己的程序逻辑,比如修改订单状态。
业务逻辑的处理,我见过有人写在0的位置,也有人写在1的位置,我个人是写在了1的位置。
当此时,一个完整的支付基本就写完了,关于支付的调试,其实支付宝是提供了 一个方法的。异步回来的结果是要再次进行验签的,基本上支付是否成功,就在验签的方法中得以体现,也就是说一些异步回来的信息,在验签的方法中是可以调试打印的!!
进到verifyNotify方法(如果用的是同步通知这个方法是verifyReturn())中我们可以看到
没错!!logResult就是支付宝提供的打印返回异步通知参数的方法(此方法写入的log.txt
大家可以自己改路径)。通过这个你就很明显知道,订单到底成功还是没成功!
从上述的日志很容易就知道,客户端吊起支付之后出现的一些问题是怎么来的,哪里的问题! 好了,洋洋洒洒这么多,终于给一个完整的支付讲述完毕。实际开发中还需要大家多揣摩,多测试,多想多总结。
附录常见的问题错误总结(不尽之处大家自己总结积累)
A.用demo来实现支付时出现的常见代码以及排查解决方法
注意:用手机网站支付demo或移动支付服务端demo调用的时候一般用的是合作伙伴密钥
ILLEGAL_SIGN获取签名时候拼装的参数有问题,检查顺序,对照文档必传项。
ALI38173 合作伙伴密钥或者开放平台密钥中上传的公钥,跟本地保存的私钥不是成对匹配的!重新生成公私钥,私钥存本地,公钥上传换取支付宝公钥!(一定要记住公私钥都要存在本地作为备份,包括换取的支付宝公钥要做备份!)
B.用SDK调用API来实现支付时出现的常见代码以及排查解决方法
错误代码 invalid-signature 错误原因: 无效签名
上述的方法包裹json的时候必须是双引号
错误代码 missing-signature 错误原因: 缺少签名参数 私钥和公钥不成对匹配
LI38173 1.业务参数不全 2.开放平台密钥中上传的公钥,跟本地保存的私钥不是成对匹配的!重新生成公私钥,私钥存本地,公钥上传换取支付宝公钥
相关推荐: