首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >询问ISO 8583 verifone vx520的示例代码

询问ISO 8583 verifone vx520的示例代码
EN

Stack Overflow用户
提问于 2015-07-06 07:21:56
回答 1查看 1.7K关注 0票数 1

我想知道向服务器发送消息的示例代码,并使用ISO8583返回到verifone vx520终端的响应。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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数据包的组装和拆卸由以下结构驱动:

  • 映射一个或多个64位集合,这些集合驱动数据包程序集并指示消息中的内容。
  • 字段表定义应用程序使用的所有字段。
  • 转换表定义了数据转换例程.
  • 用于定义变体字段的变量表可选表。

process_8583()例程用于组装和拆卸ISO8583数据包。

在其他地方给出了一个使用process_8583()的示例如下:

代码语言:javascript
复制
#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使用应用程序变量中的值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31239893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档