银行API/协议

42

是否有任何银行通过任何形式的API提供个人账户的数据源? 我基本上是想在不登录他们的网站的情况下检查账户余额。

我记得曾经阅读过一个通用银行协议……也许mint.com使用它来访问帐户? mint.com与每个银行有特殊关系,还是我可以利用他们的方法?

编辑:根据我的要求,我只对访问自己的财务数据感兴趣。

8个回答

29

3
大多数英国银行不提供API,因此这在英国并不常用。 - badbod99
3
好的,那英国银行就不能和我们一起玩了! - user279521

22

API接入

您需要与每个机构核实其是否提供用于直接访问的API。一些机构将提供通过拨号线路访问的服务,而其他机构则提供更现代的基于IP的服务。每个机构都可能要求您进行注册并支付费用。

更简单的方法是要求用户从银行下载其对账单,并将其导入到您的应用程序中。大多数在线银行系统都提供此功能。

格式

无论哪种方式,银行支持几种格式(取自此处)。

  • OFX(开放金融交换)
  • QIF(Quicken互操作格式)
  • CSV(逗号分隔值)

您可能会看到OFX被称为Quickbooks、Microsoft Money 2005或Sage Line 50。QIF有时被称为Quicken 98或2000,或Microsoft Money 2003。

CSV格式将针对每个机构进行专门开发的解析逻辑。

谁使用什么格式

支持OFX或QIF格式的英国银行包括:

  • Abbey(QIF,但不包括Abbey Business)
  • Alliance and Leicester(OFX和QIF)
  • Barclays(OFX)
  • Clydesdale(QIF)
  • Coutts&Co(OFX和QIF)
  • First Direct(QIF)
  • Halifax(OFX和QIF)
  • HSBC(OFX)
  • Lloyds(QIF)
  • NatWest(OFX)
  • Nationwide(OFX)
  • Royal Bank of Scotland(OFX和QIF)
  • Tesco(OFX和QIF)
  • Yorkshire(QIF)

1
您可以在以下链接中找到各个银行OFX文件的访问URL:https://ofx-cqat-filist.intuit.com/qbm1800/data/fidir.txt 和 http://wiki.gnucash.org/wiki/OFX_Direct_Connect_Bank_Settings。您需要发送一个特殊格式的请求。有一个名为ofx-ba.py的Python实用程序,位于http://microsoftmoneyoffline.wordpress.com/2010/02/06/discover-downloads-work-now/,它会向您展示如何格式化请求。 - Rehan

14

通过编写一个基础的屏幕爬虫,可以从你的Mint.com账户中提取交易记录。当然,这意味着你必须在那里设置一个账户并让他们为你完成一些脏活。

CasperJS是一个很棒的工具,使得这项任务变得相当简单,你需要安装Casper和它所构建的框架PhantomJS。

var casper = require('casper').create();

casper.start('https://wwws.mint.com/login.event', function() {
    this.fill('form#form-login', {
        username: 'mintusername',
        password: 'mintpassword'
    }, true);
}).then(function() {
    this.echo('Downloading transaction history...')
    this.download('https://wwws.mint.com/transactionDownload.event', '/path/to/save/transactions.csv');
});

casper.run(function() {
    this.echo('Done.').exit();
});

这个脚本登录到你的Mint账户,下载你的交易记录(以CSV文件形式),保存到指定位置。从那里开始,你可以对数据进行任何想做的事情。当然,这个脚本可以扩展以执行更高级的操作,或过滤它所拉取的交易,但作为最佳实践,我建议保持屏幕抓取尽可能简单,并在程序端添加逻辑。

你可以使用Mac OS X的launchd或大多数Linux版本的cron来定期运行此脚本。


1
对于一个特别关于个人财务的问题,这可能是最好的解决方案。实际上,我会自己去做。感谢你向我展示了CasperJS。 - kipple
1
使用 https://wwws.mint.com/transactionDownload.event?startDate=07/01/2013&endDate=06/01/2013 来按日期筛选。我相信还有其他参数。 - kipple
你知道有没有类似的解决方案可以在移动设备上运行吗?(例如由像Casper或Watir这样的东西驱动的Webview或PhantomJS)。我已经谷歌过了,很确定没有,但还是想问一下。 - Danyal Aytekin
2
哎呀,屏幕抓取。屏幕抓取一个已经使用屏幕抓取的产品! - geedubb
1
@geedubb,同意。虽然它不太美观,但使用屏幕抓取有其原因,而我宁愿从一个源头抓取,也不想可能需要抓取数十个源头! - Cecchi

4

2
链接是404错误。不要相信Intuit说的任何话。他们的财务管理软件与桌面时代有着固有和不可分割的联系。他们收购了Mint.com并使整个项目停滞不前。他们像微软、棱镜或希特勒一样邪恶。 - grgry
2
网站提示:每月最低循环费用:$1,000.00 - iDev247

0

0

0
你可以尝试使用Swift(参见消息类型),但这不是你可以随便设置的东西,你需要与你想要合作的每个机构进行沟通。

1
Swift比较严肃,需要加入Swift会员(费用昂贵),需要处理大量的安全审批手续等等! - badbod99
我认为这是唯一的选择,如果你想获得一个不属于你的账户的余额 - 毕竟这不是你想向所有人公开的数据类型。 - Jon Freedman

0

有一个标准协议叫做OFX(ofx.net),可能符合您的需求。Microsoft Money和Quicken都使用它来更新数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接