PHP实现苹果(IOS)内购(IAP)

本文介绍了如何使用PHP验证苹果内购(IAP)数据的正确性,包括沙箱环境和正式环境的区别,内购项目的定价,错误码说明,以及使用TP5.0框架的验证代码示例。
摘要由CSDN通过智能技术生成

反反复复经过多次重写(内部需要),发现苹果使用PHP来验证苹果内购数据是否正确并不是一件很难的事情。我把我的一些心得写出来,以供以后有这方面需求的小伙伴参考,以PHP语言为例,谁让PHP是最好的语言呢!

首先要知道苹果内购分沙箱环境和正式环境,两者区别就是名字不同,请求是需要携带的参数是相同的。最重要的就一个数据,叫receipt-data,这个一般是APP传递给你的,你拿来组装成苹果系统认识的数据就可以了,里面的数据不要改动,这个数据大概由4000-5000个字符(大写字母、小写字母、数字和"=")组成。其他,看你的业务需要,传递必要的参数,如:账户、详情等。

本例的内购项目类型是:消耗型。

一、由于苹果内的付款价格都是死的(苹果内定好的),我们不能随意修改只能选择(这也是分沙箱环境和正式环境的原因吧),不像微信支付在测试的时候可以填0.01元,苹果内想要在正式环境测试,最低价格:6元。下面是各个内购项目(消耗性和非消耗性项目都是这个价)的价格列表,以供参考:

等级1~等级87(RMB):6 - 12 - 18 - 25 - 30 - 40 - 45 - 50 - 60 - 68 - 73 - 78 - 88 - 93 - 98 - 108 - 113 - 118 - 123 - 128 - 138 - 148 - 153 - 158 - 163 - 168 - 178 - 188 - 193 - 198 - 208 - 218 - 223 - 228 - 233 - 238 - 243 - 248 - 253 - 258 - 263 - 268 - 273 - 278 - 283 - 288 - 298 - 308 - 318 - 328 - 348 - 388 - 418 - 448 - 488 - 518 - 548 - 588 - 618 - 648 - 698 - 798 - 818 - 848 - 898 - 998 - 1048 - 1098 - 1148 - 1198 - 1248 - 1298 - 1398 - 1448 - 1498 - 1598 - 1648 - 1998 - 2298 - 2598 - 2998 - 3298 - 3998 - 4498 - 4998 - 5898 - 6498

二、错误码的说明很简洁也很好找的,这里我再次贴出来,如下:

* 21000 App Store不能读取你提供的JSON对象  
* 21002 receipt-data域的数据有问题  
* 21003 receipt无法通过验证  
* 21004 提供的shared secret不匹配你账号中的shared secret  
* 21005 receipt服务器当前不可用  
* 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送  
* 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务  
* 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务 

三、沙箱环境数据请求正式环境url,返回的数据如下:

{"status":21007}

 没错,就一个错误码,其他什么都没有。

四、沙箱环境数据请求沙箱环境url,返回数据如下:

{
    "receipt": {
        "original_purchase_date_pst": "2019-07-07
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值