EDI,即电子数据交换,可用于企业之间的业务数据自动传输。EDI软件在服务器后台运行时,所有的数据处理都是自动进行的,业务数据会在处理完成后自动发送给合作伙伴,无需人工干预。在和合作伙伴接入EDI的时候,很多客户都会提出这样的问题:对接成功后,如何知道对方成功接收了我发出的文件呢?
首先,我们需要梳理清楚,这里的成功接收通常有三层含义:
1. 对方成功收到了我们发送的EDI文件;
2. EDI文件基础结构通过校验,符合EDI标准和要求;
3. EDI文件被成功处理进入合作伙伴的业务系统中。
而对应这三种接收含义,确认收发状态的方式也有以下三种:
1. EDI标准传输协议所具有的回执—— EDI报文接收结果确认
EDI中,常见的传输协议是AS2和OFTP。这两种传输协议都有回执信息,即文件接收方在收到消息后回复的一个确认响应,以告知消息发送方文件的接收状态。
AS2 的回执是MDN。MDN回执对于AS2协议来说非常重要,它可以确定您发出的文件是否成功地传输到了交易伙伴那里。除非文件仅用于自行测试,否则通常建议您无论何时都要求交易伙伴回复MDN回执。
OFTP的回执是EERP/NERP。接收方成功接收文件后必须向发送方发送EERP(End-to-end-response),用于向发送方通知已成功接收文件;若接收方接收文件失败则必须向发送方发送NERP(Negative end response),用于向发送方通知接收文件失败。
AS2和OFTP传输协议所具有的回执特点,能够确保文件传输过程具有不可否认性,有时也称作不可抵赖性,此特性可避免文件接收方面的推诿扯皮。
2. 997/CONTRL—— EDI报文结构验证结果确认
997/CONTRL是一种EDI业务报文类型。997是 X12标准中的功能性确认报文,而CONTRL是EDIFACT标准中的功能性确认报文,两者的使用场景是一致的。
997/CONTRL 是在EDI标准回执之后的进一步确认。消息接收方成功收到报文后,会对报文结构以及报文头进行检查和验证,确认是否符合EDI要求。如果验证通过,会给发送方回复Accept状态的997/CONTRL,表示EDI报文已被成功处理。如果验证不通过,则会给发送方回复Reject状态的997/CONTRL,同时在报文中会包含遇到问题的EDI节点和错误原因,消息发送方收到reject的997/CONTRL后,需尽快对EDI报文进行调整并重发。
要注意的是,交易伙伴回复的997/CONTRL和企业发出的EDI报文是有对应关系的,即用每个EDI报文的Control Number(EDI报文的唯一序列号)做关联,997/CONTRL中会包含原始EDI报文的Control Number。例如,以下是一个示例846库存通知报文:
代码语言:javascript复制ISA*00* *00* *ZZ*12347876367 *ZZ*TTTTT *220209*1604*U*00401*000002461*0*P*:~
GS*IB*12347876367*TTTTT*20220209*1604*2461*X*004010~
ST*846*11624~
BIA*04*MB*220209584228*20220209~
以下则是合作伙伴回复回来的997报文:
代码语言:javascript复制ISA*00* *00* *ZZ*TTTTTT *ZZ*12347876367 *220209*0205*U*00401*000002383*0*P*>~
GS*FA*TTTTTT*12347876367*20220209*0205*1388*X*004010~
ST*997*442580508~
AK1*IB*2461~
AK9*A*1*1*1~
SE*4*442580508~
GE*1*1388~
IEA*1*000002383~
在此示例报文中,Control Number为000002461;在997中,AK102的值为2461,这便是997和EDI报文之间的对应关系。
在EDI对接时,是否会有997/CONTRL确认需要取决于合作伙伴是否支持,不是所有的合作伙伴都支持997/CONTRL。
3. EDI业务数据检查结果确认
这一步是继EDI接收成功、EDI报文结构验证成功后,EDI报文检查的最后一步,也就是业务数据检查确认。在此项确认中,消息接收方会对EDI报文中所包含的业务数据进行检查,例如:发票中的金额、税率,发货通知中订单号、包装结构等。若发现收到的EDI报文数据有误,则会发送相应的错误提示报文,如824/BANSTA等,告知消息发送方报文中的错误信息,消息发送方可根据错误反馈对数据进行修正后重发。
在进行EDI对接时,是否会以EDI报文形式向消息发送方提供错误反馈也需要看合作伙伴是否支持。
以上就是EDI报文发送后,消息接收方常见的三步验证。在知行之桥中,如果消息发出后您一直没有收到错误邮件通知,也没有收到客户回复的错误通知EDI报文或邮件,那就不用担心,因为你的EDI报文已经被客户成功接收并处理了!