【问题标题】:start working with jpos开始使用 jpos
【发布时间】:2015-02-05 01:01:52
【问题描述】:

我正在创建一个新的支付应用程序。我有一个客户端应用程序,用户选择价格,输入其身份验证信息,然后客户端创建和 iso 8583 消息并将此数据发送到银行服务器。

根据我的研究,我可以使用 jPOS 来模拟银行服务器。实际上,我需要一个服务器来获取 iso 消息并对其进行响应,但我不知道如何使用 jPOS 来提出这个建议。

我在互联网上搜索了这个,但找不到任何可以清楚地回答我们的资源。我的主要问题是,我是否需要使用 jPOS 创建应用程序来实现我的要求,或者仅在服务器上安装 jPOS 就足以测试我的客户端应用程序?

【问题讨论】:

    标签: onlinebanking 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,但因为我不确定,所以我分享了服务器代码。如果我成功了,我会告诉你的。
    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多