我正在创建一个新的付款应用程序。我所拥有的是一个客户端应用程序,用户选择价格,输入其身份验证信息,然后客户端创建并显示iso 8583消息,并将此数据发送到银行服务器。
根据我的研究,我可以使用jPOS模拟银行服务器。实际上,我需要一个服务器来获取iso消息并对其进行响应,但是我不知道如何针对此提议使用jPOS。
我在互联网上搜索了此内容,但找不到任何可以明确回答我们的资源。我的主要问题是,是否需要使用jPOS创建一个应用程序来实现我的要求,还是仅在服务器上安装jPOS就足以测试我的客户端应用程序?
最佳答案
好吧,请阅读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类的文档来实现服务器,我将尝试尽快共享示例。
快乐的编码:)
关于onlinebanking - 开始使用jpos,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27339942/