pos机发邮件《pos机如何发送8583》

本篇文章给大家谈谈pos机如何发送8583,以及pos机发邮件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。办理pos机添加微信18127011016

pos机 8583文档上面的 受卡方是什么意思 ?具体点

你好,受卡发的就是收单方,一般指的是第三方服务机构,或者是收单银行。例如说,通过支付通的pos机刷交通银行卡,结算到工商银行卡,那么收单方就是支付通,而交通银行就是发卡行,工商银行就是收单行。

ISO8583报文怎么解

pos机发邮件《pos机如何发送8583》

单纯的讲IS08583那些字段的定义,我觉得没有什么意思,标准中已经对每个字段解释的非常详细了,如果你觉得理解英文版的ISO8583规范有些困难,网上也有同行为我们翻译好的中文版ISO8583规范,所以我的目的是达到阅读本文后能够对ISO8583知其然,亦知其所以然,使以前基本没有接触它的人也能够达到掌握ISO8583报文规范。 好了,我们该转入正题了。 最开始时,金融系统只有IBM这些大的公司来提供设备,象各种主机与终端等。在各个计算机设备之间,需要交换数据。我们知道数据是通过网络来传送的,而在网络上传送的数据都是基于0或1这样的二进制数据,如果没有对数据进行编码,则这些数据没有人能够理解,属于没有用的数据。起初的X.25、SDLC以及现在流行的TCP/IP网络协议都提供底层的通讯编码协议,它们解决了最底层的通讯问题,能够将一串字符从一个地方传送到另一个地方。但是,仅仅传送字符串是没有太大意义的,怎样来解析字符串代表什么内容是非常重要的,否则传送一些“0123abcd”的字符串也是无用的乱码。 让我们随着时光回到几十年前的某个时刻,假设我们被推到历史的舞台上,由我们来设计一个通用报文协议,来解决金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。此时,技术是在不断的前行,当初IBM一支独秀的局面好像已经不妙了,各种大小不一的公司都进入金融行业以求能有所斩获,呈一片百花齐放的局面。我们怎样来设计一个报文协议,能够将这些如雨后春笋般出现的所有公司都纳入进来,其实也不是一件很简单的事。 我们还是先一步步的来考虑吧。金融行业其实涉及到的数据内容并不是成千上万,无法统计,恰恰相反,是比较少的。我们都可以在心底数得过来,象交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁3磁数据、交易序列号等,把所有能够总结出来的都总结起来不过100个左右的数据。那我们可以首先简单的设计ISO8583,定义128个字段,将所有能够考虑到的类似上面提到的“帐号”等金融数据类型,按照一个顺序排起来,分别对应128个字段中的一个字段。每个数据类型占固定的长度,这个顺序和长度我们都事先定义好。这样就简单了,要发送一个报文时,就将128个字段按照顺序接起来,然后将接起来的整串数据包发送出去。 任何金融软件收到ISO8583包后,直接按照我们定义的规范解包即可,因为整个报文的128个字段从哪一位到哪一位代表什么,大家都知道,只要知道你的数据包是ISO8583包即可,我们都已经定义好了。比如第1个字段是“交易类型”,长度为4位,第2个字段位是“帐号”,为19位等等。接收方就可以先取4位,再取接着的19位,依次类推,直到整个数据包128个字段都解完为止。 其实这种做法真是简单直接,基本上就可以满足需要了。不过我们有几个问题要思考下:

1、 我怎么知道每个字段的数据类型呢,是数字还是字符?

2、 每个传送的报文都把128个字段都传过去,那网络带宽能够承受得了,有时候我可能只需要其中5个字段,结果多收到了123个无用的字段。

3、 如果我某些字段的长度不固定,属于变长怎么办,因为你现在解包是当作数据包每个字段都是固定的,用C语言解包时直接依靠指针取固定长度的一串字符做为一个字段。 我们来一一解决这些问题。 第一个问题简单,我在定义ISO8583时除了定义每个字段表示什么,还规定其内容是数字或是字符等即可。考虑可能出现的类型不过有以下几种:字母、数字、特殊字符、年月日等时间、二进制数据。比如我对128个字段中的“商户类型”字段定义其长度是15,同时定义其类型为字母。再精细点,如果“商户类型”里面的数据同时包括数字和字母呢?那我们就定义其类型为字母也可,为数字也可,即一个字段可以同时属于多个类型。 第二个问题稍微复杂点。其本质就是如果我只传128个字段的5个字段,接收方怎么知道我传了哪几个字段给它了。要是我们把剩下的123全部填成0或其他特殊标识,标明该字段不需要使用?这种处理方法没有半点用处,没有解决网络带宽的本质问题,还是要传128个字段。 换个思路,我在报文前面加上个包头,包头里面包含的信息能够让别人知道只传了5个字段。怎样设计这个包头,可以这样,我们用16个字节,即128个bit(一个字节等于8bit)来表示128个字段中的某个字段是否存在。每个bit在计算机的二进制里面不是1就是0,如果是1就表示对应的字段在本次报文中存在,如果是0就是不存在。这样好了,如果别人接收到了ISO8583报文,可以先根据最前面的报文头,就知道紧接着报文头后面的报文有哪些字段,没有哪些字段了。比如,我要发送5个字段,分别属于128个字段中的第2、3、6、8、9字段,我就可以将128bit的报文头填成011001011000000000………..,一共128个bit,后面就全是0了。注意其中第2、3、6、8、9位为1,其他都为0。 有了这个128bit的报文头,我们就可以只发送需要的5个字段了。怎样组织报文?先放上这128bit,即16个字节的头,然后在头后面放2、3、6、8、9字段,这些字段紧挨在一起,3和6之间也不需要填上4、5这两个字段了。接收方收到这个报文,它会根据128bit的报文头来解包,它自然知道把第3个字段取出后,就直接在第3字段的后面取第6个字段,每个字段的长度在ISO8583里面都定义好了,很轻松就把数据包解出来了。 这下好了,为了解决上面的第二问题,我们只是在报文中增加了16个字节的数据,就轻松搞定了,我们把这16个字节称为bit map,即位图,用来表示某个位是否存在。不过我们再稍微优化一下,考虑到很多时候报文不需要128个字段这么多,其一半64个字段都不一定能够用完。那我可以将报文头由128bit减到64bit,只有在需要的时候才把剩下的64bit放到报文里面,这样报文长度不又少了8个字节吗? 是个好主意。我们把ISO8583的128个字段中最常见的都放到前64个字段中,那我们可以将处理缩小一倍。这样我一般发送报文时只需发送64bit,即一个字节的报文头,再加上需要的几个字段就可以了。如果有些报文用到64到128之间的字段呢?这个也好办,我把64bit报文头的第一位bit用来代表特殊含义,如果该bit为1,则表示64bit后面跟了剩下的64bit报文头;如果第一位bit为0,则表示64bit后面没有跟剩下的64bit报文头,直接是128个字段中的报文了。那们,接收方会判断一下报头的第一个bit是1还是0,从而知道报文头是64bit还是128bit了,就可以做相应处理。因为报文头第二个64bit属于有时候有,所以我们叫它Extended bit map扩展位图,相应的报文头最开始的64bit我们叫它Primary bit map主位图。我们直接把扩展位图固定放到128个字段的第一个字段,而主位图每个数据包都有,就强制性放在所有128个字段的前面,并不归入128个字段中去。 第三个问题可以考虑这样解决。比如第2个字段是“帐号”,是不定长的,可能有的银行帐号是19位,有的是17位等。我们定ISO8583规范时可以规定第2个字段是25位,这下足够将19和17的情况都包含进来,但是如果以后出现了30位的怎么办?那我们现在将字段定为100位。以后超过100位怎么办,况且如果你只有19位的帐号,我们定义了100位,那81位的数据不是浪费了网络的带宽。看来预先定义一个我们认为比较大的位数是不太好的。

我们这样,对于第2个字段“帐号”,在字段的开头加上“帐号”的长度。比如帐号是0123456789,一共10位,我们变成100123456789,注意前面多了个10,表示后面的10位为帐号。如果你接触过COM里面的BSTR,应该对这种处理比较熟悉了。接收方收到该字段后,它知道ISO8583规定第2个字段“帐号”是变长的,所以会先取前面的2位出来,获取其值,此时为长度,然后根据该长度值知道应该拷贝该字段后面哪几位数据,才是真正的帐号。如果你觉得长度如果只有两位最多只能表示99位长,不太够,我们也定义可以允许前面3位都为长度的变长字段,这样就有999位长,应该够了吧。在规范里面如果我定义某个字段的属性是“LLVAR”,你注意了,其中的LL表示长度,VAR表示后面的数据,两个LL表示两位长,最大是99,如果是三位就是“LLLVAR”,最大是999。这样看我们定义的ISO8583规范文档时直接根据这几个字母就理解某个变长字段的意思了。 该解决的几个问题到这里都解决了,我们来回顾下自己设计的ISO8583规范。其实没有什么,无非是把金融行业可能出现的数据分门别类,排好顺序,接着把它们连接起来,组成一个报文发送出去而已。其中针对该报文的设计进行了一些优化,引入了bit map位图的概念,也算是一个不错的想法。 剩下的工作就简单了,我们就直接收集金融行业可能出现的数据字段类型,分成128个字段类型,如果没有到128个这么多就先保留一些下来,另外考虑到有些人有特殊的要求,我们规定可以将128个字段中的几个字段你自己来定义其内容,也算是一种扩展了。 这样,最后我们就得到了ISO8583规范的那张字段描述表了。想要详细的知道每个字段的含义直接对着表看就可以,比较简单

如何获取收银系统传给pos机的数据

POS机联机交易打单的信息都是后台下发返回8583包解包成功后打印的

pos机12位参考号如何查询

作者:梁川

链接:

下面定义及术语参考了《中国银联POS终端规范》及《中国银联银行卡联网联合技术规范V2.1 第2部分 报文接口规范》两个规范。

批次号(Batch NO.):POS从签到起至结算、签退为止的交易为一批次,交易批次号标识一批交易。POS中心为每个POS的每个批次分配一个批次号,在签到响应报文中下传给POS终端。

对应银联ISO8583报文的报文头域7:

批次号(Batch Number)

序号(Ref. NO.):POS中心为交易分配的流水号,在响应报文中下传给POS终端作为对账参考号,并用于事后查证。

对应银联ISO8583报文的域37:检索参考号(Retrieval Reference Number)

授权号(Auth Code):授权标识应答码,简称“授权码”。是发卡行返回或银联CUPS代授权时返回的授权序号。

对应银联ISO8583报文的域38:授权标识应答码 Authorization Identification Response

查询号(Trace NO.):POS机为每一笔交易产生的顺序编号。POS每上送一次交易此号码增加1。 POS流水号为6位数字,值从1至999999循环使用。在自动冲正时,POS中心依据POS流水号作为确定被冲正交易的要素之一。

交易发起方赋予交易的一组数字,与域7(交易传输时间 Transmission Date/Time)、域32(受理机构标识码 Acquiring Institution Identification Code)和域33(发送机构标识码 Forwarding Institution Identification Code)的组合值唯一标识一笔交易的编号。

凭证号(Voucher NO.):查询号(Trace NO. 也叫POS流水号)也作为交易凭证号(在签购单上打印为Voucher NO.),在进行撤销等交易时,输入原交易凭证号作为确定原交易的要素之一,并且必须上送原交易的凭证号。

要确认一笔交易,分为发卡行和收单方:

对发卡行来说:卡号+参考号+授权号,就能够确定一笔交易

对于收单方来说:凭证号+域7(对应签购单上的日期/时间)+域32(对应签购单上的收单机构)+33域(对应签购单上的发卡机构)能够唯一确定一笔交易

因此如果是向发卡行投诉,则需要提供卡号、参考号、授权号。

如果是向收单方投诉,则需要提供凭证号、交易日期时间、收单机构、发卡机构

如何向POS发送8583报文,又如何读取POS返回的

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就是最后的数据包

pos机怎么刷卡的方法和步骤

具体方法步骤如下:

1、第一步先开机,长按“取消”键就可以开机了,有的POS为了安全起见会有账号和密码,如果有的话,签到就可以了;

2、按完“取消”键就成功开机了如图,在POS机屏幕显示的下面第一行最右边有个“功能”键,按一下功能键;

3、按完功能键会出现“1、消费”;“2、二维码”;“3、撤销”;“4、查询”;“5、预授权”;“6、其他”;这个时候就选择“1、消费”;

4、选择完“1、消费”之后,会弹出消费的一个提示:“请刷卡或插IC卡或手输卡号”,如果卡带芯片就插卡,不带的话就直接往卡槽刷卡即可;

5、刷完卡之后会出现你的卡号,核对无误之后按“确认”键;

6、按完“确认”键之后,会提示“请输入金额”,就把想刷的金额输入进去之后就可以了,一定要注意多按两个零,假如输入1元钱,上面只是1分钱,多按两个0才是一元钱;

7、输入完之后POS机会提示“请输入密码”,就拿给刷卡的那个人,让他输入一下密码就可以了;

8、输入完之后,按“确认”键,这个时候会打印出两联客人消费的卡单,一联商户联给刷卡人签字留底,另外一联存根联给刷卡的那个人。

扩展资料:

刷卡机简称POS终端,终端通过电话线拨号的方式将信息首先发送到银联的平台,银联平台识别相关信息之后会将扣款信息发送到发卡银行,经发卡银行确认之后,再回发信息至银联平台,银联确认之后,会再将已处理的信息发送至前置终端,终端收到确认后的信息,然后打印单据。

移动POS终端,原理一样,其信息发送是通过数据信号发送接收。通信费用不多,按流量计算,固定终端通信费用按市话标准由电信公司收取

产品特点

1、便捷:不受时间、空间限制,随时、随地、随心所欲完成支付。

2、安全:实名制交易。实名登记,与手机流量卡号、PSAM卡、机身号唯一关联。

3、实惠:参照人民银行及银联的收费标准。

4、高效:交易即时完成,资金实时到账,是目前最便捷的转账工具之一。

5、支持所有银行卡和信用卡。

6、多重加密,安全交易,高科技硬件加密芯片配合软件安全防护,保证交易数据安全传输。

7、便民缴费,轻松网购,水电煤气费在线缴,网上购物直接刷卡,生活如此简单。

8、无需网银、无需取现,让你随时随地支付随心

为电商、实体商户提供移动刷卡支付解决方案。

9、易携带、不受时间地点限制,随时随地

参考资料来源:百度百科 :刷卡机

关于pos机如何发送8583和pos机发邮件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。办理pos机添加微信18127011016

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。