ForageSDK
ForageSDK 在您的电子商务应用中处理电子福利转账 (EBT) 付款。它提供用于收集和标记 EBT 持卡人 PAN 以及接受 EBT 持卡人 PIN 以执行余额检查和处理付款的安全用户界面。
目录
集成
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要将 ForageSDK 集成到您的 Xcode 项目中,请使用 CocoaPods 在您的 Podfile
中指定它。
pod 'ForageSDK', '~> 0.1.1'
Swift Package Manager
Swift Package Manager 是用于管理 Swift 代码分发的一个工具。它与 Swift 构建系统集成,以自动化下载、编译和链接依赖项的过程。
我们建议使用带有 Swift 工具版本 5.3 或更高版本的 Xcode。较早的 Xcode 版本不支持带有资源的 Swift 包。要检查您的当前 Swift 工具版本,请在终端中运行
xcrun swift -version
遵循官方 Apple SPM 指南 说明 了解更多详细信息。
步骤
添加包
要使用 Swift Package Manager,在 Xcode 中添加 https://github.com/teamforage/forage-ios-sdk 依赖项,并将 依赖关系规则
设置为分支,分支输入 main
。
单击 添加包
按钮。然后,在下一个屏幕上,选择 ForageSDK
包,并通过单击 添加包
完成操作。
使用
将 SDK 导入您的文件
import ForageSDK
创建 ForageSDK 实例
要初始化 ForageSDK 实例,您需要提供环境。
ForageSDK.setup(
ForageSDK.Config(environment: .sandbox)
)
Forage UI 组件
ForageSDK 提供了两个 UI 组件,用于安全地与 Forage API 通信。
ForagePANTextField
一个安全地接受 PAN 号码的组件。该字段根据 StateIIN 列表 验证 PAN 号码
private let panNumberTextField: ForagePANTextField = {
let tf = ForagePANTextField()
tf.placeholder = "PAN Number"
return tf
}()
ForagePANTextField 使用一个代理 ForagePANTextFieldDelegate
来将更新传递到客户端。
panNumberTextField.delegate = self
public protocol ForagePANTextFieldDelegate: AnyObject {
func panNumberStatus(_ view: UIView, cardStatus: CardStatus)
}
public enum CardStatus: String {
case valid
case invalid
case identifying
}
要发送 PAN 号码,我们可以使用 ForageSDK 执行请求。
提取卡号
// Signature
func tokenizeEBTCard(
bearerToken: String,
merchantAccount: String,
customerID: String,
completion: @escaping (Result<PaymentMethodModel, Error>) -> Void
)
// Usage
ForageSDK.shared.tokenizeEBTCard(
bearerToken: bearerToken,
merchantAccount: merchantID,
// NOTE: The following line is for testing purposes only and should not be used in production.
// Please replace this line with a real hashed customer ID value.
customerID: UUID.init().uuidString) { result in
// handle callback here
}
ForagePINTextField
一个组件,用于安全地接收EBT PIN以请求余额和支付捕获。它只接受4位数字。
private let pinNumberTextField: ForagePINTextField = {
let tf = ForagePINTextField()
tf.placeholder = "PIN Field"
tf.isSecureTextEntry = true
tf.pinType = .balance
return tf
}()
为了在组件中识别我们正在处理的PIN类型,您可以使用pinType
属性。我们支持以下类型
public enum PinType: String {
case snap
case nonSnap
case balance
}
ForagePINTextField使用一个代理ForagePINTextFieldDelegate
将更新传达给客户端。
pinNumberTextField.delegate = self
public protocol ForagePINTextFieldDelegate: AnyObject {
func pinStatus(_ view: UIView, isValid: Bool, pinType: PinType)
}
要发送PIN号码,我们可以使用ForageSDK进行请求。
余额
// Signature
func checkBalance(
bearerToken: String,
merchantAccount: String,
paymentMethodReference: String,
foragePinTextEdit: ForagePINTextField,
completion: @escaping (Result<BalanceModel, Error>) -> Void
)
// Usage
ForageSDK.shared.checkBalance(
bearerToken: bearerToken,
merchantAccount: merchantID,
paymentMethodReference: paymentMethodReference,
foragePinTextEdit: pinNumberTextField) { result in
// handle callback here
}
捕获支付
// Signature
func capturePayment(
bearerToken: String,
merchantAccount: String,
paymentReference: String,
foragePinTextEdit: ForagePINTextField,
completion: @escaping (Result<PaymentModel, Error>) -> Void
)
// Usage
ForageSDK.shared.capturePayment(
bearerToken: bearerToken,
merchantAccount: merchantID,
paymentReference: paymentReference,
foragePinTextEdit: pinNumberTextField) { result in
// handle callback here
}
演示应用程序
用于在iOS上使用我们组件的演示应用程序在这里[链接]。
要运行应用程序,请
- 克隆此存储库,然后在Sample文件夹中打开Sample项目。
- 请确认你有有效的 Forage API FNS 编号,该编号可在仪表板上找到(沙箱 | 生产)。
- 创建具有 pinpad_only 扩展名的载体令牌。
- 运行 Sample app 项目,并在第一屏幕上提供您的 FNS 编号和载体令牌。
- 这些凭据将被传递到 Sample app 内部的所有 SDK 调用中。
依赖项
- iOS 10+
- Swift 5
- 第三方库