写点什么

Braintree iOS Drop-in SDK - 一站式支付解决方案

作者:qife122
  • 2025-09-12
    福建
  • 本文字数:2625 字

    阅读完需:约 9 分钟

Braintree iOS Drop-in SDK

Braintree iOS Drop-in SDK 是一个功能强大的支付集成解决方案,为 iOS 应用提供了一套完整的支付 UI 组件。它支持多种支付方式,包括信用卡、PayPal、Venmo 和 Apple Pay,让开发者能够快速集成安全可靠的支付功能。

功能特性

  • 多支付方式支持:集成信用卡、PayPal、Venmo 和 Apple Pay 等多种支付方式

  • UI 自定义:通过BTDropInUICustomization全面自定义 UI 样式和颜色方案

  • 安全支付处理:支持 3D Secure 验证和安全的支付信息处理

  • 支付管理:提供支付方式的保存、管理和选择功能

  • 国际化支持:包含多语言本地化和 RTL 布局支持

  • 无障碍访问:默认支持动态字体大小和无障碍功能

  • 现代技术栈:要求 Xcode 15.0+和 Swift 5.9+,支持 iOS 12.0+

安装指南

Swift Package Manager

dependencies: [    .package(url: "https://github.com/braintree/braintree-ios-drop-in", from: "9.14.0")]
复制代码

CocoaPods

pod 'BraintreeDropIn'
复制代码

系统要求

  • iOS 12.0+

  • Xcode 15.0+

  • Swift 5.9+

使用说明

基本集成

import BraintreeDropIn
// 初始化Drop-in控制器let dropInRequest = BTDropInRequest()dropInRequest.cardholderNameSetting = .requireddropInRequest.vaultCard = true
let dropIn = BTDropInController(authorization: "your_client_token", request: dropInRequest) { (controller, result, error) in if let error = error { print("Error: \(error.localizedDescription)") } else if let result = result { // 处理支付结果 print("Payment method type: \(result.paymentMethodType)") print("Payment description: \(result.paymentDescription)") } controller.dismiss(animated: true)}
// 呈现Drop-in界面present(dropIn!, animated: true)
复制代码

UI 自定义示例

let uiCustomization = BTDropInUICustomization(colorScheme: .light)uiCustomization.fontFamily = "Helvetica"uiCustomization.boldFontFamily = "Helvetica-Bold"uiCustomization.tintColor = .systemBlue
let dropInRequest = BTDropInRequest()dropInRequest.uiCustomization = uiCustomization
复制代码

获取最近支付方式

BTDropInResult.mostRecentPaymentMethod(forClientToken: clientToken) { result, error in    if let result = result {        // 显示最近使用的支付方式        let paymentIcon = result.paymentIcon        let description = result.paymentDescription    }}
复制代码

核心代码

支付表单控制器

// BTCardFormViewController.h@interface BTCardFormViewController : BTDropInBaseViewController <UITextFieldDelegate>
@property (nonatomic, strong, readonly) BTUIKCardNumberFormField *cardNumberField;@property (nonatomic, strong, readonly) BTUIKCardholderNameFormField *cardholderNameField;@property (nonatomic, strong, readonly) BTUIKExpiryFormField *expirationDateField;@property (nonatomic, strong, readonly) BTUIKSecurityCodeFormField *securityCodeField;
// 如果表单有效,返回BTCardRequest@property (nonatomic, strong, nullable, readonly) BTCardRequest *cardRequest;
@end
复制代码

UI 定制配置

// BTDropInUICustomization.m- (instancetype)initWithColorScheme:(BTDropInColorScheme)colorScheme {    if (self = [super init]) {        _useBlurs = YES;        _postalCodeFormFieldKeyboardType = UIKeyboardTypeDefault;
switch(colorScheme) { case BTDropInColorSchemeLight: _barBackgroundColor = UIColor.whiteColor; _formBackgroundColor = [UIColor btuik_colorFromHex:@"EFEFF4" alpha:1.0]; _primaryTextColor = UIColor.blackColor; _secondaryTextColor = [UIColor btuik_colorFromHex:@"3C3C43" alpha:1.0]; break; case BTDropInColorSchemeDark: _barBackgroundColor = [UIColor btuik_colorFromHex:@"222222" alpha:1.0]; _formBackgroundColor = [UIColor btuik_colorFromHex:@"222222" alpha:1.0]; _primaryTextColor = UIColor.whiteColor; _secondaryTextColor = [UIColor btuik_colorFromHex:@"EBEBF5" alpha:1.0]; break; default: // dynamic if (@available(iOS 13, *)) { _barBackgroundColor = UIColor.systemBackgroundColor; _formBackgroundColor = UIColor.systemGroupedBackgroundColor; _primaryTextColor = UIColor.labelColor; _secondaryTextColor = UIColor.secondaryLabelColor; } } } return self;}
复制代码

支付方式处理

// BTPaymentMethodNonce+DropIn.m- (NSString *)paymentDescription {    if ([self isKindOfClass:[BTCardNonce class]]) {        return ((BTCardNonce *)self).lastFour;    } else if ([self isKindOfClass:[BTPayPalAccountNonce class]]) {        return ((BTPayPalAccountNonce *)self).email;    } else if ([self isKindOfClass:[BTVenmoAccountNonce class]]) {        return ((BTVenmoAccountNonce *)self).username;    } else if ([self isKindOfClass:[BTApplePayCardNonce class]]) {        return @"Apple Pay";    } else {        return @"";    }}
复制代码

基础视图控制器

// BTDropInBaseViewController.m- (instancetype)initWithAPIClient:(BTAPIClient *)apiClient request:(BTDropInRequest *)request {    if (self = [super init]) {        self.apiClient = apiClient;        _dropInRequest = request;    }    return self;}
- (void)loadConfiguration { [self.apiClient fetchOrReturnRemoteConfiguration:^(BTConfiguration *configuration, NSError *error) { self.configuration = configuration; [self configurationLoaded:configuration error:error]; }];}
复制代码


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Braintree iOS Drop-in SDK - 一站式支付解决方案_ios_qife122_InfoQ写作社区