- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 ISO 8583 v87 创建消息!但是在解析它时,我得到了不同的参数值。问题是什么?是否为Hex.encodeHexString
import org.apache.commons.codec.binary.Hex;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
public class ParseISOMessage {
static org.jpos.iso.packager.ISO87APackager packager;
public static void main(String[] args) throws IOException, ISOException {
String data = createMSG();
// Create Packager based on XML that contain DE type
packager = new org.jpos.iso.packager.ISO87APackager();
// Create ISO Message
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(data.getBytes());
// print the DE list
logISOMsg(isoMsg);
}
private static void logISOMsg(ISOMsg msg) {
System.out.println("----ISO MESSAGE-----");
try {
System.out.println(" MTI : " + msg.getMTI());
for (int i=1;i<=msg.getMaxField();i++) {
if (msg.hasField(i)) {
System.out.println(" Field-"+i+" ("+packager.getFieldPackager(i).getDescription()+") : "+msg.getString(i));
}
}
} catch (ISOException e) {
e.printStackTrace();
} finally {
System.out.println("--------------------");
}
}
private static String createMSG() {
try{
ISO87BPackager packager = new ISO87BPackager();
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("0200");
isoMsg.set(2, "1234567890123456");
isoMsg.set(3, "000000");
isoMsg.set(4,"000000001234");
isoMsg.set(7, "0413135553");
isoMsg.set(11, "000091");
isoMsg.set(12, "135553");
isoMsg.set(13, "0413");
isoMsg.set(25, "14");
isoMsg.set(32, "5816720610");
isoMsg.set(35, "1234567890123456=9505146000000000000");
isoMsg.set(37, "000000000000");
isoMsg.set(41,"55555555");
isoMsg.set(49,"123");
isoMsg.set(52,"1A2B3C4D5E6F7012");
isoMsg.set(64,"ABCDEF0123456789");
byte[] b = isoMsg.pack();
System.out.println("**"+Hex.encodeHexString(b)+"**");
return Hex.encodeHexString(b);
}
catch(Exception ex) {
ex.printStackTrace();
return "";
}
}
}
例如,我将PIN DATA设置为ABCDEF0123456789
,但是在解析创建的消息时,PIN DATA是0353535353535353
.
最佳答案
问题很简单,当您调用 data.getBytes()
时,数据实际上是编码的十六进制数据,而不是 isoMsg.pack()
创建的数据。
更改 isoMsg.unpack(data.getBytes())
到
final byte[] bytes = new Hex().decode(data.getBytes());
isoMsg.unpack(bytes);
另外你应该使用相同的packager
来打包和解包
public class ParseISOMessage {
private static org.jpos.iso.packager.ISO87APackager packager = new org.jpos.iso.packager.ISO87APackager();
public static void main(String[] args) throws IOException, ISOException, DecoderException {
String data = createMSG();
// Create ISO Message
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
final byte[] bytes = new Hex().decode(data.getBytes());
isoMsg.unpack(bytes);
...
private static String createMSG() {
try {
// ISO87BPackager packager = new ISO87BPackager(); // delete this line otherwise it cannot unpack
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("0200");
...//same
isoMsg.set(64, "ABCDEF0123456789");
byte[] b = isoMsg.pack();
System.out.println("**" + new String(Hex.encodeHex(b, false)) + "**"); // make the result uppercase.
return Hex.encodeHexString(b);
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
}
关于java - JPOS ISO 8583 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658725/
我正在使用 jpos 客户端(在 java Spring MVC 程序的类中)连接基于 ISO8585 的服务器,但是由于某种原因服务器无法响应,因此我的程序一直在等待响应并导致挂我的程序。那么实现连
我已经从这个链接下载了 jPOS-master.zip。 (https://github.com/jpos/jPOS)。 运行命令gradle clean dist installApp 找到jPOS
我试图解决 jPOS:2.0.8 版本但它失败了,因为无法解决 com.sleepycat.je:je:7.0.6 的依赖关系。 com.sleepycat je 7.0.6 compile 我已
默认情况下,如果我在Windows cmd中运行gradle installApp命令,它将生成一个名为jpos-1.9.8.jar的jar文件。但是我的项目要求我使用projectName.jar生
我们将 jpos 与 Q2 一起使用,我们的一个 webapp 部署在 tomcat6 上,一切都很好。现在我们必须使用 q2 东西实现另一个 jpos 应用程序,但是当我们将它部署在同一个 tomc
我是 JPOS 的新人。我需要一些帮助。请在下面找到我的要求。 在 TCP 连接术语中,IST 交换机配置为服务器,MPOS 服务器配置为客户端。 MPOS 服务器和 IST 交换机应通过单个 TCP
我在使用磁条卡生成交易时遇到此错误。你能指出这里的问题是什么吗? org.jpos.iso.IFB_LLLCHAR: Problem unpacking field 54 (java.lang
我们是 JPos 库的新手,我们希望自动化需要外围交互的测试用例。 为了自动化多个场景的测试,我们希望绕过连接的外围设备并为我们的应用程序提供模拟值。 例如我们有一个连接的“秤”来测量重量,我们想模拟
我的应用程序是一个 POS 系统,具有使用单个打印机的单个终端。问题是什么时候适合调用 open()、 claim() 和 setDeviceEnabled(true) 和 setDeviceEnab
我正在创建一个新的支付应用程序。我有一个客户端应用程序,用户可以选择价格,输入其身份验证信息,然后客户端创建 iso 8583 消息并将此数据发送到银行服务器。 根据我的研究,我可以使用 jPOS 来
我通过this一步步设置jPOS JAR服务器.我通过以下代码创建服务器: public class jPOSServer implements ISORequestListener { pu
我在 JPOS 中配置 RESTFul API jpos-rest.pdf 。 问题是我无法从客户端接收数据,但我可以向客户端发送数据。 在 Echo.java 类中,通过以下代码我可以发送数据: p
我有一个事务管理器,我是这样配置的
我正在制作 POS 系统,现在我正在尝试设置 pos 打印机 epson tm-t20。当我尝试打开端口时,打印机在哪里,我收到此错误消息: jpos.JposException: Could not
我使用这个代码: import org.jpos.iso.ISOPackager; import org.jpos.iso.packager.GenericPackager;
在我目前的公司,我们正在考虑使用 jPOS 与其他系统进行 ISO 8583 集成。我已经阅读了一段时间的免费文档,但我仍然有很多差距。例如: jPOS 应该如何在产品中工作?我应该开始第二季度吗服务
我在一个项目中工作,其中一个请求(ISO 8583)需要通过JPOS服务器通过SOAP发送到支持(根据官方文档的远程主机)应用程序接口(interface)。 我们已经实现了我们的系统如下: 我们在中
我是 JPOS 的新人。我们已经为多个客户端实现了 jpos 服务器。 here is a image of my scenario 例如,我们有 n 个客户。每个客户端的 ISO 消息格式都不同。
我有一个工作的 JPOS ISO8583 服务器,能够异步处理请求,然后我需要开发一个测试客户端来对其进行压力测试。 我想知道,多路复用器是否能够同时处理多个请求并并行处理它?请参阅此图。我正在使用
JavaPOS 新手,想要使用 JavaPOS 操作 POSPrinter。 已经安装了我的打印机,并且它实际上被选为我的操作系统中的主打印机。 问题是我不知道如何编写 jpos.xml 文件,也没有
我是一名优秀的程序员,十分优秀!