Прочтите документацию по библиотеке jpos, ее черновая версия доступна в Интернете, вы можете найти ее здесь
Конкретно на ваш вопрос про JPOS Server лучше реализовать свой сервер. JPos предоставляет класс ISOServer
, например. следующие bean-компоненты инициируют сервер ISO в файле applicationContext.xml
<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 для реализации сервера, я попытаюсь поделитесь образцом, как только смогу.
Удачного кодирования :)
person
Mubashar
schedule
10.12.2014