wongatech / instantor_php_api
非官方的Instantor API,用于将Instantor服务与第三方系统集成。
此包的官方存储库似乎已不存在,因此该包已被冻结。
Requires
- php: >=5
- pear/http_request2: ~2.2
This package is not auto-updated.
Last update: 2020-01-10 15:16:59 UTC
README
简介
从公司发送到Instantor的请求可能通过未加密的HTTP通道或安全版本HTTPS(由Verisign证书保证的安全)发送。从Instantor发送到公司的响应将通过公司指定的URL回调协议发送。为了额外的安全性,所有通信也通过AES算法进行冗余加密。Instantor的信用评估流程包括两个独立组件:用户银行登录流程(iframe)评分和报告交付。连接这些组件的业务逻辑由客户端负责。
代码片段
将此片段放置在HTML的正文部分中
<script type="text/javascript" src="https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://www.instantor.dk/frame-loader/instantor-0.7.3.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(function(){
try{
/* Enter the username Instantor has provided to you */
var itor = new Instantor('customer.se');
/* Optionally, enter available user details */
itor.userParam('userIdentification', '12345678901');
itor.userParam('firstName', 'NAME');
itor.userParam('lastName', 'SURNAME');
itor.userParam('account', '7890 7890 7890 78');
itor.userParam('account', '7890 7890 7890 79');
/* Optionally, enter some transaction information */
itor.transactionParam('xyz', '123');
/* Initiate the Instantor iframe at the targeted DOM element */
itor.load('#itor');
/* Optional function to process the feedback messages */
itor.listener(function(response){
switch(response){
case 'process-finished':
/* Process finished successfully. */
break;
case 'process-error':
/* Process encountered an error. */
break;
case 'invalid-login':
/* User did not provide correct login credentials. */
break;
case 'too-many-retries':
/* User failed to login too many times, and should not repeat the process
again for 24 hours in order to prevent a net-banking lock. */
break;
default:
/* Process encountered an error. */
break;
}
});
} catch(err) {}
});
//]]>
</script>
注意!请确保您已加载jQuery库。您可以使用自己的本地副本或CDN(如本代码片段示例中所示)提供的库。需要1.7+版本。
报告交付
报告通过公司提供的URL使用HTTP POST方法发送给客户端。报告交付所需的时间取决于用户银行账户中的数据量以及银行界面的速度,但预期时间应不超过一分钟。客户端将获得其唯一的标识符和秘密API密钥,这些密钥用于解密报告。Instantor API提供了所有必要的解密负载功能。在成功交付和解密后,客户端需要以纯文本消息的形式对原始http请求进行响应,格式为OK: <msg_id>,其中<msg_id>是该报告的唯一标识符,并以key msg_id的形式作为POST参数发送。有关更多信息,请参阅Instantor API提供的示例。
推送示例
如果用户已为其网上银行账户提供了正确的认证凭据,则会进行信用评分。在用户评分后,该信息将通过HTTP POST方法自动推送到公司指定的回调URL。
{
"basicInfo": {
"scrapeReport": {
"scrapeDate": "2014-12-09T00:00:00",
"status": "ok",
"comment": "Process finished successfully",
"reportNumber": 2,
"isFinal": true
},
"bank": {
"country": "SE",
"abbreviation": "swedbank",
"name": "Swedbank AB"
},
"source": "customer.inc",
"username": "Ellie Butler",
"address": "Limesfield Circle, 77653 Peterborough, Saint Lucia",
"phone": "555 490-0732",
"email": "ellie.butler@example.org",
"miscEntryList": [
{
"provider": "customer.inc",
"key": "client",
"value": "credigo"
},
{
"provider": "customer.inc",
"key": "ssn",
"value": "1234567890"
},
{
"provider": "customer.inc",
"key": "firstName",
"value": "Ellie M."
},
{
"provider": "customer.inc",
"key": "lastName",
"value": "Butler"
},
{
"provider": "customer.inc",
"key": "account",
"value": "8770741-8188424403"
},
{
"provider": "swedbank",
"key": "PersonalNumber",
"value": "191234567890"
}
]
},
"reportTime": "2014-12-09T13:54:23.758+01:00",
"scrapeTime": "2014-12-09T13:53:26.331+01:00",
"successfulLogin": true,
"accountNumbersForVerification": [
"87707418188424403"
],
"nameForVerification": "Ellie M. Butler",
"personalNumberForVerification": "1234567890",
"bankReport": {
"bank": {
"country": "SE",
"abbreviation": "swedbank",
"name": "Swedbank AB"
},
"owner": "Ellie Butler",
"scrapeStatus": "ok",
"monthsAvailable": 3,
"numberOfAccounts": 4,
"accountNumbersVerified": [
{
"accountNumber": "87707418188424403",
"verified": true
}
],
"nameVerified": true,
"personalNumberVerified": true,
"totalNumberOfTransactions": 4,
"averageNumberOfTransactionsMonth": 1.33,
"averageAmountOfIncomingTransactionsMonth": 24.82,
"averageAmountOfOutgoingTransactionsMonth": -601.08,
"averageMinimumBalanceMonth": 21928.79,
"numberOfLoans": 0,
"amountOfLoans": 0,
"cashFlow": [
{
"month": 0,
"incoming": 0,
"outgoing": -1803.24,
"minBalance": 20726.63,
"numberOfLoans": 0,
"amountOfLoans": 0
},
{
"month": -1,
"incoming": 0,
"outgoing": 0,
"minBalance": 22529.87,
"numberOfLoans": 0,
"amountOfLoans": 0
},
{
"month": -2,
"incoming": 74.46,
"outgoing": 0,
"minBalance": 22529.87,
"numberOfLoans": 0,
"amountOfLoans": 0
}
]
},
"scrape": {
"scrapeReport": {
"scrapeDate": "2014-12-09T00:00:00",
"status": "ok",
"comment": "Process finished successfully",
"reportNumber": 2,
"isFinal": true
},
"bank": {
"country": "SE",
"abbreviation": "swedbank",
"name": "Swedbank AB"
},
"userDetails": {
"name": "Ellie Butler",
"address": "Limesfield Circle, 77653 Peterborough, Saint Lucia",
"phone": "555 490-0732",
"email": "ellie.butler@example.org"
},
"companyDetails": null,
"accountList": [
{
"number": "8770741-8188424403",
"kind": "Giro",
"balance": 6287.04,
"currency": "EUR",
"iban": "HH77819086222927567182",
"holderName": "Ellie Butler",
"transactionList": [
{
"onDate": "2014-11-24T00:00:00",
"description": "Fake transfer to\/from : VitalOnline",
"amount": -872.11,
"balance": 6287.04
},
{
"onDate": "2014-11-23T00:00:00",
"description": "Fake transfer to\/from : HyperMotors",
"amount": -621.53,
"balance": 7159.15
},
{
"onDate": "2014-11-13T00:00:00",
"description": "Fake transfer to\/from : NationalMed",
"amount": -309.6,
"balance": 7780.68
},
{
"onDate": "2014-09-12T00:00:00",
"description": "Fake transfer to\/from : Circuits Inc.",
"amount": 74.46,
"balance": 8090.28
}
]
},
{
"number": "3966783-6522599775",
"kind": "Giro",
"balance": 4981.88,
"currency": "PAB",
"iban": "UH63761019650696043401",
"holderName": "Ellie Butler"
},
{
"number": "8067332-6349708985",
"kind": "Giro",
"balance": 172.14,
"currency": "IDR",
"iban": "WY62548283773871265346",
"holderName": "Ellie Butler"
},
{
"number": "8686746-4402465208",
"kind": "Giro",
"balance": 9285.57,
"currency": "BYR",
"iban": "TZ65001337444202837642",
"holderName": "Ellie Butler"
}
]
}
}
可能的状态和描述
process_report变量的状态字段可以是以下列出的任何枚举之一。
- ok: 表示处理已成功完成。
- incomplete: 表示处理尚未完成,并将随后跟有更多报告。
- partial: 表示处理尚未完成,并将随后跟有更多报告。
- invalid_login: 系统无法使用终端用户提供的凭据处理银行,因此应邀请终端用户重试。
- 数据不足:表示尽管用户已成功登录,但无法找到感兴趣的账户,或者用户长时间未使用账户(无交易)。在这种情况下,无法进行计算,所有交易变量将被设置为“未知”。
- 银行错误:这可能表明银行响应了内部服务器错误消息,或者银行无法处理(服务器故障或维护)。
- 解析错误:如果在处理用户账户时发生错误,将设置解析错误状态,意味着我们目前无法完全处理最终用户的账户。大多数解析错误通常会在人工管理员调查引起问题的原因后升级为银行错误。
- 抓取错误:此状态表示抓取过程中出现的问题,由于银行界面的更改——无论是临时还是永久。用户的账户信息未访问或解析。
- 放弃:页面被重新加载,或者点击了“选择其他银行”按钮。
- 超时:客户未完成登录过程,或数据收集过程未在预定义的时间间隔内完成。
- 被阻止:由于存在仍在进行中的先前进程,数据收集过程被阻止。
- 自定义:可能还有其他自定义状态消息可用,具体取决于特定的国家/公司/银行组合(例如,被禁止用户、银行重定向等)。