3

新しい PayPal iOS SDK をアプリに統合しました。リファレンスはこちらにあります。新しい SDK は非常に簡単にセットアップでき、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];

}

修正: 最後に問題を突き止めました。ビューの読み込み後にこれを追加する必要があります。私はこれをまったく持っていませんでした。

  [PayPalPaymentViewController prepareForPaymentUsingClientId:kPayPalClientId];

4

2 に答える 2

5

私の同僚がコメントで判断したように、問題はコードではなく PayPal iOS SDK のバグでした。この問題はバージョン 1.0.4 ( .tgz ) で修正されています。

更新されたライブラリにより、コードは期待どおりに動作するはずです。prepareForPaymentUsingClientId:呼び出しは常にオプションである必要があります (それでも推奨されます) 。

再度、感謝します!

于 2013-03-25T22:35:38.593 に答える
1

私は同じ問題を抱えています。

これはすべて、PayPal の新しい SDK が米国でのみ利用可能であり、他の場所で利用できると推測しているためです。ありがとう!

于 2013-03-22T20:44:57.113 に答える