在前面的博客里面已经做了内购代码的说明,现在说说具体的内购流程
1,移动端将产品列表(可以存在本地,也可以从自己的服务器取)添加到appstore
2,appstore会返回一个产品信息列表 (这中间的时间可能比较长)
3,我们选中的产品和返回的列表数据比对,有相同的就添加到购买对列里面开始购买
4,购买成功后返回一个购买票据,拿着这个票据去请求appstore验证其正确性,同时也拿着这个票据请求自己的服务器检验
5,校验成功,处理自己成功后的事!
当然上面的流程是主要的流程,其实还有很多,网上一大堆,我现在要说的是网上没搜到的坑,也不知道是不是自己这边服务器的问题,还是自己的问题,不管了直接上代码
这段代码意思就是,获取购买的票据,有意思的是,ios7以后不再支持transaction.transactionReceipt的方法了,然而我利用了新的方法(从沙盒里面取)取出来的值base64后解码是错误的,自己的服务器也请求不了;但是利用之前的方法是好的!有大神可以知道的,万分感谢!
// ios7以后的新方法
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
// 从沙盒中获取到购买凭据
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
NSString *encodeStr = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
// ios7之前的方法
NSString *encodeStr = [transaction.transactionReceipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];