diff --git a/docs/app-payment-aip.md b/docs/app-payment-aip.md index 148f8849051a2bdcda8dbea133b1373a8342d6da..b2d23a502dac60341b8bd2c9e7b05a9160182594 100644 --- a/docs/app-payment-aip.md +++ b/docs/app-payment-aip.md @@ -1,6 +1,6 @@ #### 注意事项 -1.应苹果审核规范要求,应用中虚拟物品交易必须使用Apple应用内支付,实物才可使用第三方支付(支付宝、微信等) -2.使用沙盒环境测试时每次调用支付接口需要换一个新的测试账号或商品,同一个账号多次购买同一个商品可能会没有回调 +1. 应苹果审核规范要求,应用中虚拟物品交易必须使用Apple应用内支付,实物才可使用第三方支付(支付宝、微信等) +2. 使用沙盒环境测试时每次调用支付接口需要换一个新的测试账号或商品,同一个账号多次购买同一个商品可能会没有回调 #### 相关文档 使用前必读:[App内购买配置流程](https://help.apple.com/app-store-connect/#/devb57be10e7) @@ -8,9 +8,9 @@ 服务端防刷单参考[IAP支付防止刷单](https://www.jianshu.com/p/5cf686e92924) #### 参考建议 -1.提前绑定支付方式可以有效避免丢单情况,示例: +1. 提前绑定支付方式可以有效避免丢单情况,示例: `plus.runtime.openURL("https://apps.apple.com/account/billing"); //跳转AppStore绑定支付方式` -2.在每个接口调用前后添加打点日志收集,以便快速定位问题 +2. 在每个接口调用前后添加打点日志收集,以便快速定位问题 #### 丢单问题说明 通过和用户联调我们发现在调用支付接口后,如果用户未绑定支付方式此时会触发支付失败回调方法,实际上用户可以跳转 AppStrore 绑卡然后继续支付,之前的逻辑在回调失败方法中框架会关闭订单,用户付完钱在回到App中也不会触发成功回调,这样就造成了丢单,解决方法就是在调用支付接口时添加optimize: true参数,并标记 restoreFlag = true;,支付成功回调中清除标记 restoreFlag = false; 然后在支付失败回调中框架就不会关闭订单了,并在页面显示的时候通过标记判断是否需要调用 restoreComplateRequest 方法,如果用户跳转App Store绑定支付方式付款成功后回到 App 就可以通过 restoreComplateRequest 方法恢复之前支付的订单信息,解决丢单的问题;