SaltEdge-iOS-Swift 3.5.2

SaltEdge-iOS-Swift 3.5.2

Vlad SomovConstantin ChelbanDaniel Marcenco维护。



  • SaltEdge提供

CocoaPods Compatible Twitter URL

Salt Egde Logo

iOS示例应用

此应用程序是一个概念验证,旨在演示(模拟)Salt Edge API与移动客户端之间的通信。

要求

  • iOS 12.0+ / macOS 10.13+
  • Swift 5+

Salt Edge iOS / macOS Swift SDK

一些类可以帮助您从iOS / macOS应用程序中与Salt Edge API交互。最新的SDK版本(3+)支持Salt Edge API v5。

需求

  • iOS 10.0+ / macOS 10.13+
  • Swift 5+

通过 CocoaPods 安装

将 pod 添加到您的 Podfile

用于 Salt Edge API v5

pod 'SaltEdge-iOS-Swift', '~> 3.5.0'

用于 Salt Edge API v4 (已弃用)

pod 'SaltEdge-iOS-Swift', '~> 1.1.2'

安装 pod

$ pod install

将 SDK 导入到您的应用

import SaltEdge

初始化 SDK

替换 appIdappSecret

要设置 Salt Edge API,在 AppDelegate.swift 中调用

SERequestManager.shared.set(appId: appId, appSecret: appSecret)

注意:您可以在 秘密 页面上找到您的 appIdappSecret(仅适用于 Salt Edge API)。customerId 是新客户的唯一标识符。

SERequestManager

一个用于与 Salt Edge API 交互和查询的类,具有方便的方法来获取实体(连接、交易、账户等),请求通过 SEWebView 创建、重新连接和刷新连接的连接 URL,以及通过 REST API 创建连接。

通过 SERequestManager 成功请求返回 SEResponse,其中包含 datameta

失败的请求返回标准的 Swift Error

使用管理器与提供的 API 交互

let connectionParams = SEConnectionParams(
    consent: SEConsent(scopes: ["account_details", "transactions_details"]),
    countryCode: "XF",
    providerCode: "fakebank_simple_xf",
    credentials: ["login": "username", "password": "secret"]
)
SERequestManager.shared.createConnection(with: connectionParams) { response in
    switch response {
    case .success(let value):
        // value.data is a valid SEConnection
    case .failure(let error):
        // Handle error
    }
}

获取客户密钥

要访问 Salt Edge SDK 功能,需要获取客户密钥。要获取客户密钥,您可以通过 SERequestManager 发送请求。

请求成功后,您应将收到的客户密钥与请求管理器关联

SERequestManager.shared.set(customerSecret: "received-customer-secret")

注意:您必须在存储中保存收到的客户密钥(例如 UserDefaults),并且对于 Salt Edge SDK 的所有未来使用,您应关联存储中的客户密钥。

示例

let defaults = UserDefaults.standard
if let secret = defaults.string(forKey: "customerSecret") {
    SERequestManager.shared.set(customerSecret: secret)
} else {
    let params = SECustomerParams(identifier: "your-customer-unique-id")
    SERequestManager.shared.createCustomer(with: params) { response in
        switch response {
        case .success(let value):
            // Save customer secret to your storage and then link it with API manager
            defaults.set(value.data.secret, forKey: "customerSecret")

            SERequestManager.shared.set(customerSecret: value.data.secret)
            case .failure(let error):
            // Handle error
        }
    }
}

SEWebView

用于在iOS应用程序中使用Salt Edge Connect的小型WKWebView子类。

示例

使视图控制器符合SEWebViewDelegate协议。

class MyViewController : UIViewController, SEWebViewDelegate {
  // ... snip ...
}

实例化一个SEWebView并将其添加到控制器中

let connectWebView = SEWebView(frame: self.view.bounds)
connectWebView.stateDelegate = self
self.view.addSubview(connectWebView)

在控制器中实现SEWebViewDelegate方法

// ... snip ...

func webView(_ webView: SEWebView, didReceiveCallbackWithResponse response: SEConnectResponse) {
    switch response.stage {
    case .success:
	    // Connection successfully connected
    case .fetching:
	    // Connection is fetching. You can safe connection secret if it is present.
    case .error:
	    // Handle error
    }
}

func webView(_ webView: SEWebView, didReceiveCallbackWithError error: Error) {
	// Handle error
}

将Salt Edge Connect URL加载到WebView中,并继续操作

SERequestManager.shared.createConnectSession(params: connectSessionParams) { response in
	switch response {
	case .success(let value):
		if let url = URL(string: value.data.connectUrl) {
		    self.webView.load(URLRequest(url: url))
		}
	case .failure(let error):
		// Handle error
	}
}

模型

提供了一些用于序列化API响应中接收到的对象的模型。它们代表提供者、连接、账户、交易、提供者字段及其选项。每次您请求返回这些类型之一的数据时,它们都将序列化为Swift结构。例如,getAllTransactions(for connectionSecret: String, params: SETransactionParams? = nil, completion: SEHTTPResponse<[SETransaction]>)方法有一个包含datametaSEResponse,在它的成功回调中,data[SETransaction]

组件内的模型

  • SEProvider
  • SEConnection
  • SEAccount
  • SETransaction
  • SEConnectSessionResponse
  • SEAttempt
  • SEConsent
  • SECountry
  • SECustomer
  • SEStage
  • SEError
  • SEProviderField
  • SEProviderFieldOption

关于上述模型的其他补充说明,这些说明不包括在源文档中,您可以免费访问 Salt Edge API 参考文档

其他模型

一些模型具有类型为 [String: Any]extra 字段。如果您需要获取任意字段,可以执行以下操作:

let account = SEAccount()

guard let accountExtra = account.extra else { return }

let anyValue = accountExtra["string_key"]

一些键值对有预定义的扩展

let transaction = SETransaction()

guard let transactionExtra = transaction.extra else { return }

let possibleDuplicate: Bool = transactionExtra.possibleDuplicate

文档

所有组件都有文档。使用快速文档(Alt+点击)可以快速查看方法或属性的文档。

运行演示

要运行包含的演示应用程序,必须使用您的 App ID、App Secret 并选择所需的 API。

要设置 Salt Edge API,调用:

SERequestManager.shared.set(appId: appId, appSecret: appSecret)

将常数 appIdappSecretcustomerId 设置为您的 App ID 和相应的 App Secret,可以在 AppDelegate.swift:49-51 中找到。

版本

当前 SDK 的版本是 3.5.0,支持 Salt Edge API 的最新可用版本。API 中的任何向下不兼容的更改将导致 SDK 发生变化。

自版本 1.1.0 以来

SDK 已迁移到 HTTP 公开密钥固定 (HPKP)

变更日志

请参阅 变更日志 文件。

许可协议

请参阅 许可协议 文件。

参考信息

  1. 如何...说明
  2. Salt Edge API 通用
  3. Salt Edge 客户端仪表板
  4. Salt Edge API v5 参考

如需更多信息,请随时联系我们

版权所有 © 2014 Salt Edge Inc. https://www.saltedge.com