Braintree iOS Drop-in SDK
欢迎使用 Braintree 的 iOS Drop-in SDK!
Braintree iOS Drop-in SDK 允许部署目标的范围是 iOS 12.0 或更高版本。 它需要 Xcode 12+ 和 Swift 5.1+。
目录
入门指南
我们推荐使用Swift Package Manager或CocoaPods将Braintree Drop-in SDK集成到项目中。
Swift Package Manager
此功能仅在v9版本中可用。v9.Y.0需要Xcode 12.5及以上版本。
要将BraintreeDropIn
包添加到你的Xcode项目中,选择文件 > Swift Packages > 添加包依赖,并将https://github.com/braintree/braintree-ios-drop-in
作为存储库URL输入。勾选BraintreeDropIn
的复选框。
查看你的应用程序目标,你会看到BraintreeDropIn
库已自动作为框架链接到应用程序(请参阅通用 > 框架、库和嵌入内容)。
注意:对于使用Swift Packages与二进制依赖项的应用程序扩展,存在一个已知的SPM问题。当上传构建副本到App Store Connect时会发生此问题。你可以在Swift论坛上阅读报告并按照这个解决方案来操作。
CocoaPods
将其添加到你的Podfile
中
pod 'BraintreeDropIn'
然后运行pod install
。
查看我们的Podspec
获取更多信息。
注意:如果你在Xcode 12中使用Braintree Drop-in iOS SDK(版本8.x.x),你可能会看到警告The iOS Simulator deployment target is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99
。这不会阻止你的应用程序编译。这是一个CocoaPods问题,有一个已知的解决方案。
文档
导入 BraintreeDropIn
将以下导入语句添加到任何使用 BraintreeDropIn 的类中。
import BraintreeDropIn
显示 Drop-in
展示 BTDropInController
以收集客户的支付信息,并接收 nonce
以发送到您的服务器。如果创建客户端令牌时指定了 customer_id
,则将显示已保存的支付方式。
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?.isCanceled == true) {
print("CANCELED")
} else if let result = result {
// Use the BTDropInResult properties to update your UI
let selectedPaymentMethodType = result.paymentMethodType
let selectedPaymentMethod = result.paymentMethod
let selectedPaymentMethodIcon = result.paymentIcon
let selectedPaymentMethodDescription = result.paymentDescription
}
controller.dismiss(animated: true, completion: nil)
}
self.present(dropIn!, animated: true, completion: nil)
}
Apple Pay + Drop-in
Drop-in 默认启用 Apple Pay。只要控制面板中启用且设备支持,Drop-in 将将 Apple Pay 显示为支付选项。若要禁用,请在 BTDropInRequest
上设置 applePayDisabled = true
。
重要:如果客户选择 Apple Pay 作为他们的首选支付方式,则 result.paymentMethodType == .applePay
且 result.paymentMethod
将为 nil
。选择 Apple Pay 不会显示 Apple Pay 选项卡或创建 nonce。在您收到 BTDropInResult
之后,您需要
- 显示一个
PKPaymentButton
。 - 当客户点击按钮时,呈现一个
PKPaymentAuthorizationViewController
。 - 对
PKPayment
进行分词,并将生成的nonce发送到您的服务器以创建交易。
使用BTApplePayClient
对客户的Apple Pay信息进行分词 - 查看我们官方文档获取更多信息。
3D Secure + Drop-in
Drop-in支持3D Secure验证。您必须在控制面板中启用3D Secure。创建一个BTThreeDSecureRequest
对象,尽可能在它上面设置更多字段;设置的字段越多,用户面临挑战的可能性就越小。在BTDropInRequest
上设置BTThreeDSecureRequest
。
let request = BTDropInRequest()
let threeDSecureRequest = BTThreeDSecureRequest()
threeDSecureRequest.threeDSecureRequestDelegate = self
threeDSecureRequest.amount = 1.00
threeDSecureRequest.email = "[email protected]"
threeDSecureRequest.requested = .version2
let address = BTThreeDSecurePostalAddress()
address.givenName = "Jill"
address.surname = "Doe"
address.phoneNumber = "5551234567"
address.streetAddress = "555 Smith St"
address.extendedAddress = "#2"
address.locality = "Chicago"
address.region = "IL"
address.postalCode = "12345"
address.countryCodeAlpha2 = "US"
threeDSecureRequest.billingAddress = address
// Optional additional information.
// For best results, provide as many of these elements as possible.
let additionalInformation = BTThreeDSecureAdditionalInformation()
additionalInformation.shippingAddress = address
threeDSecureRequest.additionalInformation = additionalInformation
request.threeDSecureRequest = threeDSecureRequest
管理支付方式
默认情况下,如果您使用具有客户ID生成的客户端令牌初始化Drop-in,Drop-in将向该客户在Braintree Vault中添加支付方式。您可以选择通过启用vaultManager
允许删除该客户的支付方式。
let request = BTDropInRequest()
request.vaultManager = true
获取最近的支付方式
如果您的用户已经有现有的支付方式,你可能不需要显示Drop-in UI。您可以使用BTDropInResult.mostRecentPaymentMethod
检查他们是否有现有的支付方式。注意,您必须使用带有customer_id
创建的客户端令牌。BTDropInResult
使得获取支付方式的描述和图标变得简单。
BTDropInResult.mostRecentPaymentMethod(forClientToken: authorization) { result, error in
guard let result = result, error == nil else {
// either an error occurred or the customer doesn't have any vaulted payment methods
return
}
if result.paymentOptionType == .applePay {
// Apple Pay is the most recently selected option
// Note that result.paymentMethod will be nil in this case; display Apple Pay button and tokenize using `BTApplePayClient`
}
// Update your UI
let type = result.paymentMethodType
let icon = result.paymentIcon
let description = result.paymentDescription
// Use the payment method to transact
let paymentMethod = result.paymentMethod
}
本地化
Drop-in 目前支持 22种语言。
颜色方案
Drop-in 可完全自定义,但我们还提供了 浅色
、暗色
和 动态
颜色方案。动态颜色方案将根据设备是否处于浅色或暗色模式而切换。动态方案仅在 iOS 13 或更高版本中可用。Drop-in 默认将使用 浅色
颜色方案。
let uiCustomization = BTDropInUICustomization(colorScheme: .dark)
let dropInRequest = BTDropInRequest()
dropInRequest.uiCustomization = uiCustomization
自定义
使用 BTDropInUICustomization
来自定义 Drop-in 的外观。
let uiCustomization = BTDropInUICustomization(colorScheme: .dynamic)
uiCustomization.fontFamily = "Helvetica"
uiCustomization.boldFontFamily = "Helvetica Bold"
let dropInRequest = BTDropInRequest()
dropInRequest.uiCustomization = uiCustomization
无障碍访问
动态字体大小
默认情况下,系统字体和自定义字体都启用了动态字体大小功能。我们强烈建议您保留此功能,但如果您希望禁用它,可以在 BTDropInUICustomization
上将 disableDynamicType
设置为 true
。
let uiCustomization = BTDropInUICustomization(colorScheme: .light)
uiCustomization.disableDynamicType = true
let dropInRequest = BTDropInRequest()
dropInRequest.uiCustomization = uiCustomization
语音控制
Drop-in UI元素支持语音控制。
SwiftUI
Drop-in目前不官方支持SwiftUI。
更多信息
从《“Hello, Client!”》开始,了解基本配置和使用方法。
有关更多信息,请参阅我们的参考文档。
版本
此SDK遵守我们的客户端SDK弃用政策。有关SDK可能状态的更多信息,请参阅我们的开发人员文档。
主版本号 | 状态 | 已发布 | 已弃用 | 不支持 |
---|---|---|---|---|
9.x.x | 活跃 | 2021年4月 | 待定 | 待定 |
8.x.x | 已弃用 | 2020年2月 | 2022年4月 | 待定 |
7.x.x | 不支持 | 2018年12月 | 2021年4月 | 2022年4月 |
版本6及以下均不支持。
演示
本项目中包含演示应用。运行演示应用需要 Xcode 13+。打开 BraintreeDropIn.xcworkspace 并运行演示方案以查看。
演示应用使用 Swift 包管理器来获取依赖项。打开工作区时,Xcode 将自动下载依赖项。删除衍生数据将删除依赖项。转到 文件 -> Swift 包 -> 解析包版本 以重新下载它们。
帮助
反馈
Braintree iOS Drop-in SDK 正在积极开发中,我们欢迎您的反馈!
以下是一些联系方式
- GitHub 问题 - 用于一般适用的问题和反馈
- Braintree 支持 - 用于任何集成阶段的个性化支持
许可
Braintree iOS Drop-in SDK 是开源的,可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。