// 验证凭据,获取到苹果返回的交易凭据
来源:互联网 发布:阿里巴巴软件开发人员 编辑:程序博客网 时间:2024/05/22 11:41
- (void)completeTransaction:(SKPaymentTransaction *)transaction {
// 验证凭据,获取到苹果返回的交易凭据
// appStoreReceiptURL iOS7.0增加的,购买交易完成后,会将凭据存放在该地址
NSURL *receiptURL = [[NSBundlemainBundle] appStoreReceiptURL];
// 从沙盒中获取到购买凭据
NSData *receipt = [NSDatadataWithContentsOfURL:receiptURL];
if(!receipt) {
/* No local receipt -- handle the error. */
}
// 发送网络POST请求,对购买凭据进行验证
NSURL *url = [NSURL URLWithString:ITMS_SANDBOX_VERIFY_RECEIPT_URL];
// 国内访问苹果服务器比较慢,timeoutInterval需要长一点
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0f];
request.HTTPMethod = @"POST";
// 在网络中传输数据,大多情况下是传输的字符串而不是二进制数据
// 传输的是BASE64编码的字符串
/**
BASE64 常用的编码方案,通常用于数据传输,以及加密算法的基础算法,传输过程中能够保证数据传输的稳定性
BASE64是可以编码和解码的
*/
NSString *encodeStr = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\"}", encodeStr];
NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = payloadData;
// 提交验证请求,并获得官方的验证JSON结果
NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// 官方验证结果为空
if (result == nil) {
NSLog(@"验证失败");
}
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dict);
if (dict != nil) {
// 比对字典中以下信息基本上可以保证数据安全
// bundle_id&application_version&product_id&transaction_id
NSLog(@"验证成功");
}
}
0 0
- // 验证凭据,获取到苹果返回的交易凭据
- nodeJs mongodb凭据验证
- 您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据。
- 您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据。
- 远程问题解决方案(连接到** 的凭据无法工作,请输入新凭据)
- 远程问题解决方案(连接到** 的凭据无法工作,请输入新凭据)
- iOS 获取内购凭据
- 远程控制问题集锦(你的凭据不工作,之前用于连接到(服务器IP)的凭据无法工作,请输入新的凭据)
- 你的凭据不工作,之前用于连接到(服务器IP)的凭据无法工作,请输入新的凭据
- 共享设置的凭据问题
- 获取微信接口调用凭据AccessToken
- SqlServer 凭据
- Secure Store Service无法检索凭据,返回的错误为"拒绝访问"
- 凭据集冲突的处理方式
- 做过的工作要有凭据
- win7远程桌面,您的凭据不工作
- 【Windows】win7 凭据的永久性问题
- 在 Windows 身份验证的凭据进程
- oracle学习笔记
- 以色列发现阿里巴巴漏洞:1美元当600美元用
- PopMetal基于RK3288最强开源开发板
- C/C++时间处理函数
- 用Anchor和Dock属性管理WinForm控件
- // 验证凭据,获取到苹果返回的交易凭据
- mysql学习与使用
- 动态规划--矩阵链乘法问题
- for循环 forEach 新循环 用法及性能测试
- 计算机进制转换
- Android Studio 1.0安装碰到的问题
- 西安治疗包皮过长的价钱是多少?
- Google protocol buffers 小结
- Android 本地图片 设置成宽高固定的背景