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

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

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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
1个月前 评论
Pon (楼主) 1个月前
讨论数量: 7
1个月前 评论
Pon (楼主) 1个月前

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

1个月前 评论

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

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

我现在的处理逻辑是:

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

这个的好处是:

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

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

1个月前 评论
lmdfx 4周前

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