项目中需要接入支付宝的支付功能,记录一下出现的问题,并整合一下官方的接入文档。
问题记录
验签错误
根据 解决方法 中提到的几种错误原因一一排查,发现原因是 验签方式不正确 。应用配置的密钥类型是公钥证书,而验签对应的功能使用的是普通公钥的代码。
ISV权限不足
有三种原因:
- 应用未上线
- 正式环境和沙箱环境网关使用错误
- 未签约接口产品 && 签约了但应用下没有添加功能包
接入APP支付
接入分三个步骤:(接入文档)
同步通知和异步通知
- 同步通知:支付宝
SDK
对商户的请求支付数据处理完成后,会将结果同步反馈给商户App
端。 - 异步通知:对于
App
支付产生的交易,支付宝会根据原始支付API
中传入的异步通知地址notify_url
,通过POST
请求的形式将支付结果作为参数通知到商户系统。
关于同步通知和异步通知,在支付宝的 文档 中提到了一句:
由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步结果仅仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。
在 案例分析 中,包含了 异步通知 设置的方法,以及异步通知接口的一些返回参数等。
另外,异步通知接口的地址需要确保公网能访问到,我现在开发的项目都是在本地进行的,并没有部署到服务器上。我的方法是通过 utools 中的内网穿透工具将项目的端口暴露出来,这样就能愉快的完成测试啦。 内网穿透工具