ap cracker :越狱软件 可以 截获付费请求,并直接返回 付费成功。
iap free : 截获付费请求的同时,还能截获客户端发起的 验证请求 ,返回验证成功的 数据 ,据说 返回的数据 和 官方的数据并不是完全一样,可以识别出来是否作弊,但是不保证永久有效。
针对 iap cracker,iap free , Apple 已经采取了措施,就是 添加了一个 验证接口
文档链接:xcdoc://?url=developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573
接口:
生产环境:
https://buy.itunes.apple.com/verifyReceipt
测试环境:
https://sandbox.itunes.apple.com/verifyReceipt
请求方式:post
HttpBody 为 json数据格式 : {"receipt-data":"订单数据经过Base64编码"}
返回数据
格式验证失败:
{"status":21002, "exception":"java.lang.NullPointerException"}
验证成功:
{"status":0, 其他一些关于订单的 数据信息}
方案有两种:
1、客户端发起网络请求去验证,通过其他手段来判断是否是作弊行为 比如 当前如果没有联网肯定是作弊,字段不完全一样也是作弊
2、把数据发给 自己的 server ,由 server 去验证,验证完后再返回给客户端
利弊都有
第一种延时会短一点但不够安全
第二种很显然 用户体验差一点但更安全一点
iap free : 截获付费请求的同时,还能截获客户端发起的 验证请求 ,返回验证成功的 数据 ,据说 返回的数据 和 官方的数据并不是完全一样,可以识别出来是否作弊,但是不保证永久有效。
针对 iap cracker,iap free , Apple 已经采取了措施,就是 添加了一个 验证接口
文档链接:xcdoc://?url=developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573
接口:
生产环境:
https://buy.itunes.apple.com/verifyReceipt
测试环境:
https://sandbox.itunes.apple.com/verifyReceipt
请求方式:post
HttpBody 为 json数据格式 : {"receipt-data":"订单数据经过Base64编码"}
返回数据
格式验证失败:
{"status":21002, "exception":"java.lang.NullPointerException"}
验证成功:
{"status":0, 其他一些关于订单的 数据信息}
方案有两种:
1、客户端发起网络请求去验证,通过其他手段来判断是否是作弊行为 比如 当前如果没有联网肯定是作弊,字段不完全一样也是作弊
2、把数据发给 自己的 server ,由 server 去验证,验证完后再返回给客户端
利弊都有
第一种延时会短一点但不够安全
第二种很显然 用户体验差一点但更安全一点
第二种方案的话 需要 自己的 server 不能被 伪造 才可做到 足够 安全,可以通过对称加密或签名认证的方案来解决。
其实 一般的游戏道具数据 都是 服务端维护的, 客户端 只需要 把 内购的 receiptData 发给服务器,服务器根据这个 receiptData 就可以完成所有的 数据业务更新 ,把处理过 业务 之后的最新用户状态数据 返回给 客户端就好了 。