Figo 2.0.2

Figo 2.0.2

测试已测试
Lang语言 SwiftSwift
许可权 MIT
发布最新版本2017年7月
SwiftSwift版本3.0
SPM支持SPM

Christian König维护。



Figo 2.0.2

figo iOS SDK

此框架通过方便的Swift函数和类型包装fugo Connect API端点。

  • 我们不支持低于3.0的Swift版本
  • 支持iOS和macOS

客户端引用:http://cocoadocs.org/docsets/Figo

figo Connect API

figo Connect API允许您轻松访问您的银行账户,包括交易历史和提交支付。

有关figo和figo Connect的一般介绍,请访问我们的主页

尽管figo提供了一个提交电汇的接口,但支付处理并不是我们的重点。我们的主要兴趣是将人们的银行账户带入应用程序中,以提供更加顺畅和丰富的用户体验。

API参考:http://docs.figo.io

注册您的应用程序

想要访问figo Connect的应用程序必须事先注册我们。如果您想在您的应用程序中使用figo Connect,请发送电子邮件给我们。我们非常想了解您的想法,并将为您的应用程序生成一个客户端标识符和密钥,无需任何官僚程序。

网站:http://figo.io

设置

子模块

要添加figo作为git子模块,运行以下命令

$ git submodule add https://github.com/figo-connect/ios-sdk.git

将框架集成到您的项目中

  • 打开新文件夹,并将Figo.xcodeproj拖到您的应用程序的Xcode项目的项目导航器中。
  • 在项目导航器中选择Figo.xcodeproj,并验证部署目标是否与您的应用程序目标相匹配。
  • 在“嵌入的二进制文件”部分中将Figo.framework添加到您的目标中

使用方法

创建一个FigoClient实例后,您可以调用代表API端点的函数。这些函数将始终返回一个FigoResult<T>,其中T将是一个对应的类型,例如Account[Account][Transaction]

要使用该客户端,您需要一个客户端ID和密钥,有关详细信息,请参阅注册您的应用程序

import Figo
let figo = FigoClient(clientID: "xyz", clientSecret: "123")

浏览客户端参考文档以查看所有可用的功能,或者查看测试用例以了解API交互的更多示例。

创建用户

为了登录和使用fijo API,需要建立用户。(除支持的银行和服务端点外,这些端点不需要登录,因此不需要用户。)

let params = CreateUserParameters(name: "name", email: "email", password: "password", sendNewsletter: false, language: "de", affiliateUser: nil, affiliateClientID: nil)
figo.createNewFigoUser(params) { result in
    ...
}

登录

figo.loginWithUsername(username, password: password) { result in
    self.refreshToken = result.value
    ...
}

返回的刷新令牌可以由客户端存储以用于未来的登录,但只能存储在密钥链或SQLCipher数据库等安全加密存储中。

figo.loginWithRefreshToken(refreshToken) { result in
    ...
}

获取所有账户

figo.retrieveAccounts() { result in
    if let accounts = result.value {
        for account in accounts {
            ...
        }
    }
}

检查错误

figo.retrieveAccounts() { result in
    switch result {
    case .Success(let accounts):
        print("Recieved \(accounts.count) accounts")
        break
    case .Failure(let error):
        print(error.description)
        break
    }
}

日志记录

到目前为止,我们有一个非常简单的日志解决方案。默认情况下,日志是禁用的。如果您想启用日志记录,可以向FigoClient传递一个日志记录实例。

let figo = FigoClient(clientID: "xyz", clientSecret: "123", logger: ConsoleLogger())

默认情况下,ConsoleLogger仅记录调试和错误事件。如果您想查看请求头和响应,可以传递LogLevel参数。

let logger = ConsoleLogger(levels: [.verbose, .debug, .error])
let figo = FigoClient(clientID: "xyz", clientSecret: "123", logger: logger)

如果您想完全控制记录的内容或方式,可以提供一个符合Logger协议的自定义实例。

public protocol Logger {
    var debug: (String) -> Void { get }
    var verbose: (String) -> Void { get }
    var error: (String) -> Void { get }
}

端点

用户

此API的核心元素是fijo用户,该用户拥有银行账户并授权其他应用程序对这些账户进行选择性访问。此账户可以是免费账户或高级账户。尽管两者都支持相同的功能集,但免费账户只能通过创建它的应用程序使用,而高级账户可以用于所有集成fijo的应用程序。

createNewFigoUser(user: CreateUserParameters, _ completionHandler: (FigoResult<String>) -> Void)
retrieveCurrentUser(completionHandler: (FigoResult<User>) -> Void)
deleteCurrentUser(completionHandler: VoidCompletionHandler)

授权

fijo API使用OAuth 2进行身份验证,因此需要用户进行登录。

loginWithUsername(username: String, password: String, _ completionHandler: (FigoResult<String>) -> Void)
loginWithRefreshToken(refreshToken: String, _ completionHandler: VoidCompletionHandler)
revokeAccessToken(completionHandler: VoidCompletionHandler)
revokeRefreshToken(refreshToken: String, _ completionHandler: VoidCompletionHandler)

账户

银行账户是此API的核心域对象,也是许多其他资源的主要支柱。此API不仅将传统的银行账户视为账户,还包括如信用卡或Paypal等替代银行服务。在大多数点上,API不在这两者之间进行区分。

retrieveAccounts(completionHandler: (FigoResult<[Account]>) -> Void)
retrieveAccount(accountID: String, _ completionHandler: (FigoResult<Account>) -> Void)
removeStoredPinFromBankContact(bankID: String, _ completionHandler: VoidCompletionHandler)
setupNewBankAccount(parameters: CreateAccountParameters, progressHandler: ProgressUpdate? = nil, _ completionHandler: VoidCompletionHandler)

交易

每个银行账户都有一系列与其相关的交易。此列表的长度取决于银行和此账户已建立的时间。通常,每个交易提供的信息应大致类似于相应银行提供的打印或在线交易收据的内容。请注意,并非所有银行都提供相同详细的程度。

retrieveTransactions(parameters: RetrieveTransactionsParameters = RetrieveTransactionsParameters(), _ completionHandler: (FigoResult<TransactionListEnvelope>) -> Void)
retrieveTransactionsForAccount(accountID: String, parameters: RetrieveTransactionsParameters = RetrieveTransactionsParameters(), _ completionHandler: (FigoResult<TransactionListEnvelope>) -> Void)
retrieveTransaction(transactionID: String, _ completionHandler: (FigoResult<Transaction>) -> Void)

同步

由于银行通常不提供推送机制来分发交易更新,因此需要轮询这些更新,在此API中称为同步。在触发同步时,请确保已将银行联系人的PIN存储在fijo中,或者用户有输入该PIN的机会。

通常,银行账户每天同步一次。然而,同步可以被手动触发。

synchronize(parameters parameters: CreateSyncTaskParameters = CreateSyncTaskParameters(), progressHandler: ProgressUpdate? = nil, pinHandler: PinResponder, completionHandler: VoidCompletionHandler)

支持的银行和服务

要在figo设置新的银行账户,您需要为每个银行提供正确的凭证。这些设置可以从API获取,以及所有支持银行和类似银行服务的列表。

使用这些端点组不需要登录。

retrieveSupportedBanks(countryCode: String? = nil, _ completionHandler: (FigoResult<[SupportedBank]>) -> Void)
retrieveSupportedServices(countryCode: String? = nil, _ completionHandler: (FigoResult<[SupportedService]>) -> Void)
retrieveLoginSettings(countryCode: String, bankCode: String, _ completionHandler: (FigoResult<LoginSettings>) -> Void)

支付

除了检索银行账户信息外,该API还提供以账户持有人名义提交电汇的能力。

提交新支付通常是一个两阶段的过程:1. 创建和修改支付对象来编译支付的所有信息 2. 将该支付对象提交给银行。

虽然第一部分是与此API的正常实时交互,但第二部分使用任务处理系统,以便有更多时间,因为银行服务器有时响应较慢。此外,您还需要从银行获得一个TAN(交易号码)来验证提交。

retrievePaymentProposals(completionHandler: FigoResult<[PaymentProposal]> -> Void)
retrievePayments(completionHandler: FigoResult<[Payment]> -> Void)
retrievePaymentsForAccount(accountID: String, _ completionHandler: FigoResult<[Payment]> -> Void)
retrievePayment(paymentID: String, accountID: String, _ completionHandler: FigoResult<Payment> -> Void)
createPayment(parameters: CreatePaymentParameters, _ completionHandler: FigoResult<Payment> -> Void)
modifyPayment(payment: Payment, _ completionHandler: FigoResult<Payment> -> Void)
submitPayment(payment: Payment, tanSchemeID: String, pinHandler: PinResponder, challengeHandler: ChallengeResponder, _ completionHandler: VoidCompletionHandler)

证券

每个托管账户都有一个与其相关的证券列表。通常,每个证券提供的信息应该大致类似于从相应银行可获得的打印或在线托管列表的内容。请注意,并非所有银行都提供相同级别的详细信息。

retrieveSecurities(parameters: RetrieveSecuritiesParameters = RetrieveSecuritiesParameters(), _ completionHandler: (FigoResult<SecurityListEnvelope>) -> Void)
retrieveSecuritiesForAccount(accountID: String, parameters: RetrieveSecuritiesParameters = RetrieveSecuritiesParameters(), _ completionHandler: (FigoResult<SecurityListEnvelope>) -> Void)
retrieveSecurity(securityID: String, accountID: String, _ completionHandler: (FigoResult<Security>) -> Void)

自动转账指令

如果相应银行支持,银行账户可以与自动转账指令相关联。通常,每个自动转账指令提供的信息应该大致类似于从相应银行可获得的打印或在线自动转账指令声明的内容。请注意,并非所有银行都提供相同级别的详细信息。

retrieveStandingOrders(completionHandler: (FigoResult<[StandingOrder]>) -> Void)
retrieveStandingOrdersForAccount(accountID: String, _ completionHandler: (FigoResult<[StandingOrder]>) -> Void)
retrieveStandingOrder(standingOrderID: String, _ completionHandler: (FigoResult<StandingOrder>) -> Void)

信用

Figo框架使用以下第三方实用程序