美文网首页
支付宝即时到账接口对接总结

支付宝即时到账接口对接总结

作者: Fairyin | 来源:发表于2016-05-10 14:04 被阅读991次

    一、前期准备工作


    1.登录公司支付宝账号,申请开通即时到账的服务。

    2.根据支付宝文档的要求生成公钥私钥并上传到公司支付宝账户中,然后就可以查询到对应的支付宝公钥了。(注意事项:将支付宝公钥复制到一个 .pem 文件如下图的中间位置,每行64个字符,若格式不匹配,后面验证签名时会报错)

    -----BEGIN PUBLIC KEY-----

    这里是支付宝公钥

    -----END PUBLIC KEY-----

    3.下载支付宝即时到账接口文档(php)。

    二、接口调试


    1.根据公司所有的php框架和现有的架构进行分析,设想几种对接的方式,寻找相对合理的解决方案。

    2.接口对接之签名验证:常见的 MD5 和 RSA (MD5 的实现较 RSA 签名模式的实现要简单的多,推荐使用 RSA 签名验证,MD5便于伪造,而公钥和私钥则很难伪造)

    3.调试过程中出现最多的错就是签名错误,要么是参数不正确,要么是证书的路径不正确,下面这个三个文件是非常重要的,缺一不可。

    商户私钥文件:步骤一中生成的私钥文件

    支付宝公钥文件:步骤一中上传秘钥后获取的支付宝公钥文件。

    cacert.pem:直接将支付宝文档中的文件拿过来使用

    4.同步通知和异步通知

    同步通知只有一次,1分钟内有效。

    异步通知会有8次,25小时内完成8次通知(频率是:4m,10m,10m,1h,2h,6h,15h)。商户处理接口若打印出 success 则表示交易成功了,通知id将会失效,也不会发送消息了,否则一直发送知道发送8次后失效。

    5.同步通知可以在开发环境下测试,异步通知只能在线上服务器上在线测试,所以需要提前做好日志记录。

    6.php处理时要注意编码格式,这种情况出现就是chrome可以发起支付,但是ie,360这样的浏览器就会包参数错误。

    三、业务融合


    1.同步返回和异步通知都可用于更新订单状态。

       假设:支付成功后,直接关闭页面,没有发生同步通知,这样就可以测试异步通知是否对剩下的业务逻辑进行处理了。

    2.在处理商户订单的时候一定要进行一下判断:

    ①交易状态码验证

    ②卖家账号是否一致

    ③通知id验证

    ④签名验证

    ⑤订单状态检验

    ⑥登录用户是否为订单关联的用户

    ⑦交易金额是否一致

    3.经过上面一系列验证后终于可以走商户的处理逻辑了,处理逻辑也要检验,当订单状态已改变时则直接跳过处理。

    4.业务逻辑是可以通过同步通知来走通的。

    四、线上调试


    1.根据日志记录和php错误来修正代码。

    2.防钓鱼ip地址检查和防钓鱼时间戳可以根据需要来设置(anti_phishing_key,exter_invoke_ip),具体看文档中的配置。

    五、总结


            前期的准备工作一定要提前完成,不然代码无法调试,其它的介绍文档里面都描述的非常清楚,在开发的过程中一路下来遇到的大部分问题都是在文档中找到的,最纠结的一个问题在于签名的验证,签名的生成是根据返回的所有参数生成的,但是验证的时候我带入了多余的用户 token,所以导致签名一直验证失败。

            简书的第一篇随笔,以后会坚持写下去。                  

    相关文章

      网友评论

          本文标题:支付宝即时到账接口对接总结

          本文链接:https://www.haomeiwen.com/subject/pilyrttx.html