Запрашивая образец кода для ISO 8583 verifyone vx520
Я хочу знать пример кода для отправки сообщения на сервер и получить ответ на запрос о подтверждении терминала vx520 с использованием ISO 8583.
1 ответ
Как отмечается в комментарии к вашему вопросу, это не сайт совместного использования кода, поэтому на такой открытый вопрос немного сложно ответить, но, возможно, я могу помочь вам начать с правильной ноги.
Прежде всего, позвольте мне начать с предложения, что если вы контролируете код терминала и сервер, с которым он будет общаться, я предлагаю вам НЕ использовать ISO8583. Да, это промышленный стандарт, и да, он эффективно передает данные, НО его гораздо сложнее использовать, чем, скажем, VISA-1 или XML, или JSON и т. Д. Это означает, что у вас больше возможностей для проникновения ошибок в ваш код. Это также означает, что если что-то пойдет не так, потребуется гораздо больше усилий, чтобы попытаться выяснить, что произошло, и попытаться исправить это. Кроме того, я использовал все эти и другие протоколы и скажу вам, что ISO8583 - один из моих наименее любимых для работы.
Если у вас нет выбора, и вы должны использовать ISO8583, то стоит отметить, что ISO8583 - это не что иное, как спецификация о том, как собирать пакеты данных для связи. В терминале Vx520 (или любом другом терминале VeriFone) нет ничего особенного, что могло бы изменить способ его реализации, в отличие от того, как вы можете это сделать на любой другой платформе C++, КРОМЕ ТОГО, что VeriFone ДОЛЖЕН предоставить вам библиотеку для работы с этой спецификацией, которую вы могут свободно использовать или игнорировать по своему усмотрению.
Вам не нужно использовать эту библиотеку вообще. Вы можете свернуть свои собственные и быть просто в порядке. Вы можете найти больше информации о самой спецификации в Wikipedia, Code Project и некоторых других местах (просто спросите свою любимую поисковую систему). Обратите внимание, что когда я делал свой проект 8583, эта библиотека была мне недоступна. Возможно, я бы так не ненавидел этот протокол, если бы имел к нему доступ... кто знает?
Если вы все еще читаете это, то я предполагаю, что ISO8583 является требованием (или вы жаждете наказания), и что вы заинтересованы в испытании этого движка, предоставленного VeriFone.
Первое, что вам нужно сделать (и, надеюсь, вы уже сделали это), это установить ACT как часть пакета разработки (я также предлагаю вам перейти к DevNet и получить последнюю версию ACT, прежде чем начать работу)..). После установки заголовок библиотеки можно найти по адресу %evoact%\include\iso8583.h
, Документацию о том, как использовать это можно найти на %evoact%\docs
, В частности, см. Главу 6 DOC00310_Verix_eVo_ACT_Programmers_Guide.pdf
,
Очевидно, что попытка включить сюда всю информацию из целой главы была бы нецелесообразной, но чтобы дать вам общее представление о том, как работает механизм, позвольте мне поделиться несколькими выдержками:
Этот двигатель предназначен для настольного привода. Одна процедура используется для сборки и разборки пакетов ISO 8583. Сборка и разборка пакетов ISO 8583 обусловлена следующими структурами:
- Карты Одна или несколько коллекций из 64 битов, которые управляют сборкой пакетов и указывают, что находится в сообщении.
- Таблица полей Определяет все поля, используемые приложением.
- Таблица преобразования Определяет процедуры преобразования данных.
- Таблицы вариантов Дополнительные таблицы, используемые для определения полей вариантов.
Процедура process_8583() используется для сборки и разборки пакетов ISO 8583.
Пример использования process_8583()
дается в другом месте следующим образом:
#include "appl8583.h"
int packet_sz;
void assemble_packet ()
{
packet_sz = process_8583 (0, field_table, test_map, buffer, sizeof( buffer));
printf ("\ fOUTPUT SIZE %d", packet_sz);
}
void disassemble_packet ()
{
packet_sz = process_8583 (1, field_table, test_map, buffer, packet_sz);
printf ("\ fINPUT NOT PROCESSED %d", packet_sz);
}
Чтобы включить этот движок в приложение, измените файлы APPL8583.C и APPL8583.H, чтобы у каждого были все переменные приложения, требуемые в битовой карте, и настройте карту правильно. Скомпилируйте APPL8583.C и свяжите его с вашим приложением и библиотекой ISO 8583. Используйте следующие процедуры для передачи или получения пакета ISO 8583 с использованием механизма интерфейса ISO 8583:
Для передачи пакета ISO 8583
1 Установите значения данных в переменных приложения для передаваемых данных.
2 Вызовите процедуру prot8583_main(). Это создает полное сообщение и возвращает количество байтов в созданном сообщении.
3 Вызовите write() для передачи сообщения.
Чтобы получить сообщение
1 Вызовите read(), чтобы получить сообщение.
2 Вызовите процедуру process_8583(). Это приводит к тому, что все поля помещаются в переменные приложения.
3 Используйте значения в переменных приложения.