OFX账单

之前一直给美国的一个银行生成OFX格式的账单,查了很长时间,可惜国内涉及到这的基本没有,国外也不是很全面,所以我将我生成的OFX格式的账单格式详细介绍一下,希望能给其他涉及到这个问题的朋友提供帮助。

       OFX是什么?OFX全称叫Open Financial Exchange(开放金融交换),它是一个在客户和金融机构之间进行金融数据和信息交换的广泛的框架标准。它允许金融机构直接连接用户。关于OFX的详细信息,可以登录OFX网站进行详细了解:www.ofx.net,从它的网站可以下载它的pdf文档说明,里面介绍的非常详细。

       根据我的了解,OFX就是一种用于银行提供给用户的包含用户财政信息的XML文件标准。用户可以从提供下载的银行网站下载OFX格式的银行账单,将它导入到财务管理软件进行查看,管理。

       我出于需要,需要生成一个OFX文件。我就对它的格式详细研究了一番。由于微软的Money软件和Intuit的Quicken软件用户群比较大,我主要以生成能够导入这两个软件的OFX文件和QFX文件。需要指出的是QFX文件也是基于OFX标准的。不过它是Intuit的Quicken理财软件所支持的账户文件。它和后缀为.ofx的文件只有很小的差别,后面会详细讲述。

      OFX文件格式,这是我所生成的能够正常导入到Money软件的一个OFX账单,OFX标准里包含很多信息,债务,保险,消费等等很多信息,我只根据我的工作需要生成包含消费信息的OFX账单。

--这是一个XML,所以应该包含xml声明。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

--下面是ofx声明,返回信息200意思是OK,版本是202等等,详细信息看一下ofx的PDF介绍。
<?OFX OFXHEADER="200" VERSION="202" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>

--ofx标签开始
<OFX>

--<SIGNONMSGSRSV1></SIGNONMSGSRSV1>标记的信息集是必须包含的,它包括了<SONRS><LANGUAGE>等标记,用来指明请求返回的状态是OK,支持的语言,处理的时间等必要信息。OFX文件是客户发出请求后响应返回的信息,这需要用户和金融机构建立连接,详细信息可以在http://www.fi.intuit.com/ofximplementation/wcsteps/http://www.microsoft.com/money/fi.mspx

<SIGNONMSGSRSV1>
<SONRS>

--请求返回的状态
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>

--响应时间
<DTSERVER></DTSERVER>
--语言

<LANGUAGE>ENG</LANGUAGE>
<DTACCTUP></DTACCTUP>
</SONRS>
</SIGNONMSGSRSV1>

--银行事务包括,消费,收入等信息
<BANKMSGSRSV1>
<STMTTRNRS>

-- 是唯一标记ID
<TRNUID>1</TRNUID>

--请求返回的状态
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>

--具体事务
<STMTRS>

--币种
<CURDEF>USD</CURDEF>

--银行账户信息
<BANKACCTFROM>
<BANKID>银行ID</BANKID>
<ACCTID>帐号</ACCTID>
<ACCTTYPE>帐户类型CHECKING</ACCTTYPE>
</BANKACCTFROM>

--银行事务列表
<BANKTRANLIST>

--开始时间结束时间
<DTSTART>20071129000000</DTSTART>
<DTEND>20071129000000</DTEND>

-- 之间是具体的银行信息集。包括消费,收入等等。
<STMTTRN>
<TRNTYPE>类型是消费PAYMENT</TRNTYPE>
<DTPOSTED>时间20060417000000</DTPOSTED>
<TRNAMT>金额-31.16</TRNAMT>
<FITID>3</FITID>
<CHECKNUM>1</CHECKNUM>

--<SIC> 美国标准工业代码,用来分类,具体情况根据Money和Quicken所支持的有一定的不同。
<SIC>5511</SIC>
<NAME></NAME>
<MEMO>备注信息:Description:MARATHON ASHLAND 01Q63   

  Location:CARBONDALE   ,IL</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20060417000000</DTPOSTED>
<TRNAMT>-9.73</TRNAMT>
<FITID>2</FITID>
<CHECKNUM>2</CHECKNUM>
<SIC>5511</SIC>
<NAME></NAME>
<MEMO>Description:ADVANCE AUTO PARTS #4811 

  Location:BLOOMINGTON  ,IL</MEMO>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>0.00</BALAMT>
<DTASOF>00000000</DTASOF>
</LEDGERBAL>
<AVAILBAL>
<BALAMT>0.00</BALAMT>
<DTASOF>00000000</DTASOF>
</AVAILBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>

 下面是完整的可以正常导入到Money的OFX账单文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?OFX OFXHEADER="200" VERSION="202" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER></DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
<DTACCTUP></DTACCTUP>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>StateFarm</BANKID>
<ACCTID>4707880000060783</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20071129000000</DTSTART>
<DTEND>20071129000000</DTEND>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20060417000000</DTPOSTED>
<TRNAMT>-31.16</TRNAMT>
<FITID>3</FITID>
<CHECKNUM>1</CHECKNUM>
<SIC>5511</SIC>
<NAME></NAME>
<MEMO>Description:MARATHON ASHLAND 01Q63   

  Location:CARBONDALE   ,IL</MEMO>
</STMTTRN>

</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>0.00</BALAMT>
<DTASOF>00000000</DTASOF>
</LEDGERBAL>
<AVAILBAL>
<BALAMT>0.00</BALAMT>
<DTASOF>00000000</DTASOF>
</AVAILBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示的意思是“标签长度必须是x”。这通常出现在编程中,当你尝试使用一个长度与所需长度不同的标签时,就会发生这个错误。这可能是由于数据格式错误或代码中的逻辑错误导致的。要解决这个问题,你需要检查标签的长度是否与代码中所需的长度匹配,并查找并修复代码中的任何错误。 ### 回答2: "label must be of length x" 的意思是标签的长度必须为 x。这句话通常用于指定标签的长度限制,标签可以是任何字符串或词语,但必须满足预定的长度要求。 这个限制可能是由于特定的应用或系统需求所引起的。比如,在某些编程语言中,变量或函数的标识符通常有长度限制,以保证代码的可读性和一致性。在数据库中,表的字段名也可能有长度限制,以确保数据的完整性和有效性。此外,在某些应用程序中,用户输入的标签长度限制可能是为了美观或实际需求考虑。 要满足"label must be of length x" 的要求,我们需要确保标签的长度恰好为 x。我们可以通过以下几种方法达到这个目的: 1. 检查标签的长度。首先,我们要计算标签的长度,以确保它与所需的长度 x 相匹配。如果标签的长度小于或大于 x,就不符合要求。我们可以使用编程语言中的内置函数或库来计算字符串的长度。 2. 裁剪标签的长度。如果标签的长度大于 x,我们可以截取标签的前 x 个字符,以确保它满足长度要求。或者,我们也可以截取标签的后 x 个字符,具体取决于应用的需求。 3. 扩展标签的长度。如果标签的长度小于 x,我们可以通过在标签末尾添加字符或重复字符来增加其长度,直到达到所需的长度为止。 总之,“label must be of length x” 要求我们确保标签的长度符合给定的长度要求。我们需要检查、裁剪或扩展标签的长度,以确保它与所需的长度 x 匹配。这样可以满足系统或应用对标签长度的限制。 ### 回答3: "label must be of length x" 是指标签的长度必须为 x。其中 x 可以是任何具体的数值。 当我们使用这样的要求时,通常是用于确保标签的长度达到预期。在许多情况下,标签长度的要求是为了满足特定的数据或系统的需求。 例如,如果有一个要求,要求标签长度为 10,那么 "label must be of length 10" 的含义是标签必须包含 10 个字符。这是为了保持所有标签的统一性,以便后续处理或展示它们。 这种要求可以应用于各种场景,比如在编程中的变量命名、数据库中的字段、产品标签等。通过限制标签的长度,可以确保数据的一致性和准确性,同时也可以帮助人们更好地理解和使用相关信息。 总之,"label must be of length x" 的含义是要求标签的长度必须为 x,这种要求在不同的领域和场景中都有重要的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值