关于去苹果服务器验证充值的一些看法

前端时间看了下关于app充值验证发送游戏金币的好多帖子和文章,也总结了一下app校验的php代码:可以参考我的上一封博客:

http://blog.csdn.net/pbymw8iwm/article/details/42167125

其中这个帖子回复的大神比较多:点击打开链接 

有些人认为拿苹果的receptdata去验证,通过返回的status就可以判断是否合法,如果合法就给冲金币,如果不合法就失败不处理,但逻辑这个是有漏洞的,

因为假如又一个玩家一个月以前充值生成了一个receptdata,现在他把这个receptdata又发给你的服务器,你去苹果那边校验,我敢肯定你得到的返回staus肯定还是0,然后你把金币又冲给这个玩家,那这个玩家估计心里爽翻了。那么如何防止被刷单呢,我认为其中一个方法就是当处理一个苹果返回的订单的时候,我们就记录下苹果的transactionid对应的是我们游戏里的哪一个订单id,那么等这个玩家下一次刷单又发相同的receptdata,虽然他通过了app的验证,但是因为这条transactionid已经处理了,那么我们任然有理由就直接拒绝他。

只不过我最近看了一下又一个奇怪的问题困扰了我很久,问题是这样的:不同的receptdata,验证返回得到的transactionid竟然相同,只不过original_purchase_date_ms不相同,我写了一个简单的校验页面:


得到的返回结果是:


再看看另外一个receptdata:


得到的返回是;


我又开始怀疑如果仅仅依靠验证返回的status和transactionid够吗?

看了一下官方文档 https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

其中 latest_receipt and latest_receipt_info 貌似还有用,但是怎么用,有人知道吗?希望可以一起交流解决这个问题


发布了141 篇原创文章 · 获赞 118 · 访问量 163万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览