我的应用中的收据验证最近开始破坏。显然,在过去的2-3周内,Apple已将应用内购买收据的版本号从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;
...其中signature_bytes
是来自transactionReceipt
(iOS 7已弃用)JSON blob的签名字符串的Base64解码值{/ 3}}。
...我对version == 2
的支票进行了硬编码。现在我看到3
的值。
在App Store中工作几年后,在过去的2-3周内,我们的应用程序开始收到新购买的用户报告,并且“恢复”购买未能激活我们应用的内容。所以我认为这是Apple最近的一个变化。
任何人都可以确认Apple做出了改变吗?提供更多细节?或许请指出有关此新购买收据的文档?
答案 0 :(得分:2)
是的,Apple在4月初推出了第3版签名。我还没有找到任何文档或更改日志,但这是可以理解的,因为transactionReceipt
已被弃用。
版本3的不同之处在于签名长度,它现在是256位而不是128位,并且使用最新的Apple Inc. Root Certificate签名。