时间:2021-07-28 09:12:12
一、苹果APP支付到服务端验证整体流程
1. 用户在app中点击购买;
2. app调用服务端接口生成订单;
3. app获取到服务端订单生成成功后弹出支付窗口;
4. 用户输入密码支付;
5. app接收支付后apple应用商店返回的支付凭证;
6. app将支付凭证传回服务器,调用服务器接口验证凭证是否有效;
7. app获取服务器端的验证结果,反馈用户支付结果状态。
说明:苹果支付的商品,需要先在 itunes Connect 中配置APP内购项目,配置后对应会生成一个商品ID,在苹果APP端调用苹果支付时,就需要给苹果商店传送这个商品ID(product_id)参数。然后支付过程是在苹果商店中进行,支付完成后,返回一个支付凭证给APP,表示支付完成,但一般会再次调用自己的服务器(商家服务器)端进行支付验证,这时候在服务器写个验证接口,判断凭证是否有效,如果有效,对应修改订单状态和购买的商品状态等等。
二、验证代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
|
三、验证说明:
选择验证技术
有两种方法可以验证收据的真实性:
-
本地、设备上的收据验证,最适合验证具有应用内购买功能的应用的收据签名
-
使用 App Store 进行服务器端收据验证,最适合持久化应用内购买以维护和管理购买记录
比较这些方法并确定最适合您的应用程序和基础架构的方法。您也可以选择实施这两种方法。
如果需要,维护和管理服务器上的消耗品记录。
在您致电 之前,应用内购买的消耗品会保留在收据中。非消耗品、自动续订订阅项目和非续订订阅项目无限期地保留在收据中。对于自动续订订阅管理,请参阅下表,了解服务器端收据验证相对于设备上收据验证的主要优势。finishTransaction(_:)
Choosing a receipt validation technique | Apple Developer Documentation
服务端验证:将收据数据发送到 App Store
在您的服务器上,使用receipt-data
, password
(如果收据包含自动更新订阅)和 中exclude-old-transactions
详述的密钥创建一个 JSON 对象。requestBody
将此 JSON 对象作为 HTTP POST 请求的负载提交。在沙箱中测试您的应用程序以及您的应用程序正在审核中时,请使用测试环境 URL 。当您的应用在 App Store 上线时使用生产 URL 。有关这些端点的更多信息,请参阅verifyReceipt。https://sandbox.itunes.apple.com/verifyReceipt
https://buy.itunes.apple.com/verifyReceipt
Validating receipts with the App Store | Apple Developer Documentation
requestBody官方示例:
requestBody | Apple Developer Documentation
四、参考文档
1. 苹果内购买项目配置流程;
2. http://www.cnblogs.com/zhaoqingqing/p/4589200.html
3. https://www.cnblogs.com/zhaoqingqing/p/4597794.html
4. iOS应用内支付(IAP)详解