jPOS Users
jpos-...@googlegroups.com
http://groups.google.com/group/jpos-users?hl=en
Today's most active topics:
* how does jPOS handle array of results? - 2 new
http://groups.google.com/group/jpos-users/t/e25c12f3a7ab656f?hl=en
* Fixed valueTemplate - 2 new
http://groups.google.com/group/jpos-users/t/b81591a8875bace6?hl=en
Active Topics
-------------
how does jPOS handle array of results? - 2 new
----------------------------------------------
I guess its a matter of how the host has implemented it. From a personal
banking perspective, the host usually sends a sort of continuation key (used
to identify what data should be sent next) in a field that is used to send the
next request and the information needs to be accumulated at your end. you host
- Fri, Sep 12 2008 12:06 am
2 messages , 1 author
http://groups.google.com/group/jpos-users/t/e25c12f3a7ab656f?hl=en
Fixed valueTemplate - 2 new
---------------------------
hi Andy i had seen u r post regarding fixed value template <isomsg> <field id=
"19" value="840" /> <field id="24" value="182" /> <field id="25" value="1900" /
> <field id="26" value="5912" /> <field id="32" value="05682" /> </isomsg>
public class QueryAMEXHost extends QueryHost { protected String
getResourcePrefix() { - Fri, Sep 12 2008 5:40 am
2 messages , 2 authors
http://groups.google.com/group/jpos-users/t/b81591a8875bace6?hl=en
==============================================================================
You received this message because you are subscribed to the Google
Groups "jPOS Users" group.
To post to this group, send email to jpos-...@googlegroups.com or
visit http://groups.google.com/group/jpos-users?hl=en
To unsubscribe from this group, send email to
jpos-users+...@googlegroups.com
To change the way you get mail from this group, visit:
http://groups.google.com/group/jpos-users/subscribe?hl=en
To report abuse, send email explaining the problem to ab...@googlegroups.com
==============================================================================
Google Groups: http://groups.google.com?hl=en
> NB: - Friends, nowadays when I post my topics I don't get any
> response, could I be posting to a wrong address?
The few messages you have posted to this list recently have both been
answered? Are you posting them somewhere else too?
>
> - Some one please direct me to a site where I can find details on ISO
> 8583 version 1993 specification.
ISO standards can be found on www.iso.org. This particular standard is
now 'withdrawn', but can be found here:-
http://preview.tinyurl.com/iso8583-1993
--
Mark
>>
>> Now, you have recommended that to move JPOS to ISO 8583:1993 only
>> requires modifications in the packager file.I didn't get this
>> clearly, please clarify on how I can make the changes to switch my
>> JPOS based application to ISO 8583:1993.
>>
>> Do you mean changing the field definitions in iso87ascii-binary-
>> bitmap.xml file to mach the ISO 8583 193 standard OR I can just
>> make the application use a different packager file say
>> iso93ascii.xml?
It is probably more clear if you take the second approach. Copy and
rename the older version to use as a starting point and then go through
making sure the new version matches the specification you are working
to. You might want to also call it something specific to your target
system?
Note this should match the specification given to you by the owner of
the system you are connecting with.
I personally feel the ISO standard is the wrong place to start.
Companies and systems often take their own stance on message structures
and how they work with them.
>>
>> I have visited the links you recommended for the 1993 version,
>> however, I can't find the details. I thought I would find some pdf
>> file with details of the specification.
You can get a pdf file of the latest ISO8583 version, but you have to
pay for it. Back level versions might be available to purchase, but you
will have to ask the owner directly (www.iso.org), if they are available.
This is another good reason to ask the other party involved for the
specification for *their* system, or indeed the messages they would like
to send you.
--
Mark
Agreed. It's a sure step backwards.
I've referenced these pieces many times....
On-boarding a new interface:
http://www.andyorrock.com/2007/08/on-boarding-a-2.html
...and...
Aligning the jPOS packager:
http://www.andyorrock.com/paymentsystems/2006/09/implementing_th.html
...and...
Game Plan Notes:
http://www.andyorrock.com/2007/08/on-boarding-a-1.html
Read those. The example I use (in the first two pieces) is at the heart of
the exercises is AMEX, an ISO8583:1993 interface. You must go through these
exercises.
As Mark implies, your 1993 v. 1987 concern is a red herring here. 1993 or
1987, the exercise is the same: your packager must match your spec.
There's no need to reference the ISO standard to figure out your moves.
Read your spec. Make your field notes. Align your packager. Make the
corresponding, supporting coding changes described in my On-Boarding Guide.
Why the ISO spec won't really help you (to reiterate Mark's point)...from
the On-Boarding Guide:
Configuring the ISO Packager is the essential, core task. The packager
incorporates such ISO8583 implementation decisions as: the format of
numerical values (display or BCD?); the character set used for
alphanumerical values (ASCII or EBCDIC?); the length of each data field;
whether the LLVAR or LLLVAR construct is in play for a particular field;
whether numerical values should be padded to the full field length; and
other important implementation policies that have been made by the provider
and incorporated into their specifications. ***You must read and know the
provider's specs as a precursor to this exercise.***
mutumba wycliff wrote:But still replied direct instead of to the list
> Thats alright, indeed its a good idea that this discussion is open to
> all other members.
(jpos-...@googlegroups.com)?
Andy has added some useful links - on list - which you may find useful
as working examples.
I will not include the list this time - the reasons why I will highlight
- but please send you next email to the list, so that everyone can share
and contribute.
If personal consultancy is something you do desire, then the jpos.org do
a very reasonable line in consultancy. 8)
This is not a variation from the spec, as long as the field structures
>
> Your advise to base my modifications on the specification of the
> target system am looking at is indeed a wise decision, instead of I
> having to look at the general ISO 8583 version 1993 standard
> specification. Infact the system am looking at is BASE24-es ISO'93,
> its based on ISO 8583:1993. I have received their ISO spec and there
> are some variations that have really worried me and I wonder if I
> can achieve the setup with the JPOS framework.
>
> Below are some of the variations;
> The BASE24-es ISO host external message varies from the ISO standard
> in that it does not use binary data fields.
are defined in the ISO8583 spec, then they are on standard.
Perhaps 20 or 30 years ago, but this is no longer a real worry on a
> Several elements in the ISO external message have been standardized
> as binary fields; however, the BASE24-es external message is sent
> entirely in character format.
> The reason for this is that BASE24-es
> does not support transparent communications with its hosts, and
> consequently, the use of binary data could cause the unintentional
> introduction of control characters into the data transmission stream.
confirmed delivery protocol (TCP/IP).
Who gave you that information, not ACI I hope!!?
N.B. If ACI have told you this, then that is terrible, can you give me a
name, it would be nice to have them on about it should we meet 8) ?
If you have come to this flawed conclusion yourself then I hope I have
helped clear your mind.
(This is why I have not included the list in this reply).
jPOS 'simply' processes the fields as *you* define them to it. I have
> The ISO data elements affected by this are as follows: - Primary and
> secondary bit maps - Message Authentication Code data elements - PIN
> data element - Key Management Data element
>
> Mark, do you think JPOS will take into consideration such variations?
utmost confidence that the fields in this message structure will be
supported by the jPOS available components.
You probably just need to include the other components on the classpath
> PS: This q2.jar API, how can one make it such that you can launch
> your application from a batch file with such a stmt? java -jar q2.jar
- use the bin/example or bin/example.bat as models fro the jpos
download, these will stand you in good stead.
--
Mark
This is a bit strange...
... you replied to the list, publishing the note that I chose not to
post because of my 'attack' on ACI.
Nevermind.
mutumba wycliff wrote:
>
> How can I access those links you said have been added by Andy?
The link I was talking about are in Andy's response on the list:-
http://groups.google.co.uk/group/jpos-users/browse_thread/thread/21581d85e3e6fe80?hl=en
just look through the whole chain for a response from Andy Orrock.
If you post through this interface (I know it is not the best) then it
may be easier to keep track of who needs to know what.
>
> Actually the info I am giving you, I got it from ACI a document on BASE24-es
> ISO 93 Host External Message exchange.I can even send you a copy of this
> document if you don't mind.
No please don't do that, it will be a copyrighted work, which I have not
paid to see and you don't have permission to distribute.
>
> Indeed thanks alot for clearing my mind on this variation. My self I was
> convinced that it was a valid statement and I was so worried on how to
> implement such cases where the Bitmap is not sent as a binary field and
> instead comes as ASCII (AN).
> According to ACI field 1 will be of type AN 16 instead of
> org.jpos.iso.IFB_BITMAP as specified in the packager file.
> So in this case are you saying I discard the ACI BASE24-es doc?
The ACI spec is the one you *must* follow if you are to produce messages
that their solution will process correctly.
The messages they use are theirs to define, so you must follow their map.
>
> Now i understand the flow, so JPOS will process fields depending on the
> formats one has defined in the packager file. Thats a great one as far as
> platform independence is concerned.
Yes the packager tells jPOS what each field looks like and it handles
the unpacking of a message off of the network into an ISOMsg.
>
> About the use of q2.jar still I have not got it right.
> - I downloaded jpos-1.6.2-r2626,
> - Built it with ant run , this process generates extra files and folders.
>
> Now am stack at that level, if I may ask, how do i proceed from here?
> How do i start the server?
> I have seen a case where the Isoserver is launched by executing java -jar
> q2.jar, but I wonder what kind of setup was done before such a thing can
> happen.
I think you should be looking at jpos-ee which is the new 'q2'.
This can be run from 'ant run' at the simplest level.
You need to running :-
java -jar q2.jar
will I think complain about missing classes, so I think you need
supplement this command with extra classpath files. Just like
example.bat does.
I have never done what you are trying to do, so I would have to try it
to find out for you. Sometimes life is too short.
8(
> Also I can't find the bin/example or bin/example.bat, where are they
> located?
These are in the bin folder of the jpos source download - or where last
time I looked?
--
Mark
> Reference is made to the On-Boarding Doc - Item 2.1.1 Add new sub-
> directory structure.
>
> Please walk me through the steps involved in creating a sub-dir
> structure for the provider in question e.g If am creating for ACI
> BASE24-es system i wold need to create a sub-dir like ACI, just like
> you did for AMEX.
The new folder you want to create is just a place to hold everything
related to the system you want to talk to.
Within in it, you probably want to place any code relating to your work,
and also any packager definitions you decide you want to use or develop
to match your specification.
> Given that I have just downloaded jpos-1.6.2-r2626.zip and unzipped
> it,
Can you locate the modules folder? You should note that Andy's guide is
against a local copy of the svn repository, so start by looking for a
folder called modules, you should find it in the top level of the folder
you extracted the zip file into:-
[your_directory]\modules\
> How do I proceed?
>
> At what point do I need to execute "ant run"? Is it after creating the
> sub-dir or after?
ant run builds the system and then runs it. If you want your 'ACI
module' to be included in the run, then you will need to complete your
development before running it.
If you just want to see it running without any of your code, run it on a
fresh zip extract...
Assuming you have ant on your path - are you running on windows or unix?
- open a command window, navigate to the [your_directory] and then type:-
ant run
'stuff' will happen and you should get the not terribly satisfying
result of a running jpos instance and perhaps something like :-
run:
[java] <log realm="Q2.system" at="Thu Sep 25 17:27:06 BST 2008.477">
[java] <info>
[java] Q2 started, deployDir=C:\jpos1.6.2\build\deploy
[java] </info>
[java] </log>
[java] <log realm="Q2.system" at="Thu Sep 25 17:27:06 BST 2008.587">
[java] <info>
[java] new classloader [107ebe1] has been created
[java] </info>
[java] </log>
[java] <log realm="Q2.system" at="Thu Sep 25 17:27:06 BST 2008.587">
[java] <info>
[java] deploy:C:\jpos1.6.2\build\deploy\99_sysmon.xml
[java] </info>
[java] </log>
[java] <log realm="org.jpos.q2.qbean.SystemMonitor" at="Thu Sep 25
17:27:06 BST 2008.602">
[java] <info>
[java] Starting SystemMonitor
[java] </info>
[java] </log>
[java] <log realm="org.jpos.q2.qbean.SystemMonitor" at="Thu Sep 25
17:27:06 BST 2008.634">
[java] <info>
[java] <release>1.6.2$Revision: 2626 $</release>
[java] <memory>
[java] freeMemory=1375048
[java] totalMemory=2031616
[java] inUseMemory=656568
[java] </memory>
[java] <threads>
[java] delay=0 ms
[java] threads=3
[java] Thread[Reference Handler,10,system]
[java] Thread[Finalizer,8,system]
[java] Thread[Signal Dispatcher,9,system]
[java] Thread[main,5,main]
[java] Thread[Timer-0,5,main]
[java] Thread[SystemMonitor,5,main]
[java] </threads>
[java] --- name-registrar ---
[java] logger.Q2: org.jpos.util.Logger
[java] </info>
[java] </log>
I know it doesn't look like much, but at this point you are running a
system that will support the "hot plugging" of xml files that might
define servers or clients or any number of the other jpos components to
form your system...
>
> I realise that after executing "ant run" a build folder is created,
> incase I copy this build folder and paste it in another location can
> it work as an IsoServer or it requires other files?
You could reference the build folder - or indeed the jar file generated
for you in the build folder.
For now, just leave things where they are and think about preparing the
files you will need for your development.
>
> I read the JPOS guide, but I didn't understand the difference between
> a ISOPackager and a ISOFieldPackager.
> When do we use ISO93BPackager.java and iso93binary.xml?
> Is one a substitute of the other or the two have to used at the same
> time.
These files are two ways of saying almost the same thing. Using either
results in a packager that jpos can you to pack or unpack messages.
The xml file will need to go 'through' the genericpackager code which
not surprisingly takes an xml definition of a packager and builds the
java object just like it came from a piece of java code.
> I really don't understand how Generic Packagers and Custom packagers
> work.
> What is the difference, is it that one can choose to go Generic or
> Custom which is best?
See above, the choice is yours, but I suggest you use the xml route.
> The whole concenpt really confuses me.
> Please someone help me understand the difference between the two and
> which one is most prefered and easy to use.
Hopefully done above...
>
> Andy, please copy for me the contents of b24.xml on this link
> http://andyorrock.typepad.com/paymentsystems/b24.xml
> and paste into a notepad and send me as an attachment. Like I told
> earlier, from my IE i get an error when i try to access it.
You may have downloads blocked or no file association for xml files. I
have sent it to you directly - for free 8).
>
> The other thing I have found out is that iso93ascii.xml is more close
> in definition to BASE24-es ISO 93 spec just like Alejandro advised.
> Fore instance when you go through it, all the isoField names match
> what is in the ACI BASE24-es spec. Am yet to look at the field classes
> and length.
This is good news. Your aim is to derive a packager that *matches*
*your* *spec*, you could start from scratch, but if iso93ascii.xml is a
near match, copy that and edit it to suit your needs, in the name
include ACI, just to keep it separate in future. You never know you
might need the old, unchanged version!
Once you have the packager, you can prepare and start a server and a
channel that use your packager, that we can talk about in another thread...
8)
--
Mark
MTI's differ a little as well:
in 87 version: a financial message is 0200
in 93 version : a financial message is 1200
Also:
in version 2003 STAN DE 11 - is 12 bytes vs 6 bytes in 87 and 93
What does this means in jPOS ? you just need to have the proper packagers setup and m.set() the proper values in the fields, if you are talking to multiple systems that use different variants/versions , you will need to be able to map the different codes/values.
--Dave Bergert
From:
jpos-...@googlegroups.com [mailto:jpos-...@googlegroups.com] On Behalf
Of chhil
Sent: Tuesday, September 30, 2008 8:18 AM
To: jpos-...@googlegroups.com
Subject: Re: JPOS and ISO 8583 Version 1993
Field 39 in version 87 is 2 positions wide and in version 97 its 3 positions wide.
Usually an authorised response will also hold an authorisation code in
field 38, but you specification will give the format there.
--
Mark
void setProtocolVersion (int i); // int? char? String?
void setMessageType (String s);
int getProtocolVersion ()
String getMessageType ();
Do you agree?
> BTW, in jPOS we currently handle the MTI as protocol-version + MTI. We
> need to stay backward compatible but I'm thinking about adding the
> following methods to ISOMsg:
>
> void setProtocolVersion (int i); // int? char? String?
> void setMessageType (String s);
> int getProtocolVersion ()
> String getMessageType ();
>
> Do you agree?
I personally would want to place this processing down with the packager.
We might need a 'verb' (or multiple methods) to pass alongside the
ISOMsg into the packager so it knows the direction and intent?
This way the MTI handling is packager based, although this placement
might need work around the genericpackager handling.
--
Just my 2 currency decimal values.
Mark
My thought is that the look and feel of the ISOMsg is defined by the
packager, so perhaps this should include the structure and content of
the MTI field too?
So Packager would implement:-
public boolean isResponse(ISOMsg)
public boolean isRequest(ISOMsg)
public void setResponseMTI(ISOMsg)
public void setRetransmission(ISOMsg)
The ISOBasePackager (or an extension) would implement the current
processing in ISOMsg for these functions. This way MTI processing
changes would be isolated to the specific message format.
For backwards compatibility we would need call these methods from the
current ISOMsg methods, conditionally on an instanceof check for the
extension class?
Perhaps I am looking at the MTI in a different way to everyone else,
certainly the current MTI handling works well. My suggestion would need
a block of changes and careful consideration across the existing
packagers shipped with jpos, and might not be worth the hassle.
I am of course happy to take my suggestion further and start trying to
make the changes to see what happens and find the issues you may already
have considered?
--
Mark
I have a HUGE backlog and can't work on this immediately, but if you
want to give it a shot you're welcome to do so and I'll be happy to
actively review and test.
That said, I think that my initial suggestion (adding the
getProtocolVersion + getMessageType) is something we can still do at the
ISOMsg level. In addition we can have a getPackagerProtocolVersion at
the packager level, but the message's version will come out of the MTI's
first character, right?
>
> That said, I think that my initial suggestion (adding the
> getProtocolVersion + getMessageType) is something we can still do at the
> ISOMsg level.
Fine with me of course.
> In addition we can have a getPackagerProtocolVersion at
> the packager level, but the message's version will come out of the MTI's
> first character, right?
I have never really mentally broken the MTI down, instead I just
remember the MTI values used for an interface that I am 'interested' in...
...rather than quote wikipedia, how about a link to a relevant page :-
--
Mark
>
> ...rather than quote wikipedia, how about a link to a relevant page :-
>
> http://tinyurl.com/ISO8583MTI
>
Oh... I see your point, if we are to break it down, we may have to break
down all the positions...
They would just make my mind:-
a) 'jump', as I scanned and found a PAN instead of a familiar MTI.
b) consider a data corruption has occurred,
c) and finally settle down and accept the numbers often get bigger and
'better' over time.
8)
--
Mark