2

我正在创建一个支付应用程序并为此使用braintree。我想使用braintree dropIn UI。通过 pod 安装 BraintreeDropIn。使用以下代码呈现 dropIn UI。

func showDropIn(clientTokenOrTokenizationKey: String) {
    let request =  BTDropInRequest()
    let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
    { (controller, result, error) in
        if (error != nil) {
            print("ERROR")
        } else if (result?.cancelled == true) {
            print("CANCELLED")
        } else if result != nil {
            // Use the BTDropInResult properties to update your UI
            // result.paymentOptionType
            // result.paymentMethod
            // result.paymentIcon
            // result.paymentDescription
        }
        controller.dismissViewControllerAnimated(true, completion: nil)
    }
    self.presentViewController(dropIn!, animated: true, completion: nil)
}

tokenization从下面的沙盒控制面板中获得了密钥,Tokenization Keys并将其传递给 showDropIn 函数。它仍然没有显示任何内容,没有进入这个函数

(BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
{ (controller, result, error))
4

2 回答 2

2

尝试使用这个:

    func showDropIn(clientTokenOrTokenizationKey: String) {

        let request =  BTDropInRequest()
        let dropIn = BTDropInController(authorization: clientTokenOrTokenizationKey, request: request)
        { (controller, result, error) in
            if (error != nil) {
                print("ERROR")
            } else if (result?.cancelled == true) {
                print("CANCELLED")
            } else if result != nil {
                // Use the BTDropInResult properties to update your UI
                // result.paymentOptionType
                // result.paymentMethod
                // result.paymentIcon
                // result.paymentDescription
            }
         dispatch_async(dispatch_get_main_queue(), ^{
             controller.dismissViewControllerAnimated(true,   completion: nil)
     });
        }
          dispatch_async(dispatch_get_main_queue(), ^{
             self.presentViewController(dropIn!, animated: true, completion: nil)
     });
    }

希望这会奏效......!

于 2016-12-20T11:36:35.303 回答
0

在目标 - C:

- (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
        }

        dispatch_async(dispatch_get_main_queue(), ^{
            [controller dismissViewControllerAnimated:YES completion:nil];
        });
    }];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self presentViewController:dropIn animated:YES completion:nil];
    });
}
于 2017-05-31T22:51:50.337 回答