请教:如何向POS发送8583报文,又如何读取POS返回的数据?

fzx4936 2011-10-20 09:38:52
比如我想发送AMOUNT, TRANSACTION 这个域 怎么写报文数据(包括BIT MAP) 怎么发送报文 怎么得到返回值(确认交易是否成功)?
说明:pos型号5610,已安装见费出单程序.
由于以前从没接触过8583协议, 所以求做过类似项目的老师出手相助,
最好能给出简单代码,说明使用的控件.
急!!!
先行谢过!

...全文
715 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosmic-bo 2012-06-28
  • 打赏
  • 举报
回复
请问一下你的问题解决了吗? 我现在也是遇到你说的这些问题 ,希望得到你的帮助
li163 2011-11-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 clear_zero 的回复:]
你的pos机应该有帮助说明它是怎么解码报文的

如果没有的话,你需要和厂家联系然后取得文件,然后按照上面的例子来发送报文
[/Quote]

厂家是否有网站,上面可能有资料和例子
fzx4936 2011-11-02
  • 打赏
  • 举报
回复
说明一下
pos机厂家一般是不提供接口的 大部分厂家的pos程序不接收外部数据
只有部分有特殊需要的用户付费让厂家开发pos机软件能接收标准8583报文

由于这部分不涉及pos软件开发 应该不是相关软件公司的保密部分
做过超市收银软件的朋友应该有相关的经验吧
clear_zero 2011-11-01
  • 打赏
  • 举报
回复
你的pos机应该有帮助说明它是怎么解码报文的

如果没有的话,你需要和厂家联系然后取得文件,然后按照上面的例子来发送报文
贝隆 2011-11-01
  • 打赏
  • 举报
回复
这个的确很专业
王二.麻子 2011-11-01
  • 打赏
  • 举报
回复
http://www.itpub.net/thread-419521-1-1.html

好像google能出来不少,这个好像写的不错
fzx4936 2011-10-26
  • 打赏
  • 举报
回复
帖子竟然沉了 自己顶起来 继续等高人指点
fzx4936 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yiguangqiang88 的回复:]
学习……
原来楼主普及来的……受教了……
[/Quote]
楼上的误会了 我现在也是到处搜集资料
还是在等高人出手 因为这东东很难搞定的
最怕的是懂的人不肯教咱.
  • 打赏
  • 举报
回复
学习……
原来楼主普及来的……受教了……
fzx4936 2011-10-21
  • 打赏
  • 举报
回复
自己找到个例子 留存备查
-----------------------------------------------------------------------------------------------
一个8583报文的简单例子
发表:不详 阅读:次 关键字: 字体:[大 中 小]
8583是这样的,我举一个简单的例子。以64个域的报文来举例,域是什么我也说不清楚,你可以把它想象为医院放药的抽屉,一个抽屉预先定义好要放什么东西,比如伟哥,或者感冒冲剂,一般情况下定义放伟哥的抽屉最好永远放伟哥,不要放别的东西,当然你也可以放板蓝根,但这样的话容易出错,也不太规范。

数量是这么规定的,有三种情况:
首先是定量,也就是说定义好这个抽屉放30瓶伟哥,就放30瓶一瓶也不能多,一瓶也不能少。
其次是LLVAR,也就是说用1位字节定义数量,比如0x12表示里头放12瓶,当然你也可以理解为16+2=18瓶。但要是0x12表示12,那0x13就等于13,不要0x12=12 ,0x13=19
最后是LLLVAR,是2位字节表示数量,比如 0x01,0x04 = 104

域也就是这样的,一共有64个域,每个域预先定义了内容和长度

有一个叫做BITMAP的,也就是位图,定义了一个数据包里包含
了几个域。举个例子
20 00 38 00 00 00 00 34
你把它解开,排列一下
20 = 0010 0000
00 = 0000 0000
38 = 0011 1000
依次类推,得到一串数字
0010 0000 0000 0000 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0011 0100
然后从左到右数一下里头含有1的是那几位,上面的例子我们得到
3 19 20 21 59 60 62 ,这几位含有1。也就是说接下来的报文包含有这几个域。

好了说了那么多,我们来做一个简单的例子比如消费交易,需要上送交易类型,卡号等等,定义如下

卡号 第2域 LLVAR BCD 5309987876545342
交易类型 第3域 长度6 BCD 900000
金额 第4域 长度12 BCD 100分
时间 第7域 长度8 BCD 20030802
2磁道信息 第35域 LLVAR ASCII 123456
3磁道信息 第36域 LLLVAR BCD 123456001
商户号 第41域 LLVAR ASCII 98765432

好了我们现在开始打包,首先按照长度和类型把上面的数据处理一下
卡号 165309987876545342
交易类型 900000
金额 000000000100
时间 20030802
2磁道 06313233343536
3磁道 0009123456001
商户号 083938373635343332

接下来我们按照域信息生成位图
因为有第2域,所以第二个位置是1,由第三域,所以第三个位置
是1,。。。
依此类推得到一串数字
0111 0010 0000 0000 0000 0000 0000 0000 0011 0000 1000 0000 0000 0000 0000 0000
转换过来,就是
72 00 00 00 30 80 00 00 这个就是BITMAP了
然后把上面的数据按照BITMAP+每个域的内容,依次排列
就得到这个包的内容了
7200000030800000165309987876545342900000000000000100
20030802063132333435360009123456001083938373635343332
前头再加上TPDU和MSGID就是最后的数据包

很简单把,解包也一样的。


写得不好,让各位见笑了。
fzx4936 2011-10-21
  • 打赏
  • 举报
回复
看来我这个问题关注的人不多
哪位老师愿意帮我解答 我再奉送200分

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧