【JAVA支付宝支付】对接电脑网站支付接口过程中遇到的几个问题分享
一.开发文档和我参照过的文档
A.接口名称:
接入文档:https://opendocs.alipay.com/open/270/105899
支付API:https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay
沙箱文档:https://opendocs.alipay.com/open/200/105311
参考wiki:(1)理解什么是公钥和私钥,什么是加密和数字签名 https://www.jianshu.com/p/6f5f0695d8fa
----来自于简书 意一ineyee
(2)支付宝异步通知(notify_url)与同步通知(return_url)【参照接入文档的时序图】
https://www.cnblogs.com/phirothing/archive/2013/01/20/2868917.html
----来自于 PeteYan 博客
(3)代码参考
【官方demo: https://github.com/alipay/alipay-easysdk】
https://www.jianshu.com/p/09a1d7494c10 --来自于简书 码农笔录
二.开发过程中遇到的问题
(1).【问题描述】:沙箱环境调试的时候,执行alipay.trade.page.pay,提示**不匹配
【解决方法】:查看开放平台开发助手上重新生成**,会生成应用私钥和应用公钥
将公钥上传到沙箱应用公钥,保存私钥,作为接口调用的RSA2_PRIVATE_KEY参数
(2).【问题描述】:调试的时候,支付返回异步调用和同步调用,不进自己的方法
【解决方法】:支付宝支付之后,两个回调方法路径必须公网可访问
(3)【问题描述】:回调失败
【问题解决】:有几种可能性:
1.appid设置错误,appid要使用沙箱环境的appid
2.支付宝公钥设置错误,沙箱测试要设置沙箱的支付宝公钥,切勿填错
3.首先要注意的是,中文乱码问题,可以在转码过程中设置valueStr = new String(valueStr.getBytes(“ISO-8859-1”), “utf-8”);
(4)如果异步调用成功,同步调用不成功,处理方式:
首先,不要慌,问题出在同步的AlipaySignature.rsaCheckV1方法,首先检查参数,是否有误有丢失
其次:支付宝的支付成功通知,是体现在异步调用的节点上,同步调用是为了通知跳转页面,我们可以在异步调用中,操作自己的订单数据,在同步中重新查询一次,并不一定在同步调用中使用AlipaySignature.rsaCheckV1方法
以上是所有内容,有什么不对的地方欢迎大家指正