最近平台有出现被刷单(漏洞很大,个人感觉后端验证也很难避免)的情况,找之前认识的开发大佬问过,要做苹果内购的二次验证。。。。然后就开始了巨坑之旅

 
附上代码

关于$receipt-data这个参数,由IOS处理以后传给服务端,前端处理时一定要注意:

IOS对receipt-data使用base64加密,转为string类型后,要对字符串中的\n和\r做特殊字符处理,但是千万不要对 "+" 做处理

 

 

我之前百度查到的资料都是对+做了处理,都会报错{"status":21002, "exception":"com.apple.its.drm.InvalidDrmArgumentException"}

服务端拿到IOS给的receipt-data数据,不要用json_encode直接转,需要手动拼接,不然也会报错的

我有尝试让IOS拼好json发给我,很不幸,json格式数据里的引号  '' 全都不见了。。。

如果你上面的问题都解决掉,不再报错21002而开始报错{"status":21004, "environment":"Sandbox"}

那么就去苹果开发者平台去申请这个东西作为password拼接到json里面就好了