1

我的应用程序中的收据验证最近开始中断。显然,在过去的 2-3 周内,Apple 已将 In-App Purchase 收据的版本号从2更改为3.

检查签名结构时:

struct signature_blob {
    uint8_t version;
    uint8_t signature[128];
    uint32_t cert_len;
    uint8_t certificate[];
} *signature_blob_ptr = (struct signature_blob *)signature_bytes;

…哪里是来自(从 iOS 7 开始弃用)对象signature_bytes的 JSON blob 中签名字符串的 Base64 解码值。transactionReceiptSKPaymentTransaction

…我硬编码了一张支票version == 2。现在我看到3.

在 App Store 上架了几年后,在过去的 2-3 周里,我们的应用开始收到用户报告新购买和“恢复”购买未能激活我们应用内容的报告。所以我认为这是苹果公司最近的一个变化。

谁能确认苹果做出了改变?提供更多细节?也许指向我关于这个新版本的购买收据的文档?

4

1 回答 1

3

是的,Apple 在 4 月初的某个时候推出了版本 3 签名。我没有找到任何文档或更改日志,但这是可以理解的,因为transactionReceipt已弃用。

版本 3 的不同之处在于签名长度,现在是 256 位而不是 128 位,并且使用最新的Apple Inc. Root Certificate进行签名。

于 2016-06-14T12:21:05.470 回答