swift MT报文解析处理
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;
swift MT报文解析处理的更多相关文章
- 报文解析及CRC类
/// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...
- ISO8583报文解析
在此只写了一个8583报文的拆包,组包其实也差不多的. 不多说直接上文件, 具体思路过程,在解析类里面写的有. 其中包含了四个文件 8583resp.txt报文 ISO8583medata配置文件 B ...
- 基于DPI(深度报文解析)的应用识别
一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...
- C#ModBus Tcp 报文解析
上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 读一组线圈 读取站号为1 从地址12开 ...
- GOOSE报文解析
GOOSE报文解析 变电站 使用 MMS报文 http://www.360doc.com/content/16/1014/20/36538220_598459873.shtml
- MH/T4029.3 IFPL报文解析
MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文. 我们先来看看IFPL报文长啥样. ZCZC -TITLE IFPL -FILTIM 0109 ...
- xml报文解析和组装
package com.xjts.cipher.util;import java.io.File;import java.io.FileWriter;import java.io.IOExceptio ...
- Motorola和Intel格式报文解析的区别
结论:无论用的Motorola,还是Intel格式,只在单个信号跨字节时解析才有区别. 先看下Vector的CANoe中dbc编辑器是如何呈现报文的: 图1 CAN报文中byte与bit顺序 从图 ...
- iOS开发之Swift 4 JSON 解析指南
Apple 终于在 Swift 4 的 Foundation 的模块中添加了对 JSON 解析的原生支持. 虽然已经有很多第三方类库实现了 JSON 解析,但是能够看到这样一个功能强大.易于使用的官方 ...
随机推荐
- return返回方法值:狮子玩具
public class Lion { String color ="黄色"; public void run(){ System.out.println("正在以0.1 ...
- Quartz.NET 作业调度(一):Test
Quartz.NET 是一个开源的作业调度框架,是 Java 作业调度框架 Quartz 的.NET 版本,对于周期性的任务,其作业和触发器的结合,极大的简化了代码的编写,大多时候我们只需要关注作业本 ...
- Nginx事件管理之ngx_event_core_module模块
1. 概述 ngx_event_core_module 模块是一个事件类型的模块,它在所有事件模块中的顺序是第一位.它主要完成以下两点任务: 创建连接池(包括读/写事件): 决定究竟使用哪些事件驱动机 ...
- 静态化-VeloCity
1.在spring.xml中配置 <!-- 指定vm模版路径 start --> <bean id="velocityEngine" class="or ...
- mysql 添加用户 - 设置远程登录/本地登陆的权限
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户: mysql> GRANT A ...
- MVP模式入门案例
随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处 ...
- mongdb mapReduce聚合操作
1.数据准备 请看group操作 2.mapReduce名词解释 mapReduce 随着"大数据"概念而流行.其实mapReduce的概念非常简单,从功能上说,相当于RDBMS的 ...
- three中的着色器示例
其实在3D引擎/库的帮助下,我们做webgl开发的难度已经很大大地降低了,熟悉相关API的话,开发一个简单的3D程序可以说是很轻松的事情. 在我看来,webgl的核心就是着色器(顶点着色器.片元着色器 ...
- Go语言集成开发工具JetBrains GoLandMac2.3中文版
JetBrAIns GoLand for Mac是是专为Go开发人员构建的跨平台IDE,功能非常强大拥有强大的代码洞察力,帮助所有Go开发人员即时错误检测和修复建议,快速和安全的重构,一步撤销,智能 ...
- 【HANA系列】SAP HANA SQL从给定日期中获取年份
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...