为什么应用内购买沙箱总是询问“需要验证”?

时间:2011-11-07 23:37:45

标签: iphone app-store in-app-purchase sandbox

我已在设备设置中退出商店。 我只在我的应用程序中输入了用户凭据。 我已经建立了一个全新的(实际上是4倍左右)测试用户。

为什么这条消息会继续弹出?

是否与iOS 5,自动应用同步或iCloud相关联?

11 个答案:

答案 0 :(得分:16)

我在沙盒应用内购买方面存在完全相同的问题,在内置模式(没有收据验证),应用程序收到有效产品,现在我称为addPayment,一切都好。但现在出现了“需要验证”,付款被取消了。

经过几个小时的痛苦,我发现,我的问题出现在测试帐户中..我为捷克共和国iTunes商店创建了测试帐户......这就是失败的原因。哑。 我试图创建加拿大测试用户,它突然工作了! “将需要验证”将不再出现。

答案 1 :(得分:11)

我已经处理了这个问题大约一个星期,试图在美国/加拿大使用帐户但没有任何成功。最后我找到了这篇文章并且它有效: http://iphonedevsdk.com/forum/iphone-sdk-development/63008-in-app-purchase-test-account-verification-required-cant-get-passed.html 您需要一个永远不会附加信用卡的测试帐户,永远不会通过设备登录itunes商店或应用程序商店,如果您登录itunes或同意任何应用程序商店的东西它会使测试帐户无效并且永远不会工作试。

因此,要测试您的In App Purchase应用程序,您需要使用没有信用卡的新帐户。注销商店,只在您正在测试的应用中使用您的新帐户。

更新:经过2013年9月iTunes的长时间系统维护后,只有美国的测试帐户可以进行测试购买。

答案 2 :(得分:3)

我自己一直在努力,我终于找到了一个对我有用的解决方法......

  1. 在设备上退出设置中的iTunes帐户(如果您打开它们,也需要硬关闭设置和iTunes)
  2. 删除应用
  3. 在“itunesconnect.apple.com”创建新的测试用户 - 选择美国作为您的商店
  4. 重新安装应用
  5. 尝试在应用中进行购买
  6. 输入新的测试用户帐户详细信息
  7. 如果弹出窗口表明需要更换商店,请立即按回家。请勿按OK。
  8. 重新启动应用,然后重试。它应该按预期工作。
  9. 希望这有效......

答案 3 :(得分:2)

除上述答案外,请注意以下几点: -

1)从设备上卸载您的应用。

2)在iTunes Connect上创建一个新的测试帐户并验证其电子邮件地址。切勿为此测试帐户添加任何付款信息,不在线,不在iTunes上,不在设备上。这样做可能会使您的测试帐户无效(并触发“验证付款信息”恶性循环。)也不要在沙盒中使用此测试帐户。

3)从您设备上的App Store注销。请勿通过设置>重新登录App Store iTunes&应用商店在您的设备上。稍后系统会向您询问您的登录凭据(参见第5-6点)

4)重新安装您的应用。

5)尝试进行应用内购买。现在应该提示您输入用户名和密码(当您从App Store注销时)

6)输入您的用户名和密码:您不应该看到可怕的“需要验证:在您购买之前,您必须验证您的付款信息”消息并且购买应该成功。

答案 4 :(得分:1)

即使在沙盒中,您也需要完成购买验证收据到服务器。 它对应于内置模型的步骤6-7-8和服务器模型的11-12-13。

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/APIOverview/OverviewoftheStoreKitAPI.html

您需要做的就是:

从事务的transactionReceipt属性中检索收据数据,并使用base64 encoding.create json对其进行编码,如下所示:

{
    "receipt-data" : "(receipt in base 64 encoding)"
}

为生产发布验证网址:

https://buy.itunes.apple.com/verifyReceipt

对于沙盒:

https://sandbox.itunes.apple.com/verifyReceipt

响应是这样的:

{
    "status" : 0,
    "receipt" : { ... }
}

如果状态键的值为0,则这是有效收据。 如果该值不是0,则此收据无效。

有关详细信息,请参阅指南: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html

答案 5 :(得分:1)

Swift 3

在项目的某处插入此临时代码:

for transaction: AnyObject in SKPaymentQueue.default().transactions {
    guard let currentTransaction: SKPaymentTransaction = transaction as? SKPaymentTransaction else {return}
    SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
}

这会清除付款队列。如果可以,请确保比viewDidLoad晚得多。我用按钮触发了我的。跑几次,然后删除代码。没有更烦人的验证弹出窗口。

答案 6 :(得分:0)

在iOS5发布后我看到了这个问题。

早些时候,我曾经使用虚拟电子邮件地址创建测试帐户并且它曾经很适合我,但是在iOS5之后,它开始显示测试帐户所需的验证。

因此,我最终使用了测试帐户的实际电子邮件地址,并在被要求时进行了验证,这似乎对我有用。

答案 7 :(得分:0)

我花了几个小时后遇到同样的问题我发现你的iTunes的县/地区连接测试帐户而你的设备/模拟器必须相同

请确认它解决了我的问题

答案 8 :(得分:0)

为美国注册新的测试用户。您可以输入任何电子邮件地址。

在设置下注销。 删除应用。 通过xCode再次启动它 在应用程序中使用新用户登录。

可能会说您不在美国,它会打开浏览器,关闭浏览器并重新启动它。

现在应该可以了。

答案 9 :(得分:0)

如果您要购买第4个IAP项目有这样的问题。

看起来,每个测试帐户不适用于购买超过3个项目的应用程序。您可以从 itunesconnect.apple.com->管理用户 - >测试用户创建新的测试帐户,以测试您的第4个IAP项目。

答案 10 :(得分:0)

创建加拿大测试用户解决此问题。