测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可权 | MIT |
发布最新版本 | 2017年7月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由Christian König维护。
此框架通过方便的Swift函数和类型包装fugo Connect API端点。
客户端引用:http://cocoadocs.org/docsets/Figo
figo Connect API允许您轻松访问您的银行账户,包括交易历史和提交支付。
有关figo和figo Connect的一般介绍,请访问我们的主页。
尽管figo提供了一个提交电汇的接口,但支付处理并不是我们的重点。我们的主要兴趣是将人们的银行账户带入应用程序中,以提供更加顺畅和丰富的用户体验。
API参考:http://docs.figo.io
想要访问figo Connect的应用程序必须事先注册我们。如果您想在您的应用程序中使用figo Connect,请发送电子邮件给我们。我们非常想了解您的想法,并将为您的应用程序生成一个客户端标识符和密钥,无需任何官僚程序。
要添加figo作为git子模块,运行以下命令
$ git submodule add https://github.com/figo-connect/ios-sdk.git
将框架集成到您的项目中
创建一个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框架使用以下第三方实用程序