ForageSDK 4.4.9

ForageSDK 4.4.9

Rob GormiskyFilipe FernandesDanny LeiserDanilo Joksimovic 维护。



 
依赖项
VGSCollectSDK= 1.15.3
LaunchDarkly= 9.6.1
BasisTheoryElements= 4.1.2
 

ForageSDK 4.4.9

  • By
  • Rob Gormisky

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 指南 说明 了解更多详细信息。

步骤

添加包

Screen Shot 2022-10-31 at 09 54 23

要使用 Swift Package Manager,在 Xcode 中添加 https://github.com/teamforage/forage-ios-sdk 依赖项,并将 依赖关系规则 设置为分支,分支输入 main

Screen Shot 2022-10-31 at 09 56 50

单击 添加包 按钮。然后,在下一个屏幕上,选择 ForageSDK 包,并通过单击 添加包 完成操作。

Screen Shot 2022-10-31 at 10 00 57

使用

将 SDK 导入您的文件

import ForageSDK

创建 ForageSDK 实例

要初始化 ForageSDK 实例,您需要提供环境。

ForageSDK.setup(
    ForageSDK.Config(environment: .sandbox)
)

Forage UI 组件

ForageSDK 提供了两个 UI 组件,用于安全地与 Forage API 通信。

ForagePANTextField

一个安全地接受 PAN 号码的组件。该字段根据 StateIIN 列表 验证 PAN 号码

Screen Shot 2022-10-31 at 10 19 27

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位数字。

Screen Shot 2022-10-31 at 10 21 32

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上使用我们组件的演示应用程序在这里[链接]

要运行应用程序,请

  1. 克隆此存储库,然后在Sample文件夹中打开Sample项目。
  2. 请确认你有有效的 Forage API FNS 编号,该编号可在仪表板上找到(沙箱 | 生产)。
  3. 创建具有 pinpad_only 扩展名的载体令牌
  4. 运行 Sample app 项目,并在第一屏幕上提供您的 FNS 编号和载体令牌。
  5. 这些凭据将被传递到 Sample app 内部的所有 SDK 调用中。

依赖项