3

我需要为我正在处理的 .Net C# 项目创建一个 Check 21/Image Cash Letter(X9.37-2003),但我做这件事的时间很糟糕。有谁知道我在哪里可以获得一些示例代码或库或其他东西?这似乎是银行发送扫描支票的一种非常流行的方式,因此似乎应该有很多信息可供使用。

我看过 X9.org 但他们似乎没有我需要的东西。我有一个规范文档,告诉我文件需要看起来像什么,但它们似乎是某种编码,这导致了我的问题。

任何对此有帮助的东西都会非常有帮助,尤其是代码示例或库。谢谢你。

4

2 回答 2

7

在此处输入图像描述

网络上并没有很多像样的示例代码用于处理 x9 文件(尤其是对于编写格式良好的 x9 文件)。

为了编写有效的 x9.37(或 x9.100-187)文件,您必须对 ANSI 规范有非常全面的了解。没有太多的办法。该规范非常具体地说明了有效 x9 文件的构成、接收机构接受或拒绝它的原因等。有很多规则涉及与其他记录和图像格式相关的记录放置。

此外,您对文件编码的困惑并不奇怪,因为它有点复杂。X9.37 (& .100-187) 文件是二进制文件。文件中的大部分数据通常是EBCDIC 编码的字符串数据,但您也会遇到一些 ASCII 编码的数据。您可以使用 EBCDIC 编码,例如:Encoding.GetEncoding(37)

另一方面是文件中的所有记录在理论上都是可变长度的,因此以它们的长度为前缀(以字节为单位)。奇怪的是长度存储为大端、二进制 32 位整数。最后,其中携带的图像数据当然是二进制数据。

我创建了一个很好的、全面的 .net 库来处理 x9 文件,但目前它仅可供我们公司的产品使用。考虑到足够的需求,我们正在考虑为 .NET 开发人员发布商业 SDK 的想法。

于 2013-03-14T18:49:11.530 回答
3

过去几周我一直在做这件事,因为我的任务是为 Wells Fargo 制作 RDC 文件。对我来说不幸的是,虽然富国银行的人非常了解文件的结构,但他们不了解编码或二进制数据。在过去的 2 天里,我从他们那里解析了一个示例文件,这就是我发现的:

  1. 没有行终止字符,例如 \r\n。除 52 条记录外,每一行的长度为 80 个字符,并且必须按原样解析/创建。插入换行符将产生第 81 个和可能的第 82 个字符,这将搞砸解析器。

  2. 虽然文件的编码是 EBCDIC (Encoding.GetEncoding(37)),但整个文件不是 EBCDIC 编码的。只有文本部分被编码。因此,您必须逐个字符地编码为 EBCDIC,直到将二进制图像数据放入 52 记录中为止。此时您只需放入二进制数据,任何解析器都应该根据前一个字段知道该数据的长度(字段 18,图像数据的长度,通常是 52 条记录的 111-117 位置)

这是一个非常古老的问题,但我在研究我的设置时已经多次遇到这个问题,所以我认为是时候用真实信息给出正确答案了。

于 2017-02-28T15:48:16.200 回答