一、消息的结构消息由多个Block构成,Block包含特定数据以实现特定目的Block以花括号作为边界,花括号内首先写明Block的编号,编号后跟“:”,接下来才是Block的内容 一个典型的User-to-user消息格式如下:{1: BASIC HEADER BLOCK}{2: APPLICATION HEADER BLOCK}{3: USER HEADER BLOCK}{4: TEXT BLOCK}{5: TRAILER BLOCK}Block1、Block2和Block3包含头信息,Block4包含信息的文本,Block5包含结束信息Block3、Block4和Block5可以包含sub-Block只有Block1是必需的,其他Block都是可选的但是对于User-to-user消息来说,Block1、Block2、Block4和Block5都是必选的二、消息的表现形式Block由多个字段构成,字段的内容可能是:日期、时间、地址、Session Number等Block1和Block2的字段为定长且连续的,字段之间没有分隔符对于User-to-user消息,Block4必须以回车换行开始,以回车换行和“-”结束,其内部的字段以标签号(夹在两个“:”中间)开始,后跟消息内容,例如:Block 1 {1:F01BCITITMMAXXX0012000123}Block 2 Block 3 {3:{108:BCITITMMA950906}}Block 4 {4::20:1234567890:32A:010605GBP45000,:50:MASTERS IMPORTRUE DES ARBRES 119CAMBRAI:52A:BNPAFRPPCAM:53A:POCIITMM680:57A:BCITITMM680:59:/P03452032022819 30GRAND IMPORTPESCARA:70:/RFB/INV 5591-}Block 5 {5:{MAC:12345678}{CHK:123456789ABC}}对于系统消息和系统命令,Block4由sub-Block构成,sub-Block之间不需要回车换行符号分隔。
sub-Block由花扩号包围,花扩号内首先是一个3位的标签号,后接一个“:”,最后是具体内容Block5也是由sub-Block构成,sub-Block由花括号包围,花括号内首先是3个字母的类型标识符,后接一个“:”,最后是具体内容例如:{1:A01VNDZBET2AXXX0016000006}{2:I036SWFTXXXXXXXX}{4:{305:A}{177:0107310000}{177:0107312359}}{5:{CHK:A366AFEEDDFB}}1、BASIC HEADER BLOCKBASIC HEADER BLOCK 包含于Block1中,是唯一在所有消息中都必须出现的Block,Block1几乎总是由CBT自动构造对于输入和输出消息,Basic Header的格式相同,对于输入消息,Basic Header包含的内容与发送者相关,对于输出消息,Basic Header包含的内容与接受者相关下面是一个user-to-user输入消息Block1的例子:{1:F01BANKBEBBAXXX2222123456}该Block可以分解如下:{1:(a)F(b)01(c)BANKBEBBAXXX(d)2222(e)123456}(f)(a) Block标识符:对于Basic Header Block来说,Block标识符总是“1”。
b) 应用标识符:应用标识符用于说明发送或接收消息的应用程序,见下表:F = FIN所有user-to-user消息、FIN系统消息和FIN服务消息A = GPA大多数GPA系统消息和GPA服务消息L = GPA部分GPA服务消息,比如:LOGIN、LAKs、ABORT这些值由SWIFT系统和CBT自动生成,但是用户需要知道其含义c) 服务标识符:由两位数字构成,表明发送或接收数据的类型用户主要关心的是“01”,表明消息是GPA系统消息、FIN系统消息或user-to-user消息其他如“21”表示ACK/NAK, UAK/UNK,“03”表示SELECT命令等等详细资料参见《SWIFT用户手册》d) LT标识符:由12个字符构成SWIFT地址(包括分支代码——Branch Code),对于输入消息,表明发送LT的地址,对于输出消息,表明接收LT的地址e) Session Number:由4位数字构成,用于标识传送消息的Session,在Basic Header中,Session Number就是用户的GPA或FIN的Session Numberf) Sequence Number (ISN or OSN):Sequence Number由6位数字构成,是发送者当前输入的ISN或者接收者当前输出的OSN。
对于应用标识符为“L”的情况,Sequence Number没有意义2、Application Header Block Application Header提供消息本身的信息,存在于Block2中对于GPA消息和FIN消息,Application Header是不同的2.1 Application Header - Input对于输入消息,Application Header描述消息的类型、地址以及如何发送消息例如(FIN消息):{2:(a)I(b)100(c)BANKDEFFXXXX(d)U(e)3(f)003}(g)(a) Block标识符:对于Application Header Block来说,Block标识符总是“2”b) 输入/输出标识符:对于输入信息为“I”c) 消息类型:由3为数字构成,表明消息的类型,上例中为“100”,表明这是一个客户传输消息d) 接收者地址:由12个字符构成,表明消息接收者的地址在消息交付时,系统将用LT Code替换后面的“X”Branch Code是必选的,在上例中使用了缺省的“XXX”除非另有说明,提交给SWIFT系统自己的系统消息地址应为“SWFTXXXXXXXX”。
e) 消息优先级:该字符仅用于FIN Application Header,用于定义交付消息的优先级,可能的值包括:S = 系统;U = 紧急;N = 正常优先级“S”必须被用于user-to-system消息对于user-to-user消息,可以使用“U”或“N”如果用户没有制定交付规则,系统消息总是最先交付,然后是紧急消息,最后才是正常消息f) 交付监控:该选项仅用于FIN user-to-user消息,并允许消息发送者请求:l 一旦消息被交付,自动发出MT 011交付通知l 在失效时间内没有交付,自动发出MT 010未交付警告l 对于上述两项都有或都没有交付监控的可能值包括:l 1 = 未交付警告l 2 = 交付通知l 3 =未交付警告和交付通知如果消息优先级为“U”,那么用户必须请求交付监控选项“1”或“3”,如果消息优先级为“N”,那么用户可以请求交付监控选项“2”,或者设置该参数为空格,没有交付监控g) 失效时间:由三位数字构成(单位为5分钟),如果在失效时间之后FIN user-to-user消息才被交付,系统会在消息中加入延迟标志(DLM)对于紧急消息,如果在失效时间内消息没有交付,系统会产生未交付警告。
对于紧急消息,失效时间为003(15分钟),对于正常消息失效时间为020(100分钟)失效时间只能在交付监控被设置(对于紧急消息选择1或3,对于正常消息为2)的情况下设置,否则该消息会被标记H25错误GPA与FIN的情况类似但是GPA消息不能设置优先级、交付监控和失效时间2.2 Application Header - Output对于输出消息,Application Header定义消息的类型、发送者、何时发送以及何时交付例如(FIN消息):{2:(a)O(b)100(c)1200(d)010103BANKBEBBAXXX2222123456(e)010103(f)1201(g)N}(h)(a) Block标识符:对于Application Header总是“2”b) 输入/输出标识符:“O”(c) 消息类型:由3位数字构成,上例中为“100”,表明这是一个客户传输消息d) 输入时间:格式为HHMM,消息发送者的本地时间如果是系统消息,该时间为系统产生消息的时间(格林威治时间GMT)(e) MIR:每个输入消息都有一个唯一的MIR,MIR由28个字符构成,其中包含日期(消息发送者的本地日期),表明消息何时被输入,还包括消息发送者的SWIFT完全地址、Session Number以及ISN。
如果输出消息是系统产生的,MIR会显示PLT地址,例如“DYLRXXXXXXXX”,日期是系统产生消息的日期(格林威治时间GMT)(f) 输出日期:输出日期是接收者收到消息的本地日期g) 输出时间:输出时间的格式为 (HHMM),是接收者收到消息的本地时间h) 消息优先级:同输入消息GPA与FIN的情况类似但是GPA消息不能设置优先级3、User Header Block User Header只对于FIN user-to-user消息是可选的包含在Block3中,允许用户在User Header中为信息提供自己的User ReferenceUser Header只能被消息的发送者赋值,并总是出现在输出消息拷贝中User Header中的相关部分会在系统信息和确认中重复Block3可以包含字段113,用于定义banking priorities,以及字段108,这是一个用户附注用户User Reference可以作为恢复消息的选择标准字段103和字段115是可选的,可以用于FIN拷贝服务字段的顺序是(如果有):103,113,108和115字段 119(可选)可以被用来指定不同的验证规则。
字段 119(如果有)排在字段108的后面关于Block3中的字段以及字段119中关于验证规则的详细信息,参见《SWIFT用户手册》下面是一个User Header的例子(FIN消息):{3:(a){113:xxxx}(b){108:abcdefgh12345678}}(c)(a) Block标识符:“3”(b) Banking Priority:由4个字符构成,该内容必须经两个或多个用户同意c) Message User Reference (MUR):字段108为自由格式,最多可以有16个字符4、Text Block包含于Block4中,内含SWIFT消息例如(FIN user-to-user消息):{4::20:PAYREF-TB54302:32A:010103EUR1000000,:50:CUSTOMER NAME