iPhone应用内购买商店套件错误-1003“无法连接到iTunes Store”

我一直在努力添加应用程序内购买,并能够使用Store Kit(yay!)创build和testing应用内购买。 在testing期间,我以某种方式行使了我的应用程序,导致应用程序崩溃中期购买(所以我想接收paymentQueue:updatedTransactions和调用finishTransaction中断正常周期)。

现在我无法成功完成任何事务,而是在paymentQueue:updatedTransactions被调用时,只获取transactionState SKPaymentTransactionStateFailed事务。

transaction.error.code是-1003,而transaction.error.localizedDescription是“无法连接到iTunes Store”!

我尝试从iTunesConnect中删除所有产品,并使用不同的标识符重build它们,但这并没有帮助。 我也尝试使用App Store应用程序真正连接到真正的App Store,并下载一些应用程序,所以我确实有连接。 最后,我访问了“设置:商店”应用,以确保我已退出正常的app store帐户。

我有类似的情况,并倾倒iPhone的networkingstream量,看看发生了什么事情。 我发现,正常的商店被联系,而不是沙箱。 它有助于从设备上删除应用程序,进行清理并重新构build/安装。 很明显,开发简介出了什么问题。

更新:要转储非越狱iPhone的networkingstream量,只需使用Mac上的“Internet共享”,然后将iPhoneconfiguration为使用Mac的WiFi。 然后在你的Mac上的tcpdump -n -i en1将会执行这个技巧。

如果您得到错误0“无法连接到iTunes Store”(我知道不是OP询问的错误-1003,但在networkingsearch错误0也导致这里),这可能是由两个可能的问题引起的:

  1. 您传递错误的产品标识符。 如果是这种情况,那么在调用-[SKPaymentQueue addPayment:]之后不久,你会得到错误0,在你popup确认付款之前。
  2. 您的testing用户已经失效。 如果您不小心通过testing用户login到App Store,就会发生这种情况。 发生这种情况时,input密码确认付款后,您将收到错误0。

要解决问题#1,请传入正确的产品ID。 要解决问题2,请在iTunes Connect上创build一个新的testing用户,并可以select删除旧的testing用户。

我有一个类似的问题,得到“无法连接到iTunes Store”Code = 0。 这是我解决这个问题的方法,在互联网上find所有其他的仪式build议后,重新下载我的证书,重置我所有的设备设置,以牺牲处女黑山羊:

在应用程序的目标摘要中,我曾经在“构build”字段中使用了我的版本号,但“版本”字段中没有任何版本号。 这对我来说似乎很奇怪,所以我将版本号从“build”移到“version”。 这导致了上述错误。 将版本号移回“build”解决了错误。

为您的应用添加新的testing用户。

确保您在“设置”中设置了正确的date和时间。 否则它将无法使商店的SSL连接!

我有同样的错误,并通过开发人员论坛上的一些线程阅读后,我重置设备上的设置(设置 – >常规 – >重置 – >重置所有设置),清除它。 这似乎很激烈,但它的工作。

我有同样的错误,似乎从哪里冒出来(有一天工作正常,但第二天它给了我这些错误每3次我尝试testing我的应用程序内购买2)。

然后,我访问了App Store(当试图再次真正购买),并意识到他们有一个新的用户协议,他们希望我来validation。 之后,当我回到我自己的应用程序,并再次尝试购买testing,它工作正常,从那以后没有任何错误。 所以我怀疑我得到了错误,因为他们想要我validation新的用户协议。

现在我唯一想知道的是,如果有一种方法可以让我的应用内购买将提示转发给我的用户,而不是给他们一个神秘的错误?

我的工作是从testing设备卸载我的应用程序,然后从Xcode安装一个新的副本。

SKPaymentTransactionState告诉你SKPaymentTransactionStateFailed之前,你的请求被添加到服务器队列中。

 @class SKPayment; enum { SKPaymentTransactionStatePurchasing, // Transaction is being added to the server queue. SKPaymentTransactionStatePurchased, // Transaction is in queue, user has been charged. Client should complete the transaction. SKPaymentTransactionStateFailed, // Transaction was cancelled or failed before being added to the server queue. SKPaymentTransactionStateRestored // Transaction was restored from user's purchase history. Client should complete the transaction. }; typedef NSInteger SKPaymentTransactionState; 

并在SKPaymentTransaction类参考错误讨论说:

除了当transactionState被设置为SKPaymentTransactionStateFailed时,error属性是未定义的。 您的应用程序可以读取错误属性以确定事务失败的原因。

所以, transaction.error.localizedDescription是“无法连接到iTunes Store”! 是一个一般的错误消息..我也经常收到这个错误消息,同时testing我的InApp购买。

你可以做的一些技巧是,

  1. 使用SKProductsRequest从应用程序商店检索所有产品并检查其response.products包含您要求的产品SKProductsRequest 。 为了这个用途,

     SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]]; //pass product identifier array as argument [request start]; 

并捕捉在以下回复:

  - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ NSArray *myProduct = response.products; } 

所以你可以决定是否可以与app store沟通。 和你的产品ID在那里。

  1. 确保您使用In Apptesting用户帐户进行testing。
  2. 而且您使用的是您在应用程序购买中configuration的相同应用程序IDconfiguration。

谢谢

我摆弄着去App Store,然后回到Settings / Store来注销。 我这样做了3次,每次重新访问我的应用程序,并添加debuggingNSLog输出,现在我能够继续testing我的应用程序内购买代码没有错误-1003。 我不确定这个工作的确切原因,但我相当肯定是不是我的一部分代码的变化,因为我所做的只是添加NSLogs和重新运行我的应用程序。

是的,如果您最初将iPad / iPhone连接到另一台计算机,并且现在正在另一台计算机上使用,则必须在iPad上退出商店,使用正常帐户login到MAC上的iTunes,然后同步。

另外,请确保您的iPad“WIFI”已开启

我做了一个干净的所有目标在XCode手动删除应用程序closures我的设备,然后生成并运行从XCode,它修复了类似的问题(相同的错误信息,但不同的错误代码:-1009)

不幸的是,我遇到了一个这里没有logging的问题。 在您接受所有与应用和应用内清单相关的合同之前,应用内清除function将不起作用。 因此,请确保您(或您的客户)正确设置了iTunesConnect中的所有合同,它们必须出现在“合同有效”部分,以使您的采购有效。

我们的问题是,在iTunes连接我们有错误的包标识符。 有人已经创build了应用程序,我们不得不编辑应用程序,并将其应用程序设置为新的应用程序。

我有两个问题导致了这个问题:

1)我从一个不同的(工作)应用程序复制了IAP代码,但错过了设置我的观察者:

observer = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

2)我在设备的设置中loginiTunes。 您只能在沙箱中使用testing用户 – 我已注销并重新运行。

只需注销您的iTunes帐户(现在不要login您的testing帐户!),并启动您的程序。 当inapp购买时要求您的login信息,您必须input您的testing帐户信息。

我尝试了线程中提供的每个解决scheme,但无济于事。 在我的情况下,我有一个通配符包标识符,以与我在为应用内购买configuration文件创build包标识符时使用的域名相同的域名开始。

下面是我如何解决这个问题,并可能帮助你解决你的问题(见附件):

1)连接你的iPhone到Mac。

2)在“设备”下(在Xcode>窗口菜单>pipe理器窗口中)为您的iPhoneselect“Provisioning Profiles”选项。 您将看到当前驻留在iPhone上的所有configuration文件。

3)仔细删除捆绑标识符(com.MYDOMAIN。*)中以特定域名开头的所有预configurationconfiguration文件,尤其是那些使用通配符的预configurationconfiguration文件,除了您创build的特定应用程序购买(com) .MYDOMAIN.inappidentifier)。

4)重新安装应用程序,并使用新的iTunes连接testing用户(沙箱)

截图:

在这里输入图像描述

我被困了2天,这是我的解决scheme:

  1. 删除所有应用内商品。
  2. 删除新的应用内商品。
  3. 创build一个沙箱testing器。
  4. 从设备(iPad)注销我的苹果帐户,然后尝试购买产品。
  5. 它会要求login,然后用沙箱testing账号重新login。
  6. 购买通过。

我认为重要的是沙箱testing员帐户,我以前没有使用它,因为我总是得到错误0。

在我的情况下,我尝试了互联网上的一切,但没有任何工作。

苹果实际上打破了生产支付系统和沙箱。 我只是等了两天,才开始工作。