iOS内购三:Receipt

可参考:

  • Validating Receipts Locally

需验证receipt,可以在本地验证,也可以在服务端验证

  • 本地验证,涉及到security和加密,比较复杂

而服务端验证相对而言简单些

  • 收到transaction后,将receipt发送到自己的服务器
  • 自己的服务器连接apple的服务器,做解密和验证
  • apple将结果发送给服务器,服务器再发给你

参考:Choosing a Receipt Validation Technique

  • Local - 本地设备上的收据验证,推荐使用收据的签名
  • Server-side - 建议通过App Store进行服务器端收据验证,以持久保存应用内购买,以维护和管理购买记录。

Consumable in-app purchases remain in the receipt until you call finishTransaction(_:). Maintain and manage records of consumables on a server if needed. Non-consumables, auto-renewing subscription items, and non-renewing subscription items remain in the receipt indefinitely. For auto-renewable subscription management, server-side receipt validation gives key advantages over on-device receipt validation.
消耗性应用IAP将保留在收据中,直到您调用finishTransaction(_ :)。 如果需要,在服务器上上维护和管理消耗品的记录。 非消耗品,自动续订的订阅项目和非续订的订阅项目会无限期保留在收据中。 对于自动续订订阅管理,服务器端收据验证比设备上的收据验证具有关键优势。

自动续期订阅在On-device vs server-side验证的比较

Local验证

参考:

  • Validating Receipts Locally

When an application is installed from the App Store, it contains an application receipt that is cryptographically signed, ensuring that only Apple can create valid receipts. The receipt is stored inside the application bundle. Call the appStoreReceiptURL method of the NSBundle class to locate the receipt.
从App Store安装应用程序时,该应用程序包含经过加密签名的应用程序收据,以确保只有Apple可以创建有效的收据。 收据存储在应用程序包中。 调用NSBundle类的appStoreReceiptURL方法找到收据。

receipt是一个二进制文件,结构如下:

The outermost portion (labeled Receipt in the figure) is a PKCS #7 container, as defined by RFC 2315, with its payload encoded using ASN.1 (Abstract Syntax Notation One), as defined by ITU-T X.690. The payload is composed of a set of receipt attributes. Each receipt attribute contains a type, a version, and a value.
最外面的部分(在图中标记为Receipt)是RFC 2315定义的PKCS#7容器,其有效负载使用ITU-T X.690定义的ASN.1(抽象语法表示法1)编码。 有效负载由一组接收属性组成。 每个收据属性包含一个类型,一个版本和一个值。

App Store验证

参考:

  • Validating Receipts with the App Store
  • App Store Receipts
  • verifyReceipt

URL地址

POST https://buy.itunes.apple.com/verifyReceipt

沙盒测试地址

POST https://sandbox.itunes.apple.com/verifyReceipt

异常处理

可参考的处理:

  • 贝聊 IAP 实战之满地是坑
  • 贝聊 IAP 实战之见坑填坑
  • 贝聊 IAP 实战之订单绑定

iOS内购三:Receipt相关推荐

  1. 苹果 iOS 内购三步曲:App 内退款、历史订单查询、绑定用户防掉单

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 转自:掘金 37手游iOS技术运营团队 https://juejin.cn/post/697473339 ...

  2. 苹果iOS内购三步曲:App内退款、历史订单查询、绑定用户防掉单!--- WWDC21

    一.前言 如果大家的 App 有使用 IAP 功能,那么可能会遇到用户反馈苹果充值成功,但是服务没有到账的情况,用户一般会提供这样的苹果收据: 用户反馈时提供的苹果收据中,有一个字段中 ORDER I ...

  3. iOS内购-防越狱破解刷单

    ---------------------------2018.10.16更新--------------------------- 最近我们公司丢单率上涨,尤其是10月份比9月份来说丢单率翻了3倍, ...

  4. iOS 内购(In-App Purchase)详解

    iOS 内购(In-App Purchase)详解 概述 IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 App 内购买虚拟商品或服务提供的一套交易 ...

  5. IOS 内购IAP 自动订阅收据验证文档服务端翻译

    将收据数据发送到App Store: 提交此JSON对象作为HTTP POST请求的有效负载. 中文文档:https://help.apple.com/app-store-connect/#/dev7 ...

  6. iOS内购(IAP)自动续订订阅

    一.介绍 iOS 的 App 内购类型有四种: 消耗型商品:只可使用一次的产品,使用之后即失效,必须再次购买. 示例:钓鱼 App 中的鱼食. 非消耗型商品:只需购买一次,不会过期或随着使用而减少的产 ...

  7. iOS内购--java后台

    最近公司iOS发布了新版本,被拒,原因就是没有添加内购,并被严重警告,为此,不得已要加上iOS内购功能,以下就是我为了iOS内购所写的后台代码,首先看下支付的时序图吧: 简单说下,时序图的意思吧: 第 ...

  8. ios内购二次验证安全性问题_iOS 内购遇到的坑

    一.内购沙盒测试账号在支付成功后,再次购买相同 ID 的物品,会提示如下内容的弹窗.您以购买过此APP内购项目,此项目将免费恢复 您以购买过此APP内购项目,此项目将免费恢复.PNG 原因: 当使用内 ...

  9. IOS内购流程从0-1手把手教会

    苹果掌握着可能是全球最重要的APP分发渠道,然而30%的抽成近年来也被人批评,现在苹果似乎也看到反对意见了,从2021年1月1日开始,部分小型企业的分成费用降低到15%. 据报道,苹果将于2021年1 ...

最新文章

  1. Windows Server 2008 Server Core - 小脚印,大安全
  2. 机器学习与统计学的争论,有意义吗?
  3. 美国独步世界的八大领域
  4. ●洛谷P3168 [CQOI2015]任务查询系统
  5. 波形捕捉:(1)枚举捕捉设备
  6. tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope
  7. pip 更改源   pip加速
  8. (22)FPGA软核、固核、硬核介绍
  9. Django 07. django框架模型之增删改查基本操作
  10. c语言 最大子段和,最大子段和 C语言源码
  11. Adobe Photoshop Lightroom 5.7.1
  12. 用verilog实现检测1的个数_[转]常用数字处理算法的Verilog实现
  13. 从文艺到抠脚-我的程序7年之痒
  14. IOS 自定义软键盘功能,修改换行键为发送键
  15. 罗杨美慧 20190919-2 功能测试
  16. 教你怎样维持异地恋!
  17. 中高级前端面试知识点汇总
  18. 【CV】ViT:用于大规模图像识别的 Transformer
  19. EOJ 唐纳德与子串 (Easy)
  20. nslookup type值_nslookup命令详解

热门文章

  1. 办公区招租|低价,坐标上海徐汇
  2. Hexo主题Aurora的魔改(一)
  3. Channels中的Counsumer,消费者
  4. 保姆级别 附带源码 Django集成channels(一)实现简单聊天功能
  5. 2008春节晚会节目单
  6. 转:小儿咳嗽为何夜晚更厉害
  7. 文章付费阅读系统(含小程序)
  8. 武汉大学计算机学院副院长,武汉大学计算机学院来我院交流
  9. 劳务人员造成或遭受第三方损害,责任分析
  10. 详解Unity 5 全局光照系统Enlighten问题(下)