该软件包帮助商家收集设备数据,无论是直接集成(独立)该软件包,还是使用 Checkout 的 Frames iOS 软件包。
添加 Risk
作为软件包依赖项 - 请参阅 安装指南,了解如何通过 SPM 或 Cocoapods 在您的 iOS 应用程序中添加我们的 SDK。
从 Checkout 控制面板 获取公共 API 密钥。
使用公共 API 密钥和环境 Risk.init(config: yourConfig)
尽早初始化 Risk 软件包。
public struct RiskConfig {
let publicKey: String
let environment: RiskEnvironment
let framesMode: Bool
public init(publicKey: String, environment: RiskEnvironment, framesMode: Bool = false) {
self.publicKey = publicKey
self.environment = environment
self.framesMode = framesMode
}
}
public enum RiskEnvironment {
case qa
case sandbox
case production
}
使用 configure
完成您的设置,然后在闭包中使用 publishData
方法发布设备数据。
public struct PublishRiskData {
public let deviceSessionId: String
}
public enum RiskError: LocalizedError, Equatable {
case configuration(Configuration)
case publish(Publish)
}
public enum RiskError {
case configuration(Configuration)
case publish(Publish)
}
public extension RiskError {
enum Configuration: LocalizedError {
case integrationDisabled
case couldNotRetrieveConfiguration
public var errorDescription: String? {
switch self {
case .integrationDisabled:
return "Integration disabled"
case .couldNotRetrieveConfiguration:
return "Error retrieving configuration"
}
}
}
enum Publish: LocalizedError {
case couldNotPublishRiskData
case couldNotPersisRiskData
case fingerprintServiceIsNotConfigured
public var errorDescription: String? {
switch self {
case .couldNotPublishRiskData:
return "Error publishing risk data"
case .couldNotPersisRiskData:
return "Error persisting risk data"
case .fingerprintServiceIsNotConfigured:
return "Fingerprint service is not configured. Please call configure() method first."
}
}
}
}
请参阅下面的示例
import Risk
// Example usage of package
let yourConfig = RiskConfig(publicKey: "pk_qa_xxx", environment: RiskEnvironment.qa)
self.riskSDK = Risk.init(config: yourConfig)
self.riskSDK.configure { configurationResult in
switch configurationResult {
case .failure(let errorResponse):
print(errorResponse.localizedDescription)
case .success():
self.riskSDK.publishData { result in
switch result {
case .success(let response):
print(response.deviceSessionId)
case .failure(let errorResponse):
print(errorResponse.localizedDescription)
}
}
}
}
除了通过 init
方法实例化之外,该软件包还公开了两种方法
configure
- 此方法在初始化后完成您的设置。 调用该方法时,将对 Checkout 的内部 API 进行初步检查,以检索收集设备数据所需的其他配置。如果检查失败或商家被禁用,将返回并记录错误。您也可以在开发模式下在 Xcode 控制台中查看更多信息。
public func configure(completion: @escaping (Result<Void, RiskError.Configuration>) -> Void) {
...
}
publishData
- 用于发布和持久化设备数据。
public func publishData (cardToken: String? = nil, completion: @escaping (Result<PublishRiskData, RiskError.Publish>) -> Void) {
...
}
我们的示例应用程序展示了我们预构建的 UI 以及我们的 SDK 如何工作。 一旦您克隆了存储库(无论是直接通过 git 还是通过建议的集成方法),您就可以在本地运行它。
我们的演示应用程序还测试了支持的集成方法(SPM,Cocoapods),因此,如果您在这些方面有任何问题,它们应该提供一个可行的示例。 您将在存储库的根目录中找到它们,位于各自的文件夹中
在此处查找我们的 CHANGELOG.md 这里。
在此处查找我们开始贡献的指南 这里。
Risk iOS 在 MIT 许可证下发布。 查看 LICENSE 了解详情。