开始使用 jpos
Posted
技术标签:
【中文标题】开始使用 jpos【英文标题】:start working with jpos 【发布时间】:2015-02-05 01:01:52 【问题描述】:我正在创建一个新的支付应用程序。我有一个客户端应用程序,用户选择价格,输入其身份验证信息,然后客户端创建和 iso 8583 消息并将此数据发送到银行服务器。
根据我的研究,我可以使用 jPOS 来模拟银行服务器。实际上,我需要一个服务器来获取 iso 消息并对其进行响应,但我不知道如何使用 jPOS 来提出这个建议。
我在互联网上搜索了这个,但找不到任何可以清楚地回答我们的资源。我的主要问题是,我是否需要使用 jPOS 创建应用程序来实现我的要求,或者仅在服务器上安装 jPOS 就足以测试我的客户端应用程序?
【问题讨论】:
【参考方案1】:好吧,阅读 jpos 库文档,它的草稿版本可以在网上找到,你可以找到它here
具体到您关于 JPOS 服务器的问题,更好地实现您自己的服务器。 JPos 提供 ISOServer
类,例如以下 bean 在applicationContext.xml
文件中启动一个 ISO 服务器
<bean id="paymentServer" class="org.jpos.iso.ISOServer">
<constructor-arg>
<value>13000</value>
</constructor-arg>
<constructor-arg ref="paymentChannel" />
<constructor-arg ref="paymentServerThreadPool" />
</bean>
<bean id="paymentChannel" class="org.jpos.iso.channel.ASCIIChannel">
<constructor-arg ref="paymentPackager" />
</bean>
<bean id="paymentPackager" class="com.sample.payment.packager.PaymentPackager"/>
<bean id="paymentServerThreadPool" class="org.jpos.util.ThreadPool">
<constructor-arg>
<value>1</value>
</constructor-arg>
<constructor-arg>
<value>100</value>
</constructor-arg>
<constructor-arg>
<value>PaymentServer</value>
</constructor-arg>
</bean>
<bean id="paymentProcessor" class="com.sample.processors.PaymentProcessor" init-method="init"/>
以下类实现打包器
public class PaymentPackager extends ISOBasePackager
protected ISOFieldPackager fld[] =
/* 0000 */ new IFB_NUMERIC ( 4, "Message Type Indicator", false),
/* 0001 */ new IFB_BITMAP ( 16, "Bitmap"),
/* 0002 */ new IFB_LLLCHAR (999, "Primary Account number"),
/* 0003 */ new IFB_NUMERIC ( 6, "Processing Code", true),
/* 0004 */ new IFB_NUMERIC ( 12, "Amount, Transaction", true),
//.....
/* 0063 */ new IFB_LLLCHAR (999, "Reserved for national use"),
/* 0064 */ new IFB_BINARY ( 20, "Message authentication code field"),
//.....
/* 0125 */ new IF_UNUSED (),
/* 0126 */ new IF_UNUSED (),
/* 0127 */ new IF_UNUSED (),
/* 0128 */ new IFB_BINARY ( 20, "Message authentication code field"),
;
public PaymentPackager()
super();
setFieldPackager(fld);
在应用程序入口点类中,您可以获取 bean 并使用如下方式附加通道侦听器
paymentServer.addISORequestListener(paymentProcessor);
以下是示例监听器
public class PaymentProcessor implements ISORequestListener
private static Logger log = LoggerFactory.getLogger(PaymentProcessor.class);
public void init()
//do init
public boolean process (ISOSource source, ISOMsg m)
log.debug(">PaymentProcessor.process");
ISOMsg request = (ISOMsg) m.clone();
ISOMsg response = new ISOMsg();
//...
//build your response
//...
source.send(response);
return true;
注意:我还没有实现它,但是 jpos 提供了使用 Q2 实现服务器和客户端的新方法,您可以查看 QServer 类的文档来实现服务器,我我会尽快分享样品。
编码愉快:)
【讨论】:
非常感谢@Mubashar,最近我发现了一些关于 jpos-ee 的东西。我不确定这到底是什么,但在下面的指南中:jpos.org/doc/jPOS-EE.pdf 他们介绍了一些关于服务器和客户端模拟器的东西(第 31-35 页)。你对此有何想法?与其自己开发新的服务器模拟器不如用它? 是的,可能是我没用过,但我打算在周一或周末根据我的需要创建一个示例模拟器。顺便说一下,它使用 QServer,但因为我不确定,所以我分享了服务器代码。如果我成功了,我会告诉你的。以上是关于开始使用 jpos的主要内容,如果未能解决你的问题,请参考以下文章
jpos.JposException:它无法在指定的时间段内完成输出
jpos QMUX 是不是支持限制并发 ISO 请求的数量?