应用内购买沙盒环境循环

18

我在我的生产应用中启用了应用内购买,并正在添加一个新的销售项目。

然而,在沙盒环境中我无法测试新的应用内购买。我的购买记录显示正确。还原也可以正常运作。但是,如果我购买了这个应用内购买,那么我会被提示登录。我使用一个测试用户帐户登录(我有4个测试用户帐户大约一个月前可以工作并且仍处于激活状态)。然后我被引导到AppStore,弹出一个对话框说:[Environment: Sandbox],有取消或继续选项。当我选择继续时,会提示我输入Apple ID密码,我输入后按下OK。几秒钟后它会显示"加载中...",然后再次弹出[Environment Sandbox]取消/继续选项窗口。

我已经尝试了5次。
我尝试使用以前测试过的帐户
我创建了一个新的用户
我尝试在多个设备上测试,这些设备都在一个月前工作正常。
我已经重置了我的设备。

同时,我已经能够测试我的功能,它运行良好 - 但在发布更新之前,我无法进行完整的购买/测试过程。

有人看到类似的情况吗?我正在寻找任何建议。谢谢。


这周我尝试了几件事情,但仍然没有解决问题。首先,我的版本和构建与目标构建摘要不一致。其次,我为应用程序创建了一个新的预配配置文件,并安装了它。我还使用了一个新的测试用户。然而,我收到了交易失败的消息,错误代码为0,提示信息为“无法连接到iTunes Store”。 - jpporterVA
另外,我一直在使用我的测试用户登录到“设置”->“商店”。苹果文档上说只需注销而不是登录。但当我这样做时,应用内购买提示我验证开发者ID的登录,而且无法让我输入测试用户来执行购买。 - jpporterVA
2个回答

11

好的,我已经弄清楚了。原来是我的测试账户有问题。因为我是通过“设置”->“App Store”登录账户,并且每次都用信用卡和电子邮件通知进行注册。我使用了一个早先创建但从未“激活”的旧账户,这样就可以了。所以,关键是不要通过“设置”->“商店”登录账户,保持注销状态。然后再使用仅在iTunes Connect上创建但从未激活的测试账户进行登录。


2
+1 很好。登录账户似乎会永久损坏账户。我重新创建了失败的账户,它立即起作用了。 - Kalle
1
确实如此。我在iPhone上启动了激活测试帐户,但在要求提供信用卡号码时删除了该过程。然后我打开了我的应用程序并尝试了IAP。当要求提供我的ID时,我选择了一个现有的ID,输入了测试帐户的登录/密码信息,一切都正常工作。 - Zappescu
@jpporterVA 你会认为他们会在某个地方注明这一点。无论如何,对我来说似乎也起作用了,但是你是否收到任何电子邮件或其他通知以表明已完成? - Recycled Steel
他们在这个页面的底部提到不要在生产环境中使用测试账户(https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW13)。此外,请确保您正在使用开发代码签名运行应用程序。 - user1021430

7
我也遇到了这个问题一段时间,但对我来说解决方案是另外一件事:我一直得到提示,但也所有之前测试会话中的 SKPaymentTransactions 再次出现在此方法中: paymentQueue:updatedTransactions。
有些是完成的(并且破坏了我的本地购买记录),有些则一遍又一遍地失败。这是因为在我接收上述方法中的转换代码时,一旦处理了已完成或失败的事务,我没有调用:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction]。
它将其从支付队列中删除。交易仅尝试完成,因此出现提示和混乱的本地购买记录。
希望这能帮到你! :)

我可以确认这在过去对我有效。这些弹窗甚至出现在我的个人iPhone设备上(我认为随着我得到新设备,它们也一直存在)。我从未让苹果的任何人为我修复它,尽管我尝试了所有可能的支持解决方案。最终我做的是完全按照这个答案,解决了问题。那些老旧、悬而未决的交易在当时已经有好几年了,但仍然以某种方式困扰着我的私人账户。当查看该设备的日志(Xcode>设备)时,我发现与旧IAP测试应用程序相关的IAP产品ID。 - Jonny
为了解决这个问题,我不得不创建一个与之前相同的bundle ID的新测试应用程序,并实现一个交易观察器来完成这些交易。这似乎真的为我解决了问题。 - Jonny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接