Comments inline.
On Nov 25, 2013 1:48 PM, "kapilashantha rajapaksha" <kapila...@gmail.com> wrote:
>
> Dear Sir,
>
> I'm looking for a develop an interface which is going to use ATM transactions. And later on planing to connect ATMs to our existing Switch (Currently supported interfaces are POS terminals ,Internet bank, IPG ). In fact, I'm a newer to ATM based transactions and its behaviour,messages ,protocol etc.. but I hope that I can integrate this. Before that I have few clarification regarding JPOS appi
>
> 1. Is it supported for message format of ATMs?
You can define ATM messages as fsdmsg's using a schema to interpret the protocol, assumption, messages are not iso8583 formatted.
>
> 2. We are using standard ATM client application, so Is it using ISO8583 message ? or will it depend on the ATM brand ? since I never see message example
>
ATM's have their custom protocols, newer atms tend to support iso8583 messages and their proprietary message formats.
> 3. What is NDC/NDC+/DCC? is it kind of message structure like ISO8583 ? or will it only use for ATM controlling such as (updating ATM client app via remote , etc ..)
NDC/NDC+ are NCR proprietary formats, DDC is Diebold proprietary format. Most atms try to emulate NCR/Diebold formats as they are the most used protocols
>
> 4. If it's using for transactions, then can jpos create the NDC/DCC messages like ISOmsg creation?
>
Yes they can, used fsdmsg or iso8583 messages to unpack requests and pack responses.
> 5. Is there any example (raw data ) to analyse ATM request for whatever message ?
>
Raw data will!l probably not be available, use the spec to create them or go the route of using ATM emulators (these are pretty expensive).
> 6. What is the best connection mode between ATM and Switch? example persistent or non-persistent
>
These can be persistent and ATM can be a client or server and they can be configured to support a 2byte message length pretended to the message.
If you are dealing with dial up arms then there will probably be a box in between that does the dial up to tcp conversion. If its dialup the chances are you connections won't be persistent, dials in, sends request, receives response and disconnects.
> Much appreciate your expert on this
>
> Regards
>
>
>
> --
> --
> jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
>
> Join us in IRC at http://webchat.freenode.net/?channels=jpos
>
> You received this message because you are subscribed to the "jPOS Users" group.
> Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
> To post to this group, send email to jpos-...@googlegroups.com
> To unsubscribe, send email to jpos-users+...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/jpos-users
> ---
> You received this message because you are subscribed to the Google Groups "jPOS Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/CAKV%2BfV2%3D1mnahb1LJ-HqxGAROEh5V2_AGHTj9oArWRbNOGcF6w%40mail.gmail.com.
> For more options, visit https://groups.google.com/groups/opt_out.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/CAPazefA4dJGrHVSnxOxKWPs%2BTiHN8aPHqJGeorPV734PFE%2Bd5g%40mail.gmail.com.
--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
Join us in IRC at http://webchat.freenode.net/?channels=jpos
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/529C38C0.6050505%40talktalk.net.
ATM protocol manuals are not freely available but they do come along with the ATMs , so you can most likely get to them through the entity that owns them to write the driver for.Emulators are a good bet for convenience as testing with real atms can be impractical as you would need access to a test atm.I have used Paragons atm emulator in the past and would vouch for it , got really good support on it, although now its a part part of ACI and as all ACI things, chances are it will be very expensive.Lexcel is another one that comes to mind, for which I have no hands on experience.-chhil
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/529c8da4.c4293c0a.5c58.6463%40mx.google.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/0ae3c5b8-92fb-4ec8-8663-699d4b95e804%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/1dd256cf-909a-4996-9e4d-d6278d684a42%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/1dd256cf-909a-4996-9e4d-d6278d684a42%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/CALK1Syy2imAqvZDHpt-uuPAA81UkPPobFGenJSUs8CJcE0wWOA%40mail.gmail.com.
From one of Kapilashantha’s files, a sample Diebold message
Incoming message from listener [Hex-dump]: 31311C3535353131313132321C1C35353936334345371C31361C3B353838383833383630303030303530363537343D31353130313031313031303030303F1C1C41414220202041431C30303030303030301C343E36313A34383A37353B3A3637363D1C1C1C311C363030303131301D444930311E414243441E30303030303030303031303030303130303030301C3032313030313030343030301C4337383536454535
If you want to see a partial parser look at
It uses jposee’s FSDMsgX
parses out message grammar (output shown just to understand)
[DBDMessage]
Field [MessageClass] : Fixed [1] : 1
Field [MessageSubClass] : Fixed [1] : 1
Field [fs1] : Fixed [1] :
Field [LUNO] : VAR[0..9] delimiter[0x1C] or EOM : 555111122
Field [TimeVariantPreFS] : [LookAhead]
offset[0] find[0x1C]
[if found]
[IFSetTimeVariantPreSep]
Field [fs2] : Fixed [1] :
Field [TimeVariant] : Fixed [8] : 55963CE7
[if not found]
[Not Set]
Check Field[TimeVariant,]
Field [fs3] : Fixed [1] :
Field [TopOfReceipt] : Fixed [1] : 1
Field [CoOrdNumber] : Fixed [1] : 6
Field [fs4] : Fixed [1] :
Field [TRACK2] : VAR[0..40] delimiter[0x1C] or EOM : ;5888838600000506574=15101011010000?
Field [TRACK3] : VAR[0..106] delimiter[0x1C] or EOM :
Field [OPCode] : VAR[0..8] delimiter[0x1C] or EOM : AAB AC
Field [Amount] : VAR[0..12] delimiter[0x1C] or EOM : 00000000
Field [PinBlock] : VAR[0..16] delimiter[0x1C] or EOM : 4>61:48:75;:676=
Field [BufferB] : VAR[0..32] delimiter[0x1C] or EOM :
Field [BufferC] : VAR[0..32] delimiter[0x1C] or EOM :
Field [LookAheadTrack1ID] : [LookAhead]
offset[0] find[0x31]
[if found]
[IFSetTrack1ID]
Field [TRACK1_ID] : Fixed [1] : 1
Field [TRACK1] : VAR[0..78] delimiter[0x1C] or EOM :
[if not found]
[Not Set]
Check Field[TRACK1,]
Field [LookAheadMICRID] : [LookAhead]
offset[0] find[0x32]
[if found]
[IFSetMicrID]
Field [MICR_ID] : Fixed [1]
Field [MICR] : VAR[0..78] delimiter[0x1C] or EOM
[if not found]
[Not Set]
Check Field[MICR,]
Field [LookAheadtranVeriID] : [LookAhead]
offset[0] find[0x36]
[if found]
[IFSettranVeriID]
Field [TRAN_VERIFICATION_ID] : Fixed [1] : 6
Field [SERIAL_NUMBER] : Fixed [4] : 0001
Field [RESPONSE_TO_LAST_FUNCTION_CMD] : Fixed [1] : 1
Field [RETRACT_OPERATION] : Fixed [1] : 0
Field [GS1] : Fixed [1] :
Field [DEVICE_ID_DISPENSER] : Fixed [4] : DI01
Field [rs1] : Fixed [1] :
Field [CASSETTES_IDS] : VAR[0..5] delimiter[0x1E] or EOM : ABCD
Field [DISPENSE_COUNTS] : VAR[0..25] delimiter[0x1C] or EOM : 00000000010000100000
[if not found]
[Not Set]
Check Field[RESPONSE_TO_LAST_FUNCTION_CMD,]
And the parsed message looks like
<fsdmsgX name="DBDMessage">
<field id="MessageClass" value="1"/>
<field id="MessageSubClass" value="1"/>
<field id="fs1" value=" "/>
<field id="LUNO" value="555111122"/>
<fsdmsgX name="IFSetTimeVariantPreSep">
<field id="fs2" value=" "/>
<field id="TimeVariant" value="55963CE7"/>
</fsdmsgX>
<field id="fs3" value=" "/>
<field id="TopOfReceipt" value="1"/>
<field id="CoOrdNumber" value="6"/>
<field id="fs4" value=" "/>
<field id="TRACK2" value=";5888838600000506574=15101011010000?"/>
<field id="TRACK3" value=""/>
<field id="OPCode" value="AAB AC"/>
<field id="Amount" value="00000000"/>
<field id="PinBlock" value="4>61:48:75;:676="/>
<field id="BufferB" value=""/>
<field id="BufferC" value=""/>
<fsdmsgX name="IFSetTrack1ID">
<field id="TRACK1_ID" value="1"/>
<field id="TRACK1" value=""/>
</fsdmsgX>
<fsdmsgX name="IFSettranVeriID">
<field id="TRAN_VERIFICATION_ID" value="6"/>
<field id="SERIAL_NUMBER" value="0001"/>
<field id="RESPONSE_TO_LAST_FUNCTION_CMD" value="1"/>
<field id="RETRACT_OPERATION" value="0"/>
<field id="GS1" value=" "/>
<field id="DEVICE_ID_DISPENSER" value="DI01"/>
<field id="rs1" value=" "/>
<field id="CASSETTES_IDS" value="ABCD"/>
<field id="DISPENSE_COUNTS" value="00000000010000100000"/>
</fsdmsgX>
</fsdmsgX>
-chhil
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/CAKV%2BfV0JHt-fHCsui598RgjqWRp8sQ66euYOzyTd43COrm6RBg%40mail.gmail.com.