[IPA]IOS In App Purchase(内购)验证

参考我之前的笔记 苹果内购笔记,在客户端向苹果购买成功之后,我们需要进行二次验证。

二次验证

IOS在沙箱环境下购买成功之后,向苹果进行二次验证,确认用户是否购买成功。

当应用向Apple服务器请求购买,成功之后,Apple会返回以下四个数据给应用

四个验证数据

productIdentifier:cosmosbox.strikehero.gems60
state: Purchased
receipt: 
ewoJInNpZ25hdHVyZSIgPSAiQXF1M3JiR1grbmJMeGVvZS9VZGlMa3dQWVlBdkQr
VTE1L1NRL2Y0cGZlaFlBOWFaVGhSbTNMVXpHc25TUGd3aVBoMmsxSTVFaVpweGp6
aEZsS0JDVXBPeHEyWFk5N1lHUGUzMFo0cThMRllDZWJPeHFzWlJaUU01N2xtZFo0
bDN6eHNnaWpGemFiYkRXLzM4cm1EeXFTT0FSYzRES3dXTGFpc2EzYUY5d2JwbUFB
QURWekNDQTFNd2dnSTdvQU1DQVFJQ0NCdXA0K1BBaG0vTE1BMEdDU3FHU0liM0RR
RUJCUVVBTUg4eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUtEQXBCY0hCc1pT
//receipt省略几十行
transactionIdentifier: 1000000160385706

1. 产品标识符: product Identifier

在itunes store应用内定义的产品ID,例如com.公司名.产品名.道具名(com.xxxx.video.vip)

2. 交易状态: state

 

Purchased购买成功
Restored恢复购买
Failed失败
Deferred等待确认,儿童模式需要询问家长同意

3. Receipt

很长的一段字符串,大概49行,作为二次验证的重要依据

4. 交易标识符: transaction Identifier

我们需要把Receipt发送給苹果的苹果的服务器验证,用户的购买信息是否真实

 

 验证服务器地址

在测试服务器中,发送receipt苹果的测试服务器( https://sandbox.itunes.apple.com/verifyReceipt )验证

在正式服务器中(已上线Appstore),发送receipt到苹果的正式服务器( https://buy.itunes.apple.com/verifyReceipt )验证

当我们把应用提交给苹果审核时,苹果也是在sandbox环境购买,其产生的购买凭证,也只能连接苹果的测试验证服务器,所以我们可以先发到苹果的正式服务器验证,如果苹果返回21007,则再一次连接测试服务器进行验证。

验证购买信息

以下是把客户端的购买信息发送到苹果测试服务器进行确认,苹果返回的数据:

ISN: url: https://sandbox.itunes.apple.com/verifyReceipt
ORIGINAL JSON: 
{
    "receipt":
    {
        "original_purchase_date_pst":"2015-06-22 20:56:34 America/Los_Angeles", //购买时间,太平洋标准时间
        "purchase_date_ms":"1435031794826", //购买时间毫秒
        "unique_identifier":"5bcc5503dbcc886d10d09bef079dc9ab08ac11bb",//唯一标识符
        "original_transaction_id":"1000000160390314", //原始交易ID
        "bvrs":"1.0",//iPhone程序的版本号
        "transaction_id":"1000000160390314", //交易的标识
        "quantity":"1", //购买商品的数量
        "unique_vendor_identifier":"AEEC55C0-FA41-426A-B9FC-324128342652", //开发商交易ID
        "item_id":"1008526677",//App Store用来标识程序的字符串
        "product_id":"cosmosbox.strikehero.gems60",//商品的标识 
        "purchase_date":"2015-06-23 03:56:34 Etc/GMT",//购买时间
        "original_purchase_date":"2015-06-23 03:56:34 Etc/GMT", //原始购买时间
        "purchase_date_pst":"2015-06-22 20:56:34 America/Los_Angeles",//太平洋标准时间
        "bid":"com.cosmosbox.StrikeHero",//iPhone程序的bundle标识
        "original_purchase_date_ms":"1435031794826"//毫秒
    },
    "status":0 //状态码,0为成功
}

 

苹果返回状态码

苹果返回状态码的解释:https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

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

 

更详细的请参考:http://www.2cto.com/kf/201504/389224.html

最好在客户端存一个数据库,跟踪订单的状态,防止用户订单在某个环节出现问题时无法寻找到订单进行二次处理。

去AppStore请求数据时有时候会出现错误,你可以iTunes connect里的connect us去给他们写邮件反馈问题。但是大部分时间你等等就能解决了,对就是什么也不做等着。也许那一天他就好了。

单机/服务器模式

IOS 应用内支付(内购 /In App Purchase)有两种模式:

1) 单机模式

2) 服务器模式

单机模式

单机模式的流程可以简单的总结为以下几步:

1) app从app store 获取产品信息

2) 用户选择需要购买的产品

3) app发送支付请求到app store

4) app store 处理支付请求,并返回transaction信息

5) app将购买的内容展示给用户

服务器模式

服务器模式的主要流程如下所示:

1) app从服务器获取产品标识列表

2) app从app store 获取产品信息

3) 用户选择需要购买的产品

4) app 发送 支付请求到app store

5) app store 处理支付请求,返回transaction信息

6) app 将transaction receipt 发送到服务器

7) 服务器收到收据后发送到app stroe验证收据的有效性

8) app store 返回收据的验证结果

9) 根据app store 返回的结果决定用户是否购买成功

两种模式比较

上述两种模式的不同之处主要在于:交易的收据验证,内建模式没有专门去验证交易收据,而服务器模式会使用独立的服务器去验证交易收据。内建模式简单快捷,但容易被破解。服务器模式流程相对复杂,但相对安全。

国内连接苹果服务器的稳定性

开发之初,苹果方就很负责的告知:我们的服务器不稳定。真正开发之后,发现苹果方果然是很负责的,不仅是不稳定,而且足够慢。app store server验证一个收据需要3-6s时间。

1.用户能否忍受3-6s的等待时间

2.如果app store server 宕机,如何确保成功付费的用户能够得到正常服务。

对于第一个问题,我们有理由相信用户完全无法忍受,所以采用异步验证的方式,服务器收到客户端的请求后,就将请求放到MCQ中去处理。

对于第二个问题,由于苹果人员很负责人的告知:我们的服务器不稳定,所以不排除收据验证超时的情况。对于验证超时的收据,保存到数据库中并标记为验证超时,定时任务每隔一定的时间去app store验证,确保能够获取收据的验证结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在iOS设备上安装1024app_ios_2.3.3.ipa,首先需要确保您的设备已越狱。如果您的设备已越狱,您可以通过以下步骤来安装: 1. 下载并安装iTools或Cydia Impactor等iOS应用程序安装器,您可以在互联网上轻松找到这些程序。 2. 下载1024app_ios_2.3.3.ipa文件,并将其拖放到iTools或Cydia Impactor中。 3. 连接您的iOS设备到电脑上,并启动iTools或Cydia Impactor。 4. 在iTools或Cydia Impactor中,找到您下载的1024app_ios_2.3.3.ipa文件,并将其安装到设备上。 5. 安装完成后,您可以在设备的主屏幕上找到该应用程序,并使用它。 需要注意的是,安装第三方应用程序可能会影响您的设备的稳定性和安全性。因此,请确保您下载的文件源可信,并注意您的设备被恶意软件攻击的风险。除此之外,还需要注意,随着iOS版本的更新,某些应用程序可能不再兼容,因此请确保您的iOS系统版本与该应用程序兼容。 ### 回答2: 1024app_ios_2.3.3.ipa是一个iOS应用程序的安装包。通常情况下,在iOS设备上安装应用程序,我们可以通过App Store来下载和安装。但是有时候,我们可能需要通过其他的方式来安装应用程序。 对于1024app_ios_2.3.3.ipa,我们可以通过以下的步骤进行安装: 1. 首先,我们需要将1024app_ios_2.3.3.ipa文件下载到我们的电脑或者Mac上。 2. 然后,我们需要将我们的iOS设备与电脑或Mac连接,打开iTunes软件。 3. 在iTunes软件中,点击“文件”选项,并选择“添加文件到库”或者“添加文件夹到库”,选择我们下载好的1024app_ios_2.3.3.ipa文件。 4. 然后我们需要将我们的iOS设备连接到电脑或Mac上,然后在iTunes软件中选择我们的设备,点击“应用”选项卡。 5. 在“应用”选项卡中,我们可以看到“文件共享”部分,选择我们需要安装的应用程序,然后点击“添加”按钮。 6. 直到该应用程序出现在我们的设备上,就表示该应用已经被成功安装。 需要注意的是,如果我们使用以上的方法安装应用程序,需要保证我们的iOS设备已经越狱。越狱后安装应用程序时,请务必注意是否为可靠的来源,避免因为应用程序源不可靠而遭受损失。 总的来说,1024app_ios_2.3.3.ipa的安装需要通过iTunes软件来完成,需要注意数据和设备的安全问题。同时,我们也可以使用其他的安装工具来完成安装,但是需要保证安装的可靠性和安全性。 ### 回答3: 1024app_ios_2.3.3.ipa是一款IOS系统的手机应用程序,如果你拥有这个文件,想要在自己的IOS设备上安装这个程序,那么可以按照以下步骤进行操作: 第一步:下载和安装iTunes软件 首先需要下载和安装iTunes软件,这个软件是苹果官方提供的一个多功能管理工具,可以用来管理你的IOS设备、备份和恢复数据、下载和更新应用等。下载iTunes的方法可以在苹果官网上找到,也可以通过第三方软件下载网站进行下载,安装完毕后,将iPhone连接到电脑上。 第二步:安装iTools软件 iTools可以理解为第三方的iTunes软件,也可以管理数据和软件,因为它界面简单易用所以被广泛地使用。下载iTools的方法可以在网站上找到,安装完毕后,将手机连接到电脑上。 第三步:将IPA文件拖入iTools软件中 把下载好的1024app_ios_2.3.3.ipa拖入iTools的应用程序的区域即可。iTools会自动执行安装过程,如果安装时间较长,请耐心等待,不要中途中断。 第四步:安装完成后打开应用 当安装完成后,在你的IOS设备上就会出现1024app的图标了,点击即可打开应用。如果弹出无法打开的提示,请检查设备是否已经越狱和IPA文件是否正确。 最后要提醒的是,在进行这个操作前需要确保IPA文件的来源是可信的,以免安装过程中的风险。 总之,通过这个方法,你就能够用1024app_ios_2.3.3.ipa安装你需要的IOS应用程序,让你的设备功能更加的强大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值