Запрашивая образец кода для 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 Используйте значения в переменных приложения.

Другие вопросы по тегам