【问题标题】:New PayPal iOS SDK (beta) - Can't connect to sandbox新的 PayPal iOS SDK(测试版) - 无法连接到沙盒
【发布时间】:2013-03-11 11:59:40
【问题描述】:

我已将新的 PayPal iOS SDK 集成到我的应用中。参考可以找到here。新的 SDK 非常容易设置,它允许您在 3 种不同的环境中工作 1.) PayPalEnvrionmentNoNetwork 2.) PayPalEnvironmentSandBox 和 3) 没有环境意味着进入他们的实时服务器。一切都适用于 NoNetwork 环境,显然是因为它使用模拟虚拟数据,而不必访问任何服务器。当我尝试切换到 SandBox 环境时,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];

}

FIX:我终于找到了问题所在,您需要在视图加载后添加它。我根本没有这个。

  [PayPalPaymentViewController prepareForPaymentUsingClientId:kPayPalClientId];

【问题讨论】:

  • 这里无法重现。你是在模拟器上还是在设备上?什么iOS版本?另外,仅供参考,client_id 是公共凭证,因此如果您愿意,可以安全地分享。 (它必须是——应用程序中嵌入的任何内容都不是秘密。)
  • 设备,iOS 6.0。我已经更新了客户 ID。
  • 我不确定那可能是什么问题。
  • 嗯...我刚刚在 iPad、iOS 6 上使用您的 client_id 进行了尝试。我确实想解决这个问题,所以请多多包涵。现场环境适合你吗?只是为了进行完整性检查,该设备是否具有连接性? :)
  • 感谢您发布解决方案!您似乎发现了一个错误,因为 prepareForPaymentUsingClientId: 不应该是必需的。 (虽然如果您从视图控制器的viewDidAppear: 调用它会改善您的用户体验。)

标签: cocoa-touch paypal paypal-sandbox


【解决方案1】:

我也遇到了同样的问题。

这都是因为 PayPal 的新 SDK 仅在美国可用,我猜你在其他地方。谢谢!

【讨论】:

  • 如果您访问 PayPals 开发者网站并创建一个美国沙盒帐户,这绝对可以正常工作:-)
  • 是的,我在美国,不过不知道我的账户是不是美国的,我会看看。
  • 所以是的,我的帐户是美国帐户,我什至通过并创建了一个全新的 paypal 帐户,但仍然无法使用。您通常将 customerId 设置为什么?
  • 问题已解决,见上文。谢谢:)
【解决方案2】:

正如我的同事在 cmets 中确定的那样,问题出在 PayPal iOS SDK 中,而不是您的代码中。我们已在 version 1.0.4 (.tgz) 中解决了该问题。

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

再次感谢!

【讨论】:

  • 完全没有问题,喜欢新的 sdk 顺便说一句。非常光滑。
猜你喜欢
  • 2019-07-07
  • 1970-01-01
  • 2013-03-23
  • 2015-07-11
  • 2013-05-14
  • 2013-03-12
  • 2015-11-16
  • 2011-11-01
  • 2013-02-28
相关资源
最近更新 更多