新しい 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];