【问题标题】:Unable to present dropIn UI using braintree iOS无法使用 Braintree iOS 呈现 dropIn UI
【发布时间】:2016-12-20 10:50:38
【问题描述】:

我正在创建一个支付应用程序并为此使用 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 Keys 下的沙盒控制面板中获得了tokenization 密钥,并将其传递给 showDropIn 函数。它仍然没有显示任何内容,没有进入这个函数

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

【问题讨论】:

    标签: ios braintree braintree-sandbox


    【解决方案1】:

    试试这个:

        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)
         });
        }
    

    希望这会奏效...!!

    【讨论】:

    • 欢迎 VJVJ.... :) 如果您执行任何 UI 更新并且如果它不在主线程中,则执行它 dispatch_get_main_queue 它会正常工作...
    • 当然,现在我明白了
    • 为我节省了很多时间!在下面的 Objective-C 中发布!
    【解决方案2】:

    在目标 - 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];
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 2021-12-16
      • 2020-01-28
      • 2023-03-29
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多