获取"购买停止"以进行应用购买

sho*_*_sm 6 testing sandbox storekit in-app-purchase ios

我创建了一个测试用户,并在"设置"中从手机中退出.当我尝试使用我的测试帐户在我的应用程序中尝试应用程序内购买时,我会收到"确认您的订阅",这很好,但后来我收到了"停止购买".

我不知道我错过了哪一步.感谢任何能给我任何线索的人.

小智 0

使用测试帐户调试应用程序。App Store是一个交易环境,任何用户都可以在这个环境中购买应用程序,但是如果要在正在开发的过程中测试应用程序时要付费,我们不能在真正的苹果商店中。苹果为开发者提供了一个测试沙箱用于调试购买行为,它完全复制了应用商店的交易环境,但是在沙箱环境中,我们不能使用通常的苹果账户,而是需要使用测试账户。(只要有app id,就可以添加其商品并进行测试。) 在iTunesConnect主页中可以点击Manage Users进入用户管理页面,然后选择Test User来创建测试帐户。根据最新的苹果开发者感谢信,创建测试帐户必须使用真实的Email地址,并且密码必须符合要求,测试帐户需要在激活后使用邮件中。这里创建的可用于购买应用程序开发过程中的高级帐户,但必须记住,该帐户不能用于在生产环境中测试登陆真实应用程序商店和购买行为,否则你的 iTunes 帐户将有可能被停止使用。(测试账户可以通过itnunes connect添加,只需添加账户信息就行了,这里要注意的是,这个账户只能用于我们的应用沙箱测试,不能用于正常购买商品(比如购买已经在里面应用过的商品)下架商品),否则苹果会禁用该账户。)当我们确认购买商品时,我们会在transactionReceipt里面得到一个SKPaymentTransaction对象,就是验证信息(就是一组json字符串),我们进行了base64加密,然后按照苹果要求的格式(具体参考文档)发送到验证地址就可以了。认证成功后,应用商店内返回的购买商品的信息包含可以核对的特定信息。

购买商品后,我们的本地交易队列中,就会出现一个新的对象,该交易队列存储在本地硬盘上,除非我们调用finishTransaction,否则该交易对象不会被删除。而当程序打开时(这里一定要注意,下面会详细讲到)如果事务队列不为空,那么我们会通知ios事务队列状态更新,我们会根据事务的状态进行处理目的。SKPaymentTransactionStatePurchased 交易成功,那么钱已经扣完了,我们要保证产品会发送给用户 SKPaymentTransactionStateFailed 交易失败的原因有很多(可以通过 SKPaymentTransaction.error.code 查看失败的具体原因),最常见的是SKErrorPaymentCancelled(用户取消交易),或者没有输入有效的itunes id SKPaymentTransactionStateRestored已经购买的非消耗品,那么我们就要根据交易成功来处理。

如果交易失败,我们可以从交易队列中删除该交易。如果成功,则要发起验证,验证结果等待处理。结果不超过三种,验证成功、验证非法、验证错误。我们要讲成功和非法交易的交易对象从队列中删除,验证错误可能是验证服务器失败,我们不应该删除交易对象,要回到程序上再次验证,直到成功或失败