Преобразователь сообщений ISO8583. Сопоставление спецификаций интерфейса JSON и XML.

Jollier

Professional
Messages
1,127
Reputation
6
Reaction score
1,102
Points
113
Пример преобразования ISO8583 в JSON
В этой статье описывается, как преобразователь ISO8583 создает объект JSON из входящего двоичного сообщения TCP / IP ISO8583, а затем отправляет его на узел HTTp в виде POST. Перейдите к конвертеру ISO8583 в JSON для получения дополнительных сведений и ссылок для скачивания.

Анализ примера преобразования ISO8583 в JSON из Converter.

Возьмите следующий образец сообщения ISO8583

20-08-19 15:53:38:203:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:203:ACQ: Test case: 001-01-Withrawal
20-08-19 15:53:38:203:ACQ: Card set: CagecfiCard01
20-08-19 15:53:38:203:ACQ: Key set: 1
20-08-19 15:53:38:203:ACQ: MessageType :1100
20-08-19 15:53:38:204:ACQ: Bitmap :F2344101A8E080000100000006000000 bits:11110010001101000100000100000001101010001110000010000000000000000000000100000000000000000000000000000110000000000000000000000000
20-08-19 15:53:38:204:ACQ: F02_PAN :5044439101000000111
20-08-19 15:53:38:204:ACQ: F03_ProcessingCode :010000
20-08-19 15:53:38:204:ACQ: F04_AmountTransaction :000000010000
20-08-19 15:53:38:204:ACQ: F07_TransmissionDateTime :0820155338
20-08-19 15:53:38:204:ACQ: F11_SystemTraceAuditNumber :005345
20-08-19 15:53:38:205:ACQ: F12_DateTimeLocalTransaction :000000155338
20-08-19 15:53:38:205:ACQ: F14_DateExpiration :1807
20-08-19 15:53:38:205:ACQ: F18_MerchantType :6011
20-08-19 15:53:38:205:ACQ: F24_FunctionCode :200
20-08-19 15:53:38:208:ACQ: F32_AcquiringInstitutionIdenti:001504
20-08-19 15:53:38:208:ACQ: F33_ForwardInstitutionIdentifi:001504
20-08-19 15:53:38:208:ACQ: F35_Track2Data :5044439101000000111=180762010397626000
20-08-19 15:53:38:208:ACQ: F37_RetrievalReferenceNumber :533836310001
20-08-19 15:53:38:208:ACQ: F41_CardAcceptorTerminalIdenti:10001009
20-08-19 15:53:38:208:ACQ: F42_CardAcceptorIdentification:0015040011123
20-08-19 15:53:38:208:ACQ: F43_CardAcceptorNameLocation :BPM LOCATION DEFAULT CITY MA
20-08-19 15:53:38:208:ACQ: F49_CurrencyCodeTransaction :504
20-08-19 15:53:38:209:ACQ: F72_DataRecord :02001504 100000927D000000010000504001504 10001C000000010000504
20-08-19 15:53:38:209:ACQ: F102_AccountId1 :100000927
20-08-19 15:53:38:209:ACQ: F103_AccountId2 :10001
20-08-19 15:53:38:209:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:209:ACQ: Finished building the message, sending now
20-08-19 15:53:38:419:SYS:Client listener received:00D4
20-08-19 15:53:38:419:SYS:Read length:212
31323130F2304001AEC0800000000000060000003139353035383233393130313030303030303235393031303030303030303030303031303030303038323031353533333830303533343530303030303031353533333836303131303630303135303430363030313530343338353035383233393130313030303030303235393D3138303736323031303339373632363030303533333833363331303030313633323634383030303130303031303039303031353034303031313132332020353034303931303030303039323730353130303031--END
20-08-19 15:53:38:424:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:425:ACQ: Message Received
20-08-19 15:53:38:425:ACQ: MessageType :1110
20-08-19 15:53:38:425:ACQ: Bitmap :F2304001AEC080000000000006000000 bits:11110010001100000100000000000001101011101100000010000000000000000000000000000000000000000000000000000110000000000000000000000000
20-08-19 15:53:38:425:ACQ: F02_PAN :5044439101000000111
20-08-19 15:53:38:426:ACQ: F03_ProcessingCode :010000
20-08-19 15:53:38:426:ACQ: F04_AmountTransaction :000000010000
20-08-19 15:53:38:427:ACQ: F07_TransmissionDateTime :0820155338
20-08-19 15:53:38:427:ACQ: F11_SystemTraceAuditNumber :005345
20-08-19 15:53:38:427:ACQ: F12_DateTimeLocalTransaction :000000155338
20-08-19 15:53:38:427:ACQ: F18_MerchantType :6011
20-08-19 15:53:38:427:ACQ: F32_AcquiringInstitutionIdenti:001504
20-08-19 15:53:38:428:ACQ: F33_ForwardInstitutionIdentifi:001504
20-08-19 15:53:38:428:ACQ: F35_Track2Data :5044439101000000111=180762010397626000
20-08-19 15:53:38:428:ACQ: F37_RetrievalReferenceNumber :533836310001
20-08-19 15:53:38:428:ACQ: F38_ApprovalCode :632648
20-08-19 15:53:38:428:ACQ: F39_ActionCode :000
20-08-19 15:53:38:428:ACQ: F41_CardAcceptorTerminalIdenti:10001009
20-08-19 15:53:38:428:ACQ: F42_CardAcceptorIdentification:0015040011123
20-08-19 15:53:38:428:ACQ: F49_CurrencyCodeTransaction :504
20-08-19 15:53:38:429:ACQ: F102_AccountId1 :100000927
20-08-19 15:53:38:429:ACQ: F103_AccountId2 :10001
20-08-19 15:53:38:429:--------------------------------------------------***--------------------------------------------------
20-08-19 15:53:38:429:ACQ: ************************** TEST PASS **************************
20-08-19 15:53:38:430:ACQ: RC Received:000 RC Expected:000
20-08-19 15:53:38:430:ACQ: Tests Executed:2
20-08-19 15:53:38:430:ACQ: Tests Passed :1
20-08-19 15:53:38:430:ACQ: Tests Failed :1
20-08-19 15:53:38:431:ANL: RC is new in the graph:000

Базовая функциональность
Конвертер ISO8583 в JSON работает в своей базовой конфигурации с помощью сопоставления каждого поля ISO 8583 с полем JSON.

Обычно клиенты хотят, чтобы neapay обрабатывал все данные, связанные с ISO8583, и заранее составлял ответное сообщение для эквайера.

Поэтому мы составляем ответное сообщение и конвертируем ответ на HTTP-узел.

Конвертер приступил к созданию данных JSON
20-08-19 15: 53: 38: 379: ISS: Отправить HTTP-запрос:
[
{
"name": "MessageType",
"value": "0110"
}, {
"name": "Bitmap»,
"value": "F2304001AEC080000000000006000000"
}, {
"name": "F02_PAN",
"value": "5044439101000000111"
}, {
"name": "F03_ProcessingCode",
"value": "010000"
}, {
"name": "F04_AmountTransaction",
"value": "000000010000"
}, {
"name": "F05_AmountReconciliation",
"значение": ""
}, {
"имя": "F06_AmountCardholderBilling ",
" value ":" "
}, {
" name ":" F07_TransmissionDateTime ",
" value ":" 0820155338 "
}, {
" name ":" F09_ConvRateReconciliation ",
"value": ""
}, {
"name": "F10_ConvRateBill",
"value": ""
}, {
"name": "F11_SystemTraceAuditNumber",
"value": "005345"
}, {
"name": "F12_DateTimeLocalTransaction ",
" value ":" 000000155338 "
}, {
" name ":" F13_DateLocalTxn ",
" value ":" "
}, {
" name ":" F14_DateExpiration ",
" value ":" "
}, {
" name ": "F15_DateSettlement",
"value": ""
}, {
"name": "F16_DateConversion ",
" value ":" "
}, {
" name ":" F17_DateCapture ",
" value ":" "
}, {
" name ":" F18_MerchantType ",
" value ":" 6011 "
}, {
"name": "F19_AcquiringInstitutionCountryCode",
"value": ""
}, {
"name": "F21_CntryCodeFrdInst",
"value": ""
}, {
"name": "F22_POSDataCode",
"value": ""
}, {
"name": "F23_CardSequenceNumber",
"value": ""
}, {
"name": "F24_FunctionCode",
"value": ""
}, {
"name": "F25_MessageReasonCode",
"value": ""
} , {
"name": "F26_CardAcceptorBusinessCode",
"value": ""
}, {
"name": "F27_ApprovalCodeLength",
"value": ""
}, {
"name": "F28_DateReconciliation",
"value": ""
}, {
"name": "F29_ReconciliationIndicator",
"value": ""
}, {
"name": "F30_AmountsOriginal",
"value": ""
}, {
"name": "F32_AcquiringInstitutionIdentificationCode",
"value": "001504"
}, {
"name": "F33_ForwardInstitutionIdentificationCode ",
" value ":" 001504 "
}, {
" name ":" F34_PANExtended ",
" value ":" "
}, {
" name ":" F35_Track2Data ",
" value ":" 5044439101000000111 = 180762010397626000 "
}, {
" name ":" F36_Track3Data ",
" value ":" "
}, {
"name": "F37_RetrievalReferenceNumber",
"value": "533836310001"
}, {
"name": "F38_ApprovalCode",
"value": "632648"
}, {
"name": "F39_ActionCode",
"value": "000"
}, {
"name": "F40_ServiceCode",
"value": ""
}, {
"name": "F41_CardAcceptorTerminalIdentification",
"value": "10001009"
}, {
"name": "F42_CardAcceptorIdentificationCode",
"value": "0015040011123"
}, {
"name": "F43_CardAcceptorNameLocation",
"value": ""
}, {
"name": "F44_AdditionalResponseData",
"value": ""
}, {
"name": "F45_Track1Data",
"value": ""
}, {
"name": "F46_AmountFees",
"value": ""
}, {
"name": "F48_AdditionalDataPrivate",
"value": ""
}, {
"name": "F49_CurrencyCodeTransaction",
"value": "504"
}, {
"name": "F50_CurrencyCodeReconciliation",
"value": ""
}, {
"name": "F51_CurrencyCodeCardholderBilling",
"value": ""
} , {
"name": "F52_PINData",
"value": ""
}, {
"name": "F53_Security_CtlInfo",
"value": ""
}, {
"name": "F54_AdditionalAmounts",
"value": ""
}, {
"имя": "F55_ICCData",
"значение": ""
}, {
"name": "F56_OriginalDataElements",
"value": ""
}, {
"name": "F57_AuthorisationLifeCycleCode",
"value": ""
}, {
"name": "F58_AuthorisingAgentInstitutionIDCode",
"value": ""
}, {
"name": "F59_TransportData",
"value": ""
}, {
"name": "F60_CSMReserved",
"value": ""
}, {
"name": "F62_Reserved",
"value": ""
}, {
"name": "F63_PrivateData",
"value": ""
}, {
"name": "F64_MAC",
"value": ""
} , {
"name": "F67_ExtendedPaymentData",
"value": ""
}, {
"name ":" F68_ReceivingInstitutionCountryCode ",
" value ":" "
}, {
" name ":" F70_AuthInstCntryCode ",
" value ":" "
}, {
" name ":" F72_DataRecord ",
" value ":" "
}, {
"name": "F90_OriginalDataElements",
"value": ""
}, {
"name": "F93_TxnDestInstID",
"value": ""
}, {
"name": "F94_TxnOrgInstId",
"value": " "
}, {
" name ":" F95_ReplacementAmounts ",
" value ":" "
}, {
" name ":" F96_KeyManagementData ",
" value ":" "
}, {
" name ":" F100_RecInstIdCode ",
" value ": ""
}, {
"имя": "F102_AccountId1",
"значение": "100000111"
}, {
"name": "F103_AccountId2",
"value": "10001"
}, {
"name": "F123_Reserved",
"value": ""
}, {
"name": "F124_NFC",
"value": ""
}, {
"name": "F127_ReservedPrivate",
"value": ""
}, {
"name": "F128_MAC",
"value": ""
}
]

Стандартное поведение преобразователя

Хост HTTP имеет высшее слово и может изменять поля любым способом, даже добавлять или удалять поля.

Наш преобразователь заботится обо всей логике, но предлагает хосту возможность изменить что-либо, если хост захочет.

Хост может ответить со всеми полями, без полей, с некоторыми полями или просто с пустым HTTP-ответом 200, и мы повторно отправим ответ хосту ISO8583.

Пример запуска имитатора эквайера ISO8583, конвертера ISO8583 в HTTP / JSON и сервера HTTP Host

neapay-converter-iso8583-json.png


Пример отказа HTTP-хоста

neapay-http-server-declined-transaction.png


В этом примере авторизации в формате ISO8583-87 хост, который получает только JSON данных ответа, решил отклонить транзакцию, которую преобразователь решил утвердить.

Таким образом, конвертер отправляет ответ об отклонении транзакции.

Конвертер может выполнять все MAC, EMV, обмен ключами и проверку PIN, а хост может получать только транзакции, прошедшие предварительную проверку.
 
Top