swift 官方资料:https://www2.swift.com/knowledgecentre/publications/us5mc_20180720/2.0?topic=alec.htm#genalec

swift 百科:https://baike.baidu.com/item/SWIFT/1108075
prowide - swift 报文处理 开源框架:https://www.prowidesoftware.com/resources/quickstarts

  pom.xml引用包:

<dependency>
<groupId>com.prowidesoftware</groupId>
<artifactId>pw-swift-core</artifactId>
<version>SRU2018-7.10.4</version>
</dependency>

  如下解析MT940类型报文:

import com.prowidesoftware.swift.io.parser.SwiftParser;
import com.prowidesoftware.swift.model.*;
import com.prowidesoftware.swift.model.field.Field;
import com.prowidesoftware.swift.model.field.Field61;
import com.prowidesoftware.swift.model.mt.mt9xx.MT940; import java.io.IOException; public class MT940Test { public static void main(String[] args) throws IOException {
String mt940 = "{1:F01AAAABB99BSMK3513951576}"+
"{2:O9400934081223BBBBAA33XXXX03592332770812230834N}" +
"{4:\n"+
":20:0112230000000890\n"+
":25:SAKG800030155USD\n"+
":28C:255/1\n"+
":60F:C011223USD175768,92\n"+
":61:0112201223CD110,92NDIVNONREF//08 IL053309\n"+
"/GB/2542049/SHS/312,\n"+
":62F:C011021USD175879,84\n"+
":20:NONREF\n" +
":25:4001400010\n" +
":28C:58/1\n" +
":60F:C140327EUR6308,75\n" +
":61:1403270327C3519,76NTRF50RS201403240008//2014032100037666\n" +
"ABC DO BRASIL LTDA\n" +
":86:INVOICE NR. 6000012801 \n" +
"ORDPRTY : ABC DO BRASIL LTDA RUA LIBERO BADARO,293-SAO \n" +
"PAULO BRAZIL }";
// 方法一
SwiftParser parser = new SwiftParser(mt940);
SwiftMessage swiftMessage = parser.message();
System.out.println("getSender:" + swiftMessage.getSender());
System.out.println("getReceiver:" + swiftMessage.getReceiver());
System.out.println("getType:" + swiftMessage.getType());
System.out.println("getMtId:" + swiftMessage.getMtId());
System.out.println("getSignature:" + swiftMessage.getSignature());
System.out.println("*******************************************");
SwiftBlock1 swiftBlock1 = swiftMessage.getBlock1();
System.out.println("getApplicationId:" + swiftBlock1.getApplicationId());
System.out.println("getServiceId:" + swiftBlock1.getServiceId());
System.out.println("getLogicalTerminal:" + swiftBlock1.getLogicalTerminal());
System.out.println("getSequenceNumber:" + swiftBlock1.getSequenceNumber());
System.out.println("*******************************************");
SwiftBlock2 swiftBlock2 = swiftMessage.getBlock2();
System.out.println("getBlockValue:" + swiftBlock2.getBlockValue());
System.out.println("*******************************************");
SwiftBlock4 swiftBlock4 = swiftMessage.getBlock4();
Field[] fields = swiftBlock4.getFieldsByName("61");
for (Field field : fields) {
System.out.println("getTagValue:" + field.getValue());
System.out.println("AMOUNT:" + field.getComponent(5));
}
System.out.println("*******************************************");
// 方法二
MT940 mt = MT940.parse(mt940);
for (Field61 tx : mt.getField61()) {
System.out.println("Amount: " + tx.getComponent(Field61.AMOUNT));
System.out.println("Transaction Type: " + tx.getComponent(Field61.TRANSACTION_TYPE));
System.out.println("Reference Acc Owner: " + tx.getComponent(Field61.REFERENCE_FOR_THE_ACCOUNT_OWNER));
} }
}

  运行结果:

getSender:BBBBAA33XXXX
getReceiver:AAAABB99BSMK
getType:940
getMtId:fin.940
getSignature:null
*******************************************
getApplicationId:F
getServiceId:01
getLogicalTerminal:AAAABB99BSMK
getSequenceNumber:951576
*******************************************
getBlockValue:O9400934081223BBBBAA33XXXX03592332770812230834N
*******************************************
getTagValue:0112201223CD110,92NDIVNONREF//08 IL053309
/GB/2542049/SHS/312,
AMOUNT:110,92
getTagValue:1403270327C3519,76NTRF50RS201403240008//2014032100037666
ABC DO BRASIL LTDA
AMOUNT:3519,76
*******************************************
Amount: 110,92
Transaction Type: N
Reference Acc Owner: NONREF
Amount: 3519,76
Transaction Type: N
Reference Acc Owner: 50RS201403240008

  参考资料:https://blog.csdn.net/Little_Stars/article/details/100558234

       https://github.com/prowide/prowide-core-examples/blob/master/src/main/java/com/prowidesoftware/swift/samples/core/ParseMT940FromStringExample.java

swift MT报文解析处理的更多相关文章

  1. 报文解析及CRC类

    /// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...

  2. ISO8583报文解析

    在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...

  3. 基于DPI(深度报文解析)的应用识别

    一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...

  4. C#ModBus Tcp 报文解析

    上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开 ...

  5. GOOSE报文解析

    GOOSE报文解析 变电站 使用 MMS报文 http://www.360doc.com/content/16/1014/20/36538220_598459873.shtml

  6. MH/T4029.3 IFPL报文解析

    MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文. 我们先来看看IFPL报文长啥样. ZCZC -TITLE IFPL -FILTIM 0109 ...

  7. xml报文解析和组装

    package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...

  8. Motorola和Intel格式报文解析的区别

      结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...

  9. iOS开发之Swift 4 JSON 解析指南

    Apple 终于在 Swift 4 的 Foundation 的模块中添加了对 JSON 解析的原生支持. 虽然已经有很多第三方类库实现了 JSON 解析,但是能够看到这样一个功能强大.易于使用的官方 ...

随机推荐

  1. 「美团 CodeM 初赛 Round A」试题泛做

    最长树链 树形DP.我们发现gcd是多少其实并不重要,只要不是1就好了,此外只要有一个公共的质数就好了.计f[i][j]表示i子树内含有j因子的最长链是多少.因为一个数的不同的质因子个数是log级别的 ...

  2. docker打包flask简单程序

    简单代码: from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return 'hello world' ...

  3. P1598 垂直柱状图

    输入格式: 四行字符,由大写字母组成,每行不超过100个字符 输出格式: 由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的.在任何一行末尾不要打印不需要的多余空格.不要打印任何空行 ...

  4. JavaWeb-SpringBoot_(下)腾讯云点播服务之视频的显示-demo

    腾讯视频云点播 传送门 项目在腾讯云点播服务之视频的上传(上)[附源码]的基础上添加了两个html页面 此视频  播放传送门 (播放视频GIF会超过10M...) package com.Gary.v ...

  5. 【面试】Redis

    1.如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样? set指令有非常复杂的参数,这个应该是可以同时setnx和expire合成一条指令来用的! 2.使用过Re ...

  6. Location of Docker images in all Operating Systems (Linux, Windows, Redhat, Mac OS X)

    原文:http://www.scmgalaxy.com/tutorials/location-of-dockers-images-in-all-operating-systems/ Location ...

  7. 2、记录代码----Ajax

    $.ajax({ url:'/content-engine/index.php/tracker/confirmSendEmail', async: false, //默认为true,同意异步传输 da ...

  8. koa 基础(三)路由的另一种写法

    1.配置路由 app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 ...

  9. java 获取本地 mac 地址

    主要参考:Java获取本机MAC地址/IP地址/主机名 做的更改: 1.我的windows是中文版,程序中获取mac时是按照physical address 获取的,添加上"物理地址&quo ...

  10. ORA-39095: Dump file space has been exhausted

    ORA-39095: Dump file space has been exhausted Table of Contents 1. 简述 2. 错误信息 3. 分析 4. 解决 5. 扩展 1 简述 ...