2014-12-02 8 views
6

Śledziłem dokumentację Stripe i przykładową aplikację dotyczącą integracji z Apple Pay.Problem z integracją z Apple Pay/Stripe

W metodzie handlePaymentAuthorizationWithPayment pod createTokenWithPayment, otrzymuję błąd:

Error Domain=com.stripe.lib Code=50 "Your payment information is formatted improperly. Please make sure you're correctly using the latest version of our iOS library. For more information see https://stripe.com/docs/mobile/ios ." UserInfo=0x170261b40 {com.stripe.lib:ErrorMessageKey=Your payment information is formatted improperly. Please make sure you're correctly using the latest version of our iOS library. For more information see https://stripe.com/docs/mobile/ios ., NSLocalizedDescription=Your payment information is formatted improperly. Please make sure you're correctly using the latest version of our iOS library. For more information see https://stripe.com/docs/mobile/ios .}

ktoś wie jak rozwiązać ten problem? Używam najnowszej biblioteki Stripe.

Dzięki.

Odpowiedz

3

Myślę, że wiem, co się tutaj stało. Pozostawiając to na wypadek, gdyby to pomogło komukolwiek.

Kiedy początkowo ustawiłem aplikację Stripe/Apple Pay w mojej aplikacji, ciągle uzyskiwałem liczne błędy podczas próby wdrożenia STPTestPaymentAuthorizationController. Znalazłem dokładnie opisany problem (Stripe payment library and undefined symbols for x86_64).

Powieliłem rozwiązanie zdefiniowane powyżej, komentując część kodu Stripe, który może (?) Wygenerował błąd Error Domain=com.stripe.lib Code=50.

Naprawiłem to, nie używając w ogóle STPTestPaymentAuthorizationController, po prostu zastępując to PKPaymentAuthorizationViewController w trybie #DEBUG.

tl: dr Nie do końca wiadomo, dlaczego STPTestPaymentAuthorization nie zadziałało; całkowicie uniknąć sytuacji, uruchamiając PKPaymentAuthorizationViewController z moim panelem iPhone i Stripe w trybie testowym.

+0

Witam Może, jeśli zapłacę za pomocą Apple Pay z moim Touch ID z paskiem w trybie testowym, czy nie będzie on obciążał mojej karty? –

+3

@SaiJithendra Prawidłowe, karta nie obciąży karty, mimo że transakcja zakończy się powodzeniem na Twoim telefonie. –

+0

Dziękuję za odpowiedź :) –

5

Ten mały kawałek RnD pomógł mi. Kopanie w CustomSampleProject dostarczonych przez samych Stripe, ApplePayStubs działa całkiem dobrze, gdy STPCard ujmuje się, gdy delegat

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller 
        didAuthorizePayment:(PKPayment *)payment 
          completion:(void (^)(PKPaymentAuthorizationStatus))completion 

z PKPaymentAuthorizationViewControllerDelegate nazywa. tutaj sprawdzone przykładowy kod, jeśli kod był prowadzony w debugowania, który jest dla ApplePayStubs The (PKPayment *) płatność w delegata jest konwertowany do STPCard i zostanie uruchomiony do STPAPIClient dla STPToken pokolenia. Poniżej znajduje się treść wyżej wymienionego uczestnika:

#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 

To zadziałało dla mnie. Z ApplePayStubs (na Simulatorze) i bez nich (na urządzeniu) Nadzieję, że to pomaga :)