IOS IAP支付 后端验证票据应该验证那些字段?

目前项目使用IOS IAP类型支付
流程是:

前端请求产品列表(应用服务器)-> 前端提交订单->后端生成订单->前端调用苹果SDK进行支付->支付完成后调用后端接口->后端根据前端传的receipt_data 进行票据验证

目前不清楚的是苹果服务器返回的字段那些需要验证?
仅验证status = 0就行了吗?第一次接触IOS支付,求大佬们指教下流程是否正确以及后端验证的逻辑
IOS IAP支付 后端验证票据因该验证那些字段?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
8个月前 评论
Pon (楼主) 8个月前
讨论数量: 7
8个月前 评论
Pon (楼主) 8个月前

一般是通过 verifyReceipt API 直接校验票据,只是该接口已经被宣布弃用了,但是还是能用。官方是建议通过 App Store Server API Get Transaction History 校验内购。

8个月前 评论

第一个回答已经挺好了,我只是感觉流程可以简化,可以讨论一下:

根据个人工作经验,感觉 -> 前端提交订单 -> 后端生成订单 这个两步没有啥意义。

我现在的处理逻辑是:

  1. 前端请求产品列表
  2. 用户点击所需商品,以消耗性产品为例,点击哪个product_id,前端就直接调用苹果 SDK
  3. 支付完成后,拿着票据,调用后端接口
  4. 后端验证,根据票据中的product_id进行业务操作,transaction_id当成唯一流水号即可

这个的好处是:

  1. 减少了2步,方便了一点点吧。客户端不用去记录服务端生成的订单信息
  2. 如果3~4步骤断掉了,比如用户杀掉了app等,再次启动app还是可以恢复的。
  3. 这个也能适配连续订阅模型,从第二个月起的苹果推送数据
8个月前 评论
Pon (楼主) 7个月前
aab

刚好我们也在做这一块的业务,就这这个帖子咨询一个问题,针对连续订阅 如果采用 server to server 的推送模式,那么在审核模式下应该怎么处理。审核模式支付走的沙盒(配置的地址是测试环境的地址)但是对用户数据来说确实线上的数据,大家有处理这种情况的方案吗

7个月前 评论
lmdfx 7个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!