Bambora Checkout SDK for iOS
适用于 iOS 的 Checkout SDK 提供了集成 Bambora Checkout 与您的 iOS 应用程序所需的工具。SDK 帮助显示 Checkout 会话以及在支付流程中发出事件。
安装
Bambora SDK 可以通过 CocoaPods、Swift 包管理器 或 Carthage 获取。
CocoaPods
通过将以下内容添加到您的 Podfile
中,将 Bambora SDK 作为 pod 添加到您的项目中
$ pod 'BamboraCheckoutSDK'
之后,运行以下命令
$ pod install
Swift 包管理器
使用以下步骤用 Swift 包管理器添加 Bambora SDK:
- 前往您的项目设置并点击“包依赖”选项卡。
- 点击“+”以添加新的 Swift 包依赖项。
- 在搜索栏中输入 Github URL:
https://github.com/bambora/checkout-sdk-ios
- 另外,您可以在包含包时设置版本。默认选项是选择最新版本,这是推荐的选项,以确保您保持最新状态并拥有最新的(安全)补丁。
- 点击“添加包”
当包成功添加后,它将自动添加到您的目标依赖项中。
Carthage
通过在您的 Cartfile
中添加以下内容,使用 Carthage 添加 Bambora SDK:
$ github "bambora/checkout-sdk-ios"
之后,运行以下命令
$ carthage update --use-xcframeworks
导航到 Carthage/Build
目录,该目录位于包含 .xcodeproj
或 .xcworkspace
的相同目录中。在此目录中存储了 .xcframework
包。将 .xcframework
拖放到“框架、库和嵌入内容”部分的指定目标中。请确保它设置为“嵌入并签名”。
允许重定向到钱包应用
您的客户可能希望通过钱包方式完成支付,例如 MobilePay 和 Vipps。理想情况下,将被重定向到相应的钱包应用并完成支付。要允许将这些应用重定向到其他应用,需要在项目中设置可重定向到的哪些应用。以下是允许重定向到其他应用的步骤:
- 转到您项目的目标并点击“信息”选项卡。
- 添加键“查询 URL 方案”。
- 对于每个应支持 URL 方案,通过点击“+”在该“查询 URL 方案”中添加一个条目。
- 向项目添加一个值。这应该是一个方案,例如:"mobilepayonline"。
支持的URL
当前SDK支持MobilePay、Vipps和Swish。对于这些钱包产品,你可以定义以下URL。
钱包产品 | 生产应用 | 测试应用 |
---|---|---|
MobilePay | mobilepay mobilepayonline |
mobilepay-test mobilepayonline-test |
Vipps | vipps | vippsmt |
Swish | swish | swish |
配置URL方案
为了让客户在通过钱包方式进行支付后可以重定向到您的应用,必须在项目中设置URL Scheme。以下步骤显示了如何正确设置方案。
- 转到您项目的目标并点击“信息”选项卡。
- 展开'URL类型'类别。
- 在'URL方案'文本框中输入您希望使用的URL方案。
使用
通过Bambora Checkout SDK处理支付只需几个简单的步骤
- 初始化SDK
- 向客户显示支付界面
- 监听事件并处理支付结果
创建结算会话
为了初始化SDK,你需要一个会话令牌,可以通过创建结算会话来获取。关于如何创建结算会话的详细信息,请参阅Bambora开发者文档。
初始化SDK
以如下方式初始化SDK
var checkout = Bambora.checkout(sessionToken: sessionToken, customUrl: customUrl)
参数
sessionToken
- 在上一步创建会话时收到的令牌- (可选)
customUrl
:覆盖SDK连接的默认URL的选项
显示结算
初始化SDK后,Bambora结算UI可以向您的客户显示。要显示支付屏幕,只需调用
checkout.show()
SDK将在当前屏幕上弹出显示Bambora结算UI。如果客户选择使用其钱包支付应用程序支付,SDK将确保打开相应的应用程序。SDK还将处理将用户重定向回配置的URL方案。
订阅事件
SDK是事件驱动的。这意味着在支付流程中发生任何事情时,它会触发事件。要能接收这些事件,您需要订阅它们。
-
订阅所有事件
任何事件发生时都会收到通知checkout.subscribeOnAllEvents()
-
订阅某些事件
当特定事件发生时收到通知。将下面示例中的事件替换为所需的那些。可能的选项列在这里。此处。checkout.on(events: [EventType.authorize, EventType.cardTypeResolve])
使用以下片段来订阅单个事件。
checkout.on(event: EventType.authorize)
-
取消订阅某些事件
使用以下示例来取消订阅某些事件。将事件类型替换为不再需要接收的类型。checkout.off(events: [EventType.authorize, EventType.cardTypeResolve])
使用以下片段来取消订阅特定事件。
checkout.off(event: EventType.authorize)
接收事件
要拦截您已订阅的事件,实现 CheckoutDelegate
协议。此协议有一个名为 onEventDispatched(event:Event)
的函数,您可以像这样实现
func onEventDispatched(event: Event) {
switch event {
case is AuthorizeEvent:
// do something when an Authorize event was intercepted
default:
// do something when any other event was intercepted
}
}
事件概述
事件 | 触发条件 | 数据描述 |
---|---|---|
授权 | 在支付已授权时发送 | 包含支付数据,例如 txnId 和 orderId |
CheckoutViewClose | 在支付屏幕已关闭时发送 | 不包含任何数据 |
PaymentTypeSelection | 在选择支付类型时发送 | 包含支付类型,例如 paymentcard 或 mobilepay |
CardTypeResolve | 每次输入足够多的支付卡号数字以确定支付卡类型时发送 | 包含支付卡类型数据,例如 id 和 fee |
ErrorEvent | 在发生错误时发送 | 包含 BamboraError 类型的有效载荷,例如 loadSessionError 或 genericError |
关于不同类型事件及其数据的更多信息,可以在Bambora 开发文档中找到。
关闭 SDK
当支付已授权并完成时,Checkout SDK 会自动关闭。在其他所有场景中,可以通过调用 Bambora.close()
来关闭 SDK。这在新支付重新初始化 SDK 之前是必需的。
请注意,如果用户仍在完成支付,则在过程中关闭 SDK 可能会导致支付失败。
当SDK关闭时,会发生几件事情
- 显示Bambora Checkout视图的视图控制器立即消失
- SDK的资源,如Checkout,被清理
- 现在可以实例化一个新的支付会话
演示应用
演示应用展示了您如何在自己的应用中使用Bambora Checkout SDK。它显示了如何实现以下功能
- 使用Bambora的默认生产URL初始化会话
- 查看已完成后的付款详情
- 监听并响应事件
- 配置deeplink URL