2016-12-08 2 views
1

私はbraintree ios sdkを使用しており、UIのドロップを使用して顧客カードの詳細を追加しています。 UIが正常に取得され、顧客が情報を送信した後、結果オブジェクトからpaymentMEthodNounceを取得する方法はありますか。ここに私のコードです。how to paymentMetghod iosのbraintreeの結果から返信する

- (void)showDropIn:(NSString *)clientTokenOrTokenizationKey { 
BTDropInRequest *request = [[BTDropInRequest alloc] init]; 
BTDropInController *dropIn = [[BTDropInController alloc] initWithAuthorization:clientTokenOrTokenizationKey request:request handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) { 

    if (error != nil) { 
     NSLog(@"ERROR"); 
    } else if (result.cancelled) { 
     NSLog(@"CANCELLED"); 
    } else { 

     // Use the BTDropInResult properties to update your UI 
     // result.paymentOptionType 
     // result.paymentMethod 
     // result.paymentIcon 
     // result.paymentDescription 
    } 
}]; 
[self presentViewController:dropIn animated:YES completion:nil];} 

私は顧客が結果を提出すると思いますが、支払いは結果オブジェクトになりますか?もしそれが正しいと思えば、それを私のサーバに送るために変数に辿ることができます。私はかなり新しいですので、どんな助けも高く評価されます。

+0

その後、BTDropInControllerを開くと、paypal ..のような詳細を入力し、そのコールデリゲートメソッドthatsメソッドの後に[pay]ボタンをクリックすると、nonceが提供されます。 –

答えて

0

あなたは成功時に支払方法nonceを取得するためにBTDropInViewControllerDelegateを実装し、いずれの場合もUIの低下を却下:

- (void)dropInViewController:(__unused BTDropInViewController *)viewController didSucceedWithPaymentMethod:(BTPaymentMethod *)paymentMethod { 
    [self postNonceToServer:paymentMethod.nonce]; // Send payment method nonce to your server 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)dropInViewControllerDidCancel:(__unused BTDropInViewController *)viewController { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)postNonceToServer:(NSString *)paymentMethodNonce { 
    // Update URL with your server 
    NSURL *paymentURL = [NSURL URLWithString:@"https://your-server.example.com/checkout"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:paymentURL]; 
    request.HTTPBody = [[NSString stringWithFormat:@"payment_method_nonce=%@", paymentMethodNonce] dataUsingEncoding:NSUTF8StringEncoding]; 
    request.HTTPMethod = @"POST"; 

    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
     // TODO: Handle success and failure 
    }] resume]; 
} 
+0

しかし、私の混乱はまだ存在します、それはどこでこのコードを追加するのか知りません、どうやってvaribaleにノンスを得るのですか? – user3045354

+0

これを追加するコントローラーはどれですか?> BTDropInController?コントローラ名は –

+0

ですか? –

0
BTDropInRequest *request = [[BTDropInRequest alloc] init]; 
request.amount = @"10"; 
BTDropInController *dropIn = [[BTDropInController alloc] initWithAuthorization:clientTokenOrTokenizationKey request:request handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) { 

    if (error != nil) { 
     NSLog(@"ERROR"); 
    } else if (result.cancelled) { 
     NSLog(@"CANCELLED"); 
    } else { 

     BTPaymentMethodNonce *selectedNonce = result.paymentMethod; 
     [self postNonceToServer:self.selectedNonce.nonce]; 

    } 
}]; 
[self presentViewController:dropIn animated:YES completion:nil]; 
サーバーへの支払方法nonceを送ります
+0

result.paymentMethodにアクセスすると、このエラーが発生しました。 "BTDropInResult型の値に 'paymentMethod'というメンバーがありません。 – titan

0

新しいiOS v4 SDKについては、Braintreeもインポートする必要がありました。そうでなければBTDropInResultpaymentMethodプロパティへのアクセス。

import BraintreeDropIn 
import Braintree