Stripe iOS SDK: каждый раз при просмотре экрана методов оплаты создается новый идентификатор клиента? - PullRequest
0 голосов
/ 10 января 2019

Я использую Stripe iOS SDK, чтобы создавать клиентов и принимать платежи в моем приложении. При этом в документации Stripe (https://stripe.com/docs/mobile/ios/standard)) я замечаю, что они создают эфемерный ключ (нового клиента) каждый раз, когда отображается экран способов оплаты? Данные карты моего пользователя сохраняются, как и должны, но проблема с эта строка:

STPCustomerContext * customerContext = [[STPCustomerContext alloc] initWithKeyProvider: [StripeAPIBackend sharedInstance]];

означает, что каждый раз, когда мой пользователь выбирает способ оплаты, он не виден, поскольку каждый раз при нажатии кнопки создается новый идентификатор клиента. Кто-нибудь знает, как я могу предотвратить это?

ViewController.m

- (void)handlePaymentMethodsButtonTapped {

STPCustomerContext *customerContext = [[STPCustomerContext alloc] initWithKeyProvider:[StripeAPIBackend sharedInstance]];

    // Setup payment methods view controller
    STPPaymentMethodsViewController *paymentMethodsViewController = [[STPPaymentMethodsViewController alloc] initWithConfiguration:[STPPaymentConfiguration sharedConfiguration] theme:[STPTheme defaultTheme] customerContext:customerContext delegate:self];

    // Present payment methods view controller
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:paymentMethodsViewController];
    [self presentViewController:navigationController animated:YES completion:nil];



}

StripeAPIBackend.m

- (void)createCustomerKeyWithAPIVersion:(NSString *)apiVersion completion:(STPJSONResponseCompletionBlock)completion {

    NSString *email = @"test@test.com";

   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

   manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
    [manager POST:self.baseURL.absoluteString
       parameters:@{@"api_version": apiVersion, @"email": email}
        // progress:nil
          success:^(NSURLSessionDataTask *task, id responseObject) {
              completion(responseObject, nil);

          } failure:^(NSURLSessionDataTask *task, NSError *error) {
              completion(nil, error); 
          }];

}
...