Cocoa touch 新的PayPal iOS SDK(测试版)-Can';t连接到沙盒

Cocoa touch 新的PayPal iOS SDK(测试版)-Can';t连接到沙盒,cocoa-touch,paypal,paypal-sandbox,Cocoa Touch,Paypal,Paypal Sandbox,我已经将新的PayPal iOS SDK集成到我的应用程序中。可以找到参考资料。新的SDK非常容易设置,它允许您在3种不同的环境中工作1)PayPalenVironmentNonetwork 2)PayPalenEnvironment Sandbox和3)没有环境意味着进入他们的实时服务器。一切都适用于非网络环境,显然是因为它使用模拟虚拟数据,不必访问任何服务器。当我尝试切换到沙箱环境时,PayPal无法连接到服务器,我得到以下错误: We're Sorry There was a pr

我已经将新的PayPal iOS SDK集成到我的应用程序中。可以找到参考资料。新的SDK非常容易设置,它允许您在3种不同的环境中工作1)PayPalenVironmentNonetwork 2)PayPalenEnvironment Sandbox和3)没有环境意味着进入他们的实时服务器。一切都适用于非网络环境,显然是因为它使用模拟虚拟数据,不必访问任何服务器。当我尝试切换到沙箱环境时,PayPal无法连接到服务器,我得到以下错误:

  We're Sorry
  There was a problem communicating with the PayPal servers. [Cancel][Try Again]
我不确定这是我的问题还是他们的问题。以下是配置:

 #define kPayPalClientId @"AbRN_BAV7YMsvde9KUFPsbSC_72NA9swMcY-j0QZL629lXrjSc9CNwfFn8Ac"
 #define kPayPalReceiverEmail @"The email I use to login into PayPal"


- (IBAction)pay {
   PayPalPayment *payment = [[PayPalPayment alloc] init];
   payment.amount = [[NSDecimalNumber alloc] initWithString:@"14.99"];
   payment.currencyCode = @"USD";
   payment.shortDescription = @"Testing.";

   if (!payment.processable) {
    // This particular payment will always be processable. If, for
    // example, the amount was negative or the shortDescription was
    // empty, this payment wouldn't be processable, and you'd want
    // to handle that here.
   }

   // Any customer identifier that you have will work here. Do NOT use a device- or
   // hardware-based identifier.
   NSString *customerId = nil;

   // Set the environment:
   // - For live charges, use PayPalEnvironmentProduction (default).
   // - To use the PayPal sandbox, use PayPalEnvironmentSandbox.
   // - For testing, use PayPalEnvironmentNoNetwork.
   [PayPalPaymentViewController setEnvironment:self.environment];

   PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithClientId:kPayPalClientId
                                                                                             receiverEmail:kPayPalReceiverEmail
                                                                                                   payerId:customerId
                                                                                                   payment:payment
                                                                                                  delegate:self]; 
   paymentViewController.hideCreditCardButton = NO;

   [self presentViewController:paymentViewController animated:YES completion:nil];

}

修复:我终于解决了问题,你需要在视图加载后添加这个。我根本没有这个。

  [PayPalPaymentViewController prepareForPaymentUsingClientId:kPayPalClientId];


我也有同样的问题


这都是因为PayPals的新SDK只在美国提供,我猜你可能在其他地方。谢谢

正如我的同事在评论中确定的,问题是PayPal iOS SDK中的错误,而不是您的代码中的错误。我们已在()中修复了该问题

有了更新后的库,您的代码现在应该可以正常工作了;
prepareForPaymentUsingClientId:
调用应该始终是可选的(尽管仍然推荐)


再次感谢

我不能在这里复制。你使用的是模拟器还是设备?什么iOS版本?另外,仅供参考,
客户端id
是一个公共凭证,因此如果您愿意,可以安全地共享。(必须是——应用程序中嵌入的任何东西都不是秘密。)设备,iOS 6.0。我已经更新了客户端id。我不确定可能是什么问题。嗯……我刚刚用你的客户端id在iPad、iOS 6上试用过。我确实想解决这个问题,所以请耐心等待。生活环境适合你吗?只是为了检查是否正常,该设备确实具有连接能力?:)感谢您发布解决方案!您似乎发现了一个bug,因为
prepareForPaymentUsingClientId:
不是必需的。(虽然如果你从你的视图控制器的
视图调用它会改善你的用户体验:
)如果你去PayPals开发者网站并创建一个美国沙箱帐户,这将非常好:-)是的,我在美国,不知道我的帐户是不是美国,我会知道的。所以是的,我的帐户是美国帐户,我甚至做了一个全新的paypal帐户,但它仍然不起作用。您通常将customerId设置为什么?问题已解决,请参见上文。谢谢:)一点问题都没有,喜欢新的sdk顺便说一句。非常流畅。