Проблема с интеграцией 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 в тестовом режиме.