Проблема с интеграцией Apple Pay / Stripe
Я следил за документацией и примером приложения Stripe по интеграции Apple Pay.
в методе handlePaymentAuthorizationWithPayment в разделе createTokenWithPayment я получаю ошибку:
ошибка домена=com.полоса.lib Code=50 " ваша платежная информация отформатирована неправильно. Пожалуйста, убедитесь, что вы правильно используете последнюю версию нашей библиотеки iOS. Дополнительные сведения см. В разделеhttps://stripe.com/docs/mobile/ios ." UserInfo=0x170261b40 {com.полоса.lib: ErrorMessageKey=ваша платежная информация отформатирована неправильно. Пожалуйста, убедитесь, что вы правильно используете последнюю версию нашей библиотеки iOS. Дополнительные сведения см. В разделеhttps://stripe.com/docs/mobile/ios ., NSLocalizedDescription=ваша платежная информация отформатирована неправильно. Пожалуйста, убедитесь, что вы правильно используете последнюю версию нашей библиотеки iOS. Дополнительные сведения см. В разделеhttps://stripe.com/docs/mobile/ios .}
кто-нибудь знает как решить это? Я использую последнюю библиотеку Stripe.
спасибо.
2 ответов
этот маленький кусочек RnD помог мне. Копание в CustomSampleProject предоставленный самим Stripe, ApplePayStubs работает довольно хорошо, когда STPCard распознается, когда делегат
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
didAuthorizePayment:(PKPayment *)payment
completion:(void (^)(PKPaymentAuthorizationStatus))completion
of PKPaymentAuthorizationViewControllerdelegate называется. Пример кода здесь проверил, был ли код запущен в debug, который предназначен для ApplePayStubs,(PKPayment *)оплата в делегате преобразуется в STPCard и запускается на STPAPIClient на STPToken поколения. Ниже приводится тело вышеупомянутого делегата:
#if DEBUG // This is to handle a test result from ApplePayStubs
if (payment.stp_testCardNumber)
{
STPCard *card = [STPCard new];
card.number = payment.stp_testCardNumber;
card.expMonth = 12;
card.expYear = 2020;
card.cvc = @"123";
[[STPAPIClient sharedClient] createTokenWithCard:card
completion:^(STPToken *token, NSError *error)
{
if (error)
{
completion(PKPaymentAuthorizationStatusFailure);
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Payment Unsuccessful! \n Please Try Again"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
return;
}
/*
Handle Token here
*/
}];
}
#else
[[STPAPIClient sharedClient] createTokenWithPayment:payment
completion:^(STPToken *token, NSError *error)
{
if (error)
{
completion(PKPaymentAuthorizationStatusFailure);
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Payment Unsuccessful!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil] show];
return;
}
/*
Handle Token here
*/
}];
#endif
это работает для меня. С ApplePayStubs (на симуляторе) и без них (на устройстве) надеюсь, что это поможет:)
думаю, я знаю, что здесь произошло. Оставим это на случай, если это кому-то поможет.
когда я изначально настроил Stripe / Apple Pay в свое приложение, я продолжал получать многочисленные ошибки при попытке реализовать STPTestPaymentAuthorizationController
. Я нашел точную проблему, описанную здесь (библиотека платежей Stripe и неопределенные символы для x86_64).
Я реплицировал решение, определенное выше, комментируя часть кода Stripe, которая, возможно (?) произвел Error Domain=com.stripe.lib Code=50
ошибка.
я исправил это, не используя STPTestPaymentAuthorizationController
вообще, просто заменив это на PKPaymentAuthorizationViewController
на #DEBUG
режим.
tl: dr не совсем уверен, почему STPTestPaymentAuthorization не работал; полностью избежал ситуации, запустив PKPaymentAuthorizationViewController с моим iPhone и Stripe dashboard в тестовом режиме.