Bolt iOS SDK可以使商家将其应用程序与Bolt Checkout集成。
SDK作为包含适用于iOS设备和模拟器的预构建框架的`XCFramework`包提供。支持Swift Package Manager和Cocoapods包管理器。最低iOS目标版本为13.0。
pod install
在使用SDK之前,需要使用客户端属性进行初始化。以下可以指定以下属性
import Bolt
Bolt.ClientProperties.shared.publishableKey = "<key>"
Bolt.ClientProperties.shared.environment = .staging
信用卡标记化工具提供了一种以PCI合规方式收集和存储信用卡信息的方法。在内部,SDK使用本地生成的客户端公钥/私钥对和服务器公钥加密卡和标记信息。
标记可以转发到商家服务器,商家可以使用它通过Bolt商家授权端点对信用卡进行收费。
标记化函数接受信用卡号和卡验证值(CVV)。如果从服务器获得成功响应,则返回一个新生成的卡标记值,该值表示存储的卡。
let tokenizer = Bolt.CreditCardTokenizer()
tokenizer.generateToken(cardNumber: "4111111111111111", cvv: "123") { result in
switch result {
case let .success(tokenizedCard):
print(tokenizedCard)
case let .failure(error):
print(error)
}
}
在测试环境中,可以使用任何CVV与卡号4111 1111 1111 1111
一起使用以获得成功的标记化响应。
CreditCardToken(
token: "7dfc9c8c3e69a383da7b203e5b685e72f242ed90298d3e2f3426fd010c8e6219",
tokenExpiry: 1671140825305, // 15 minutes from time of creation
last4: "1111",
bin: "411111",
network: "visa"
)
这是启用现有Bolt用户登录所需的步骤
首先,我们需要检测用户是否有现有的Bolt账户。
{
"has_bolt_account": true,
}
Bolt授权页面显示提示,要求用户输入通过电子邮件或手机发送的一次性密码(OTP)。用户输入OTP后,页面将重定向到包含查询参数中授权码的URL。然后可以将此授权码发送到商家服务器以交换OAuth访问令牌。这可以用于访问Bolt账户API并访问用户信息,例如存储的收货地址和信用卡。
WKWebView
对象,并将navigationDelegate
属性设置为符合WKNavigationDelegate
的对象。func webView(
_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
) {
guard let urlString = navigationAction.request.url?.absoluteString,
let url = URL(string: urlString) else {
return decisionHandler(.allow)
}
// NOTE: replace 'mobileapp' below with the prefix used for your app for Bolt login
if urlString.hasPrefix("mobileapp://"), let range = urlString.range(of: "authorization_code=") {
// We have a redirect with auth code in the query parameters
let index = urlString.distance(from: urlString.startIndex, to: range.upperBound)
let startIndex = urlString.index(urlString.startIndex, offsetBy: index)
let authCode = String(urlString[startIndex...])
decisionHandler(.allow)
// Pass authCode to backend to exchange for OAuth access token
// WebView can be dismissed at this point
} else if urlString == parent.url.absoluteString {
// This is the original URL request - open as normal
decisionHandler(.allow)
} else {
// Open other links in the system browser, e.g. Terms of Use, Privacy Policy
UIApplication.shared.open(url)
decisionHandler(.cancel)
}
}
let url = Bolt.Login.getAuthorizationURL(email: "[email protected]")!
webView.load(.init(url: url))
WKWebView
嵌入到UIViewController
中,或在SwiftUI中将它嵌入到UIViewRepresentable
中,并以全屏模态呈现。应使用全屏模态以确保有足够的空间显示键盘和网页中的任何错误消息。收到授权码后,将其传递给您的后端服务器,后端服务器可以使用Bolt的OAuthToken端点来交换访问令牌。该访问令牌可用于使用Bolt的Account API访问用户信息。
商家可以调用一个跟踪结算流程事件的分析方法。这是可选步骤,对于收集用户从结算到付款的购物旅程数据很有用。在结算流程的特定点可以跟踪几个预定义的事件。例如,当从购物车中点击结算按钮时进行的调用示例
Bolt.Analytics.log(.checkoutButtonTapped)
事件在Bolt.Analytics.Event
枚举中定义
事件名称 | 何时跟踪事件 |
---|---|
checkoutButtonTapped | 从购物车中点击结算按钮 |
checkoutLoadSuccess | 初始结算屏幕已完全加载 |
checkoutLoadError | 发生错误,阻止加载结算屏幕 |
shippingAddressEntryBegan | 用户开始输入收货地址信息 |
shippingDetailsFullyEntered | 用户已填写收货地址屏幕上的所有字段 |
shippingContinueButtonTapped | 用户点击收货地址屏幕上的按钮以继续结算过程 |
shippingMethodSelected | 用户选择或切换运输方式 |
boltAccountExistenceCheckRequested | 调用Bolt DetectAccount API以检查Bolt账户是否存在 |
boltAccountExistenceCheckReceived | Bolt DetectAccount API响应已接收 |
boltAccountCreationCheckboxTapped | 用户勾选Bolt账户创建复选框 |
boltLoginScreenDisplayed | 显示OTP提示以进行用户登录 |
boltLoginScreenClosed | 关闭OTP提示 |
boltLogOutButtonTapped | 用户点击按钮退出Bolt账户 |
paymentDetailsFullyEntered | 用户已填写支付屏幕上的所有字段或选择已保存的支付方式 |
paymentMethodSelected | 用户选择新的支付方式 |
paymentButtonTapped | 用户点击支付按钮 |
paymentSuccessful | 订单成功提交 |
paymentFailed | 订单在支付步骤失败 |
可以在所有事件或特定事件中包含自定义属性。这些属性是键值对,其中键是String
,值是符合Encodable
的任何类型。要添加到所有事件,请使用setCommonProperties
函数。例如,要添加表示用户是否已登录到商家账户的属性,请
Bolt.Analytics.setCommonProperties(["merchantLoggedIn": true])
要将属性添加到特定事件,请使用函数中的additionalProperties
参数log
Bolt.Analytics.log(.checkoutButtonTapped, ["merchantLoggedIn": true])
可以添加一个复选框到结算界面,以便用户在下订单时创建Bolt账户。为了在文本中添加图片,可以使用NSAttributedString
和NSTextAttachment
。提供了一个 SwiftUI 执行示例在CreateAccountView.swift。它使用UIViewRepresentable
包装一个被设置为包含文本和Bolt标志的属性的UILabel
。
示例文件夹包含一个示例应用,演示了使用信用卡标记器、Bolt用户登录、结账分析以及账户创建复选框的使用。