我想知道向服务器发送消息的示例代码,并使用ISO8583返回到verifone vx520终端的响应。
发布于 2015-07-06 20:14:31
正如在关于您的问题的评论中所指出的,这不是一个代码共享站点,所以这样一个开放的问题有点难以回答,但是也许我可以让您从正确的角度开始。
首先,让我首先建议,如果您控制了终端代码和它将与之交谈的服务器,我建议您不要使用使用ISO8583。是的,这是一个行业标准,是的,它有效地传递数据,但它比Vis-1、XML或JSON等更难使用。这意味着您有更多的机会让bug潜入您的代码中。这也意味着,如果出了什么问题,就需要付出更多的努力才能弄清楚到底发生了什么,并试图修复它。此外,我还使用了所有这些协议和其他协议,我要告诉您,ISO8583是我最不喜欢使用的协议之一。
假设您没有选择,并且必须使用ISO8583,那么值得注意的是,ISO8583只不过是一个关于如何组装数据包以进行通信的规范。Vx520终端(或任何其他VeriFone终端)没有什么特别之处,可以更改您如何在任何其他C++平台上实现它,但VeriFone确实为您提供了一个库,用于处理您认为合适的可以自由使用或忽略的规范。
你根本不需要使用这个库。你可以自己滚,过得很好。您可以在维基百科、代码工程和其他几个地方找到有关规范本身的更多信息(只需询问您最喜欢的搜索引擎)。注意,当我完成8583项目时,这个库对我来说是不可用的。如果我能接触到这个协议,也许我不会那么讨厌它.谁知道呢?
如果您还在阅读这篇文章,那么我将假设ISO8583是一个要求(或者您是一个贪得无厌的人),并且您对尝试VeriFone提供的这个引擎很感兴趣。
您需要做的第一件事(希望您已经这样做了)是安装ACT作为开发套件的一部分(我还建议您在开始之前先使用DevNet并获得最新的版本.)。安装完后,可以在%evoact%\include\iso8583.h找到库标头。关于如何使用它的文档可以在%evoact%\docs上找到。特别是,请参阅DOC00310_Verix_eVo_ACT_Programmers_Guide.pdf第6章。
显然,尝试在这里包含一整章的信息是超出了范围的,但是为了让你对引擎的工作方式有一个高层次的了解,请允许我分享几个摘录:
这台发动机是为表驱动设计的。使用单个例程来组装和拆卸ISO 8583数据包。ISO 8583数据包的组装和拆卸由以下结构驱动:
process_8583()例程用于组装和拆卸ISO8583数据包。
在其他地方给出了一个使用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数据包: 发送一个ISO8583分组 1在应用程序变量中设置要传输的数据值。 2调用prot8583_main()例程。这将构造完整的消息,并返回构造的消息中的字节数。 3调用write()来发送消息。 以接收消息 1调用read()来接收消息。 2调用process_8583()例程。这将导致将所有字段保存到应用程序变量中。 3使用应用程序变量中的值。
https://stackoverflow.com/questions/31239893
复制相似问题