一. 验证
1.完成购买后读取本地的 receiptData 进行 base64 编码,转换成字符串
//读取
NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptUrl];
NSString *receiptString = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
复制代码
2.发送接口到苹果服务器进行验证
- 沙盒验证
https://sandbox.itunes.apple.com/verifyReceipt - 正式环境
https://buy.itunes.apple.com/verifyReceipt
请求体为 JSON字符串 {"receipt-data":receiptString} (receiptString 就是第一步拿到的字符串)
此处建议优先验证线上服务器,如果出现 21007 错误码时,表明这是个沙盒环境的数据,然后进行沙盒环境的验证即可。下面是可能出现的错误码
错误码
- 21000 App Store无法读取你提供的JSON数据
- 21002 收据数据不符合格式
- 21003 收据无法被验证
- 21004
本文介绍了iOS内购过程中遇到的21002错误码,该错误涉及收据数据的JSON格式问题。在验证过程中,首先对本地receiptData进行base64编码并转换为字符串,然后通过PHP服务器向苹果服务器发送JSON请求。当收到21002错误时,表明JSON数据格式不正确。问题源于PHP在构造JSON字符串时错误处理了 receiptData 中的特殊字符。解决方案是避免PHP自动解析,直接使用字符串拼接生成JSON,从而成功验证内购收据。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=88017458&d=1&t=3&u=bd9bf208d3f1498d9ee0cc5b2dccab2d)
809

被折叠的 条评论
为什么被折叠?



