红米4没有防伪码3pin码是多少

| 商品搜索:
| 热门摄影摄像产品线: |
& 松下AG-HPX303参数
参数显示:显示全部参数隐藏相同参数
&松下AG-HPX303 属于松下专业系列摄像机,
产品价格&价格趋势网上购买---&基本参数
&最大像素数220万--&光学变焦13.0倍--&录制格式AVC-Intra 100/AVC-Intra 50/DVCPRO HD/DVCPRO50/DVCPRO/DVAVC-Intra 100,AVC-Intra 50,DVCPRO HD,DVCPRO50,DVCPRO,DVAVCHD 标准(MPEG-4 AVC/H.264),DV 标准(AVI 类型2)&产品类型专业DV高清DV,专业DV高清DV,专业DV&产品定位专业摄像机专业摄像机专业摄像机&最高分辨率--&有效像素数2203×220万3×220万&取景器彩色取景器,0.45英寸--&取景器像素1226.0万122.6万122.6万&接口属性USB 2.0--&功能参数
&夜摄功能彩色夜摄功能--&遥控功能支持--&其他参数
&存储介质P2卡-SD/SDHC/SDXC卡&随机附件富士能镜头,前镜头盖,后镜头盖,变焦杆,镜头连接器盖,镜头遮光罩,镜头遮光罩盖,眼罩,肩带,前音量钮(带螺丝),BNC连接器盖,XLR连接器盖,软件光盘AC 适配器电池充电器AC 电源线DC 电源线5400mAh 电池组无线遥控器(带有钮扣型电池)麦克风固定装置眼杯肩带P2存储器驱动器软件安装光盘AC适配器电池充电器AC电源线DC电源线无线遥控器(带有钮扣型电池)麦克风固定装置眼杯肩带软件安装光盘&附带软件HD Writer 2.5E HDC版--&产品电源直流12V--&功耗18W-11.8W&产品颜色黑色--&产品尺寸246×251×549mm180×195×438mm180×195×438mm&产品重量5000.0g2500.0g2400.0g&屏幕参数
&液晶屏尺寸3.200英寸3.450英寸3.450英寸&液晶屏像素92.1万92.0万92.0万&音效
&内置麦克风支持支持支持&录音功能16 bits,48kHz/2声道,比数字(Dolby AC3)/2通道-音频记录信号:48kHz/16 比特数字音频格式:[AG-AC160的PH 模式]线性PCM2 通道/ 杜比数字2 通道,可切换[AG-AC160的PM/HA/HE 模式]杜比数字2 通道&镜头参数
&感光器类型3CMOS3MOS3MOS&感光器尺寸1/3英寸--&数字变焦--2/5/10倍&实际焦距3.9-51/35毫米f=3.9-86毫米f=3.9-86毫米&滤光镜43毫米72毫米72毫米&对焦系统自动对焦、手动对焦--&闪光灯外接视频灯--&拍摄性能
&快进/倒带时间140秒(当使用AY-DVM63时)--&最低照度0.67lx(F1.6,增益24dB,快门速度1/25 秒)0.2流明0.4流明&快门描述50i/50p模式:1/5-1/2000,25p模式:1/2-1/1000秒--&防抖系统光学防抖--&照片模式静止图像--&其他功能肩扛式设计,带有XLR型线路/话筒输入的专业级音频,带有缩略图的快速场景检索--&存储参数
&存储容量可扩展至最高32GB--&输入输出
&AV端子视频输出、分量视频输出、音频输出、话筒输入、XLR输入、HDMI输出-SDI OUT:BNCx1,0.8V[p-p],75Ω,高清/标清可切换&USB接口USB 2.0USB2.0USB2.0&HDMI接口-支持支持&其他接口同步锁相输入: BNC × 1, 1.0V [p-p] 75 Ω 视频输出: BNC × 1, 1.0V[p-p] 75 Ω 麦克输入: XLR (3pin)×2, +48 V 兼容线路: -40/-50/-60 dBu (可利用菜单进行选择);音频输入: XLR (3pin)×2 CH1/CH2),LINE/MIC/+48V 可切换;线路: 0 dBu, MIC: -50/-60 dBu (可利用菜单进行选择);无线装置: 25 pin,D-SUB, 40dBu;音频输出: 针型插孔×2(CH1/CH2),输出:316 mV,600Ω;耳机: 立体声迷你插孔(直径3.5mm);时码输入: BNC×1,0.5 V [p-p]to 8V [p-p],10kΩ;时码输入: BNC×1,低阻抗,2.0V ±0.5V [p-p]IEEE 1394 6pin,数字输入/输出, 基于 IEEE 1394 标准.耳机接口:Φ3.5mm 立体声微型插孔x1耳机:直径3.5mm 立体声微型接口&热靴支持--&
专业系列其它摄像机[比较][比较][比较]热门摄像机热门松下摄像机[比较][比较]关注该产品的用户还喜欢24600元以上摄像机
图文精选高清大图推荐文章论坛热帖??????????热门产品推荐产品??????????????????????????????
,,最精彩的内容尽在泡泡网
&&Copyright &
PCPOP, All Rights Reserved 泡泡网 版权所有
求鉴定更多扫描下载MIUI论坛APP
经验109 米
在线时间74 小时
积分 178, 距离下一级还需 22 积分
积分 178, 距离下一级还需 22 积分
机型小米手机1/1S
哪位高手能告诉我小米手机的PIN2码是什么啊,设置固定拨号时用到了,可是在小米网上查不到,急啊
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验869 米
在线时间176 小时
版本4.4.25
玩机小白白
积分 1179, 距离下一级还需 821 积分
积分 1179, 距离下一级还需 821 积分
机型小米手机1/1S
签到次数11
MIUI版本4.4.25
PIN2(PersonalIdentificationNumber2)码是在进入某种特殊功能时(如设置固定号码,设置通话计费等)所要输入的个人识别码。 Pin2码是由供应商提供的Sim卡另一密码,用于限定拨号等功能的个人识别码,主要用于消除呼叫费用资料、设定通话费的计费币别和计算单位、费用限制功能、限定拨号(&保密设定&---&限定拨号&开启之后手机只能拨其中设定的号码且不可用电话本。& & 你不说我也不知道 应该看看说明书之类的吧 同求知识
在线时间1 小时
版本JMACNAH1.0
积分 79, 距离下一级还需 121 积分
积分 79, 距离下一级还需 121 积分
机型小米手机1/1S
MIUI版本JMACNAH1.0
二楼的等于没说
到底是多少?
经验3216 米
在线时间340 小时
版本V6.5.0.1.LXACNCD
积分 3531, 距离下一级还需 1469 积分
积分 3531, 距离下一级还需 1469 积分
机型小米手机2/2S
签到次数101
MIUI版本V6.5.0.1.LXACNCD
登陆移动(联通)网上营业厅或者到营业厅查查就好了
经验3216 米
在线时间340 小时
版本V6.5.0.1.LXACNCD
积分 3531, 距离下一级还需 1469 积分
积分 3531, 距离下一级还需 1469 积分
机型小米手机2/2S
签到次数101
MIUI版本V6.5.0.1.LXACNCD
登陆移动(联通,电信)网上营业厅或到营业厅查查呗
经验623 米
在线时间41 小时
版本3.9.27
积分 663, 距离下一级还需 1337 积分
积分 663, 距离下一级还需 1337 积分
机型小米手机1/1S
签到次数59
MIUI版本3.9.27
pin pin2 puk 都是和手机卡有关的,和手机无关~&&打当地10086咨询
经验7049 米
在线时间2439 小时
版本V8.0.1.0.KHICNDG
【I'm 王同学】/m1s
积分 9799, 距离下一级还需 10201 积分
积分 9799, 距离下一级还需 10201 积分
机型小米手机1/1S
签到次数39
MIUI版本V8.0.1.0.KHICNDG
运营商不提供pin2
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI三周年
MIUI三周年纪念勋章
已关注微信
MIUI 100周
100周发布纪念勋章
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号微信扫一扫快速获取电话
微信扫一扫快速获取电话
当前信息较少,为您智能推荐以下信息
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
微信扫一扫快速获取电话
其他行业热门商机
橱柜相关分类:
橱柜相关搜索词:
大连招商加盟所有分类:
大连金牌店铺:
& 列表网&京ICP证100421号&京ICP备号-1&琼公网安备08ISO8583协议-银行交易的标准
ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。
&&&&&&8583包前面一段为位图,用来确定包的字段域组成情况。&&
&&&&&&其中位图是8583包的灵魂,它是打包解包确定字段域的关键,&而了解每个字段域的属性则是填写数据的基础。&&
1、&位图描述如下:&&
位图位置:1&&
格式:定长&&
类型:B16(二进制16位,16*8=128bit)&&
&&&&如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。&&
&&&&如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。&&
选用条件:如使用65到128域,需设位图域第一位为'1'&&
2、每个域的定义如下:&&
typedef&struct&ISO8583&&
&&&&&int&bit_&&&
&&&&&char&*data_&&&
&&&&&int&&&&
&&&&&int&length_in_&&
&&&&&int&variable_&&&
&&&&&int&&&&
&&&&&char&*&&&
&&&&&int&&&&
}&ISO8583;
ISO8583&Tbl]&=&&
&{0,"BIT&MAP,EXTENDED&",&8,&0,&0,&2,&NULL,0},&&
&{0,"PRIMARY&ACCOUNT&NUMBER&",&22,&0,&2,&0,&NULL,0},&&
&{0,"PROCESSING&CODE&",&6,&0,&0,&0,&NULL,0},&&
&{0,"AMOUNT,&TRANSACTION&",&12,&0,&0,&1,&NULL,0},&&
&{0,"NO&USE&",&12,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&12,&0,&0,&0,&NULL,0},&&
&{0,"TRANSACTION&DATE&AND&TIME&",&10,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&0,&0,&NULL,0},&&
&{0,"SYSTEM&TRACE&AUDIT&NUMBER&",&6,&0,&0,&1,&NULL,0},&&
&{0,"TIME,&LOCAL&TRANSACTION&",&6,&0,&0,&0,&NULL,0},&&
&{0,"DATE,&LOCAL&TRANSACTION&",&4,&0,&0,&0,&NULL,0},&&
&{0,"DATE,&EXPIRATION&",&4,&0,&0,&0,&NULL,0},&&
&{0,"DATE,&SETTLEMENT&",&4,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&4,&0,&0,&0,&NULL,0},&&
&{0,"DATE,&CAPTURE&",&4,&0,&0,&0,&NULL,0},&&
&{0,"MERCHANT'S&TYPE&",&4,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"POINT&OF&SERVICE&ENTRY&MODE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"POINT&OF&SERVICE&CONDITION&CODE&",&2,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&2,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&1,&0,&0,&0,&NULL,0},&&
&{0,"field27&",&6,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&1,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&1,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&1,&0,&NULL,0},&&
&{0,"ACQUIRER&INSTITUTION&ID.&CODE&",&11,&0,&2,&0,&NULL,0},&&
&{0,"FORWARDING&INSTITUTION&ID.&CODE&",&11,&0,&2,&0,&NULL,0},&&
&{0,"NO&USE&",&28,&0,&2,&0,&NULL,0},&&
&{0,"TRACK&2&DATA&",&37,&0,&2,&0,&NULL,0},&&
&{0,"TRACK&3&DATA&",104,&0,&3,&0,&NULL,0},&&
&{0,"RETRIEVAL&REFERENCE&NUMBER&",&12,&0,&0,&0,&NULL,0},&&
&{0,"AUTH.&IDENTIFICATION&RESPONSE&",&6,&0,&0,&0,&NULL,0},&&
&{0,"RESPONSE&CODE&",&2,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"CARD&ACCEPTOR&TERMINAL&ID.&",&8,&0,&0,&0,&NULL,0},&&
&{0,"CARD&ACCEPTOR&IDENTIFICATION&CODE&",&15,&0,&0,&0,&NULL,0},&&
&{0,"CARD&ACCEPTOR&NAME&LOCATION&",&40,&0,&0,&0,&NULL,0},&&
&{0,"ADDITIONAL&RESPONSE&DATA&",&25,&0,&2,&0,&NULL,0},&&
&{0,"NO&USE&",&76,&0,&2,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"field47&",999,&0,&3,&0,&NULL,0},&&
&{0,"ADDITIONAL&DATA&---&PRIVATE&",999,&0,&3,&0,&NULL,0},&&
&{0,"CURRENCY&CODE,TRANSACTION&",&3,&0,&0,&0,&NULL,0},&&
&{0,"CURRENCY&CODE,SETTLEMENT&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"PERSONAL&IDENTIFICATION&NUMBER&DATA&",&8,&0,&0,&2,&NULL,0},&&
&{0,"SECURITY&RELATED&CONTROL&INformATION",&16,&0,&0,&0,&NULL,0},&&
&{0,"ADDITIONAL&AMOUNTS&",120,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",&5,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",&11,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",&11,&0,&3,&0,&NULL,0},&&
&{0,"MESSAGE&AUTHENTICATION&CODE&FIELD&",&8,&0,&0,&2,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",&1,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"SYSTEM&MANAGEMENT&INformATION&CODE&",&3,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",&6,&0,&0,&0,&NULL,0},&&
&{0,"NUMBER&OF&CREDITS&",&10,&0,&0,&0,&NULL,0},&&
&{0,"REVERSAL&NUMBER&OF&CREDITS&",&10,&0,&0,&0,&NULL,0},&&
&{0,"NUMBER&OF&DEBITS&",&10,&0,&0,&0,&NULL,0},&&
&{0,"REVERSAL&NUMBER&OF&DEBITS&",&10,&0,&0,&0,&NULL,0},&&
&{0,"NUMBER&OF&TRANSFER&",&10,&0,&0,&0,&NULL,0},&&
&{0,"REVERSAL&NUMBER&OF&TRANSFER&",&10,&0,&0,&0,&NULL,0},&&
&{0,"NUMBER&OF&INQUIRS&",&10,&0,&0,&0,&NULL,0},&&
&{0,"AUTHORIZATION&NUMBER&",&10,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&12,&0,&0,&0,&NULL,0},&&
&{0,"CREDITS,TRANSCATION&FEEAMOUNT&",&12,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&12,&0,&0,&0,&NULL,0},&&
&{0,"DEBITS,TRANSCATION&FEEAMOUNT&",&12,&0,&0,&0,&NULL,0},&&
&{0,"AMOUNT&OF&CREDITS&",&16,&0,&0,&0,&NULL,0},&&
&{0,"REVERSAL&AMOUNT&OF&CREDITS&",&16,&0,&0,&0,&NULL,0},&&
&{0,"AMOUNT&OF&DEBITS&",&16,&0,&0,&0,&NULL,0},&&
&{0,"REVERSAL&AMOUNT&OF&DEBITS&",&16,&0,&0,&0,&NULL,0},&&
&{0,"ORIGINAL&DATA&ELEMENTS&",&42,&0,&0,&0,&NULL,0},&&
&{0,"FILE&UPDATE&CODE&",&1,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"SERVICE&INDICATOR&",&7,&0,&0,&0,&NULL,0},&&
&{0,"REPLACEMENT&AMOUNTS&",&42,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",&8,&0,&0,&0,&NULL,0},&&
&{0,"AMOUNT&OF&NET&SETTLEMENT&",&16,&0,&0,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"SETTLEMENT&INSTITUTION&ID&",&11,&0,&2,&0,&NULL,0},&&
&{0,"RECVEING&INSTITUTION&ID&",&11,&0,&2,&0,&NULL,0},&&
&{0,"FILENAME&",&17,&0,&2,&0,&NULL,0},&&
&{0,"ACCOUNT&IDENTIFICATION1&",&28,&0,&2,&0,&NULL,0},&&
&{0,"ACCOUNT&IDENTIFICATION2&",&28,&0,&2,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NEW&PIN&DATA&",&8,&0,&3,&2,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"NO&USE&",999,&0,&3,&0,&NULL,0},&&
&{0,"MESSAGE&AUTHENTICATION&CODE&FIELD&",&8,&0,&0,&2,&NULL,0},&&
3、变长,定长域说明&&
如第二域:域名为主帐号,&&
数据类型为string&&
长度为22(是长长度不得超过此数)&&
是个2位变长域&&
由于是2位变长,在打包时需在数据域前加上数据的实际长度,如为19位,则表示为:&&
19+数据值(即前两位为长度)&&
如第三域:域名为处理码,&&
数据类型为string&&
长度为6&&
是个定长域&&
必须填满6位。&&
附A:ISO8583各域段的说明&&
1,信息类型(message&type)定义&&
位图位置:-&&
格式:定长&&
类型:N4&&
数据包的第一部分,定义数据包的类型。&&
数据类型由数据包的发起者设定,应遵循以下要求:&&
数据包开始部分必须是信息类型;&&
对不支持的信息类型能给出拒绝应答。&&
0100授权交易&&
0110授权交易答复&&
0200金融交易&&
0210金融交易答复&&
0240查询交易&&
0250查询交易答复&&
0400冲正交易&&
0410冲正交易答复&&
0800管理交易&&
0810管理交易答复&&
2,位图(Bit&Map)&-&基本位图和扩展位图&&
位图位置:1&&
格式:定长&&
类型:B16&&
如将位图的第一位设为'1',表示使用扩展位图,否则表示只使用基本位图。&&
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。&&
选用条件:如使用65到128域,需设位图域为'1'&&
3、Bit02主帐号(Primary&Account&Number)
位图位置:02&&
格式:变长,LLVAR&&
类型:N..22&&
唯一的确认一个用户交易的基本帐号。&&
由于银行电子服务系统涉及多个应用系统,而帐号长度最多为22位,故将原标准的19长度改为22位。&&
4、Bit03&处理代码&(Processing&Code)&&
位图位置:03&&
格式:定长&&
类型:N6&&
描述:用于描述交易对客户帐户造成何种影响的代码。&&
处理代码和信息码一起可唯一定义一种交易的类型。&&
处理代码由以下三部分组成:&&
位置描述&&
1-2交易动作码&&
3-4付出帐户类型,用于借记类,如查询、代收费、转场交易。&&
5-6收入帐户类型,用于代收费、转帐等。&&
ff&:&付出帐户&&
tt:&收入帐户&&
*&视主机而定&&
5,Bit04&交易金额&(Amount,&Transaction)&&
位图位置:04&&
格式:定长&&
类型:N12&&
描述:帐户人要求交易的交易金额,不含任何处理和交易费用。&&
金额的表示和货币代码有关,应能表示相应货币的最小单位。参ISO4217有关货币代码定义。&&
如“”用于表示美元,表示1.00元;如用于表示意大利货币,则表示100里拉。&&
对于查询等交易,应设交易金额为“”。&&
6,Bit06交易日期和时间(Transmission&Date&and&Time)&&
位图位置:07&&
格式:定长,MMDDhhmmss&&
类型:N10&&
描述:本地交易日期和时间&&
7,Bit11系统跟踪号(Systems&Trace&Audit&Number)&&
位图位置:11&&
格式:定长&&
类型:N6&&
描述:终端交易的跟踪号码。&&
交易发起终端填写,和“交易日期、时间”、信息类型等合在一起可唯一定义某一个终端的唯一一笔交易。即是说,在同一天,对一终端,同一类交易的系统跟踪号应保证不同。系统跟踪号在交易过程中不能修改。使用此域来匹配请求和通知类交易的返回。&&
应用系统使用此域来检查收到的授权、金融、自动冲正、结算、管理和网管等类交易的应答包是否是其请求包的应答。&&
系统跟踪号不用于匹配自动冲正交易,也不用于在预授权消费时匹配前面的预授权交易。参90域。&&
对于银行电子服务系统,其系统跟踪号是交易流水号。&&
8,Bit12本地交易时间(Time&,Local&Transaction)&&
位图位置:12&&
格式:定长,hhmmss&&
类型:N6&&
描述:交易在终端上发生的时间。&&
本地交易时间在交易处理过程中不能改变。在自动冲正,存贮转发时,本地交易时间不能改变。&&
9,Bit13本地交易日期(Date&,Local&Transaction)&&
位图位置:13&&
格式:定长,MMDD&&
类型:N4&&
描述:交易在终端上发生的时间。&&
本地交易时间不能改变,在自动冲正、存储转发交易时,本地交易时间也不能改变。&&
10,Bit14有效期(Date&,Expiration)&&
位图位置:14&&
格式:定长,YYMM&&
类型:N4&&
描述:卡的有效期,年年月月&&
由于卡类写磁格式不同,收单行可能提不出卡的有效期,授权机构从卡的二磁道中提取卡的有效期。如卡无二磁道,收单行应要求手工录入卡的有效期。&&
选用条件:100、200、400等交易如没有2、3磁道时,一定要有此域。&&
11,Bit15结算日期(Date&,Settlement)&&
位图位置:15&&
格式:定长,MMDD&&
类型:N4&&
银行电子服务系统和主机结算的时间,格式月月日日。&&
结帐日期前发生的交易参加当天结算。&&
在结算时,结帐日期也用于计算处理、交易费用。&&
12,Bit17获取日期(Date&,Capture)&&
位图位置:17&&
格式:定长,MMDD&&
类型:N4&&
描述:从主机获取交易的记帐日期。通常用于主机和商户清算。&&
13,Bit18商户类型(Merchant's&Type)&&
位图位置:18&&
格式:定长&&
类型:N4&&
描述:定义商户产品和服务类型的代码&&
商户类型用于金融、授权交易,用于指定服务点的类型。它主要有以下用途:&&
决定预授权交易得到确认的最长时间;&&
控制合法限额;&&
为交易授权处理,控制网络操作规则;&&
欺诈检测;&&
用于商户分类报表;&&
交易费用处理。&&
根据ISO8583标准,应使用相应的国家标准。&&
商户类型代码表如下:&&
商户类型代码行业类型说明&&
4215邮递服务&&
4511民航&&
4722旅游&&
4782过桥费&&
4789其他运输服务&&
4614电信服务&&
5542加油站&&
5812餐馆&&
5999购物&&
6010金融机构-人工现金支付&&
6011金融机构-自动现金支付&&
6012金融机构-各类服务&&
7011酒店、旅馆&&
7299各类个人服务:洗衣、美容、&&
7399各类商业服务:停车场、租车、广告、其他服务&&
7699各类维修服务:维修、洗车、拖车&&
7996娱乐:电影、剧院、体育、游戏&&
8099医疗服务&&
8111法律服务&&
8999各类专业服务:会计、教育、装修、工程&&
选用条件:服务点终端发起的交易一定要有此域。&&
14,Bit22服务点输入方式(Point-of-Service&Entry&Mode)&&
位图位置:22&&
格式:定长&&
类型:N3&&
描述:在服务终端上定义PIN和PAN的输入方式。&&
服务点输入方式包含以下两个方面组合而成:&&
位置描述&&
1-2在服务终端上PAN有效期输入方式&&
3-3在服务终端上PIN的输入方式&&
PAN的输入方式编码如下:&&
PAN输入方式描述&&
02读磁卡&&
03条码扫描仪(BAR)&&
04光学符号阅读器(OCR)&&
05集成电路卡(IC卡)&&
PIN的输入方式编码如下:&&
PIN输入方式描述&&
1终端能接收PIN&&
2终端不能接收PIN&&
选用条件:服务点终端发起的交易一定要有此域。&&
15,Bit25服务点类型代码(Point-of-Service&Condition&Code)&&
位图位置:25&&
格式:定长&&
类型:N2&&
描述:定义交易发生的服务点类型&&
用法说明:下面是CYBERBANK支持的服务点条件代码。&&
服务点条件代码服务点终端类型&&
2自动柜员机(ATM)&&
10银行终端(10)&&
20电话银行&&
16,Bit32收单机构标识码(Acquirer&institution&Identification)&&
位图位置:32&&
格式:LLVAR&&
类型:N..11&&
描述:在金融交易中此域表示交易发生的银行机构的标识码&&
应答数据包必须和请求数据包此域相同。&&
17,Bit3向前机构标识码(Forwarding&Institution&Identification&Code)&&
位图位置:33&&
格式:LLVAR&&
类型:N..11&&
描述:在金融交易中此域表示帐户所在的银行机构的标识码&&
在网管交易800/810中,本域含有交易发起机构的代码。&&
应答数据包必须和请求数据包此域相同。&&
18,Bit35二磁道数据(Track&2&Data)&&
位图位置:35&&
格式:LLVAR&&
类型:Z..37&&
描述:写在卡二磁道的数据。数据组成遵循ISO标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。&&
收卡行应检测卡的二磁道是否符合国际标准。&&
为支持国际交换收单行应将二磁道中的分隔符换为“=”。除此外不能对二磁道数据进行任何修改,如修改PAN的校验字、有效期、服务码等。&&
19,Bit36三磁道数据(Track&3&Data)&&
位图位置:36&&
格式:LLLVAR&&
类型:Z...104&&
描述:写在卡三磁道的数据。数据应组成遵循ISO4909标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。&&
注意:长度说明为3位数字长。&&
20,Bit37检索索引号(Retrieval&Reference&Number)&&
位图位置:37&&
格式:定长&&
类型:AN12&&
描述:检索索引号用来在任何时间标识一个金融、授权、自动冲正交易。&&
检索索引号不要求打印在持卡人的帐单上。它的主要目的是在收单行和授权行之间定义一个数据项用于跟踪和检索交易。授权机构可以将检索索引号打印在客户的对帐单上。&&
检索索引号由收单行分配。&&
选用条件:可包含在收单机构的交易请求中。如在交易请求中有,则应答数据中一定应原样返回。&&
21,Bit38授权码(Authorization&Identification)&&
位图位置:38&&
格式:定长&&
类型:AN6&&
描述:交易授权机构返回的返回代码。&&
授权码用于在服务点终端上信用卡授权;&&
授权机构按网络操作规定,可选使用本域。&&
22,Bit39返回码(Response&Code)&&
位图位置:39&&
格式:定长&&
类型:AN2&&
描述:对一交易定义其处理结果的编码。&&
返回码用于说明授权机构对金融(授权)交易的处理状态;也用来指明自动冲正交易的冲正原因;还用来指出目标主机已接收到文件修改、结算、管理、网管等交易请求。&&
返回码应尽可能准确,应尽可能描述清楚所遇到的问题和状态。网络交换主机、收单行主机有可能会按不同的返回码收取不同的交易处理费用,并执行不同的处理过程。&&
23,Bit41收卡单位终端标识码(Card&Acceptor&Terminal&Identification)&&
位图位置:41&&
格式:定长&&
类型:ANS8&&
描述:定义在收单单位中定义一个服务终端的标识码,在同一商户中服务终端标识码应唯一。&
24,Bit42收卡商户定义码(Card&Acceptor&Identification&Code)&&
位图位置:42&&
格式:定长&&
类型:ANS15&&
描述:在本地和网络中定义交易单位(商户)的编码。&&
25,Bit43收卡商户位置(Card&Acceptor&Location)&&
位图位置:43&&
格式:定长&&
类型:ANS40&&
描述:在本地和网络中定义收卡单位(商户)的国家、省。城市等。&&
选用条件:如对外卡网络,一定要包含此域。&&
26,Bit44附加返回数据(Additional&ResponseData)&&
位图位置:44&&
格式:LLVAR&&
类型:ANS..25&&
描述:在金融(授权)交易中授权机构返回的其他信息。&&
27,Bit48附加数据-私用(Additional&Data-Private)&&
位图位置:48&&
格式:LLLVAR&&
类型:ANS...999&&
描述:银行电子服务系统使用此域作以下用途:&&
存放批量查询的返回数据&&
其格式与输出格式表对应&&
28,Bit49交易货币代码(Currency&Code,Transaction)&&
位图位置:49&&
格式:定长&&
类型:AN3&&
描述:按ISO4217定义的交易货币代码,用来表示“交易金额”(field04)所用的货币种类。&
交易货币代码是指在收单单位进行交易所用的交易种类。&&
29,Bit50结算货币代码(Currency&Code,Settlement)&&
位图位置:50&&
格式:定长&&
类型:AN3&&
描述:按ISO4217定义的结算货币代码,用来表示结算金额、结算处理费、结算交易费等所用的货币种类。&&
结算货币代码是指在进行结算和清算过程中所用的货币种类。&&
30,Bit52用户密码(PIN)数据(PIN&Data)&&
位图位置:52&&
格式:定长&&
类型:B16&&
描述:用户在服务终端上交易用于识别用户合法性的一些数字。&&
PIN在分行主机用分行主机密钥按ANSIX9.8标准加密,形成密文块。&&
选用条件:如果在终端上输入了密码,就需要此域。&&
31,Bit53密码相关控制信息(Security&Related&Control)&&
位图位置:53&&
格式:定长&&
类型:AN16&&
描述:本域提供有关密码块的附加信息,用于指出用于PIN计算的PIN&key,用于MAC计算的MAC&key。&&
本域格式如下表所示:&&
0-1格式代码2N“20”&&
2-3PIN加密算法2N“01”:DES&&
4-5密文块格式2N“01”:ANSI&&
6PIN密钥索引1N‘1’或‘2’&&
7MAC密钥索引1N‘1’或‘2’&&
8-11MAC检查数据4B&&
12-15填充4N&&
在BOC信用卡网络中PIN和MAC各使用两个密钥---'1'号和'2'密钥,交易中计算PIN和MAC时只能各用某一个KEY,同时需将所用的KEY索引号填写此域。&&
选用条件:如果有PIN域或MAC域,一定需有此域。&&
32,Bit54附加金额(Additional&Amounts)&&
位图位置:54&&
格式:LLLVAR&&
类型:ANS...120&&
描述:此域由授权行主机将客户的余额返回给收单终端,以显示或打印在客户回单上。&&
在此域中最多可有6个余额返回,每个余额返回格式如下:&&
位置描述&&
0-1处理码3-4或5-6位定义的帐号类型&&
2-3金额类型:01-帐户金额&&
02-可用金额&&
03-拥有金额&&
04-应付金额&&
40-可用取款限额&&
56-可用转帐限额&&
4-6金额的货币代码&&
7‘D’-借记金额,’C’-贷记金额&&
8-19余额数目&&
六个余额中必须返回可用余额,在ATM、POS上显示可用余额&&
33,Bit64信息确认码(MAC)&&
位图位置:64&&
格式:定长&&
类型:B16&&
描述:数据包的最后一个域,用于验证信息来源的合法性,以及数据包中数据是否未被篡改。&
MAC的计算参ANSIX.99,(最后八字节未满八位者左补零,右补零?)&&
为提高效率,在发送者和接收者之间,只有以下一些重要的域参加MAC的计算。数据包中如果存在以下数据域,它们将参加MAC的计算。&&
位图域名&&
2基本帐号&&
3处理代码&&
4交易金额&&
11系统跟踪号&&
12本地交易时间&&
13本地交易日期&&
32收单机构代码&&
38授权码&&
39返回码&&
41收单终端代码&&
49交易货币代码&&
95替换金额&&
选用条件:只使用了1-64域的数据包使用此域。&&
34,Bit70管理信息码(System&Management&Indormation&Code)&&
位图位置:70&&
格式:定长&&
类型:N3&&
用于定义和维护银行电子服务系统内部通讯网络状态和应用工作状态。&&
网络管理信息代码用于管理清算日期"cutoff",通讯"sign&on/sign&off","key&exchange"等。&&
支持以下一些网络管理信息码&&
NMIC网络管理信息码动作&&
001签到(Sign&on)&&
002签退(Sign&off)&&
101交换密钥(Key&exchange)&&
201结帐日期切换(Cutoff)&&
202结帐日期切换完成&&
301测试(Echo&test)&&
35,Bit74贷记交易笔数(Transaction&Number)&&
位图位置:74&&
格式:定长&&
类型:N10&&
描述:贷记金融交易总的成功交易次数&&
CYBERBANK软件在收到如下一个处理代码时会增加贷记交易次数。&&
交易码交易服务&&
00贷记,购物与服务&&
01贷记,取现&&
02贷记,调整(客户调整)&&
36,Bit75贷记自动冲正交易笔数(Credits,Reversal&Number)&&
位图位置:75&&
格式:定长&&
类型:N10&&
描述:贷记收单行自动冲正、“ChargeBack"等交易总的交易次数&&
CYBERBANK软件在收到如下一个处理代码时会增加贷记自动冲正交易笔数&&
交易码交易服务&&
20贷记,退货&&
21贷记,存款&&
22贷记,调整(客户修改)&&
37,Bit76借记交易笔数(Debits,Number)&&
位图位置:76&&
格式:定长&&
类型:N10&&
描述:借记金融交易总的成功交易次数&&
CYBERBANK软件在收到如下一个处理代码时会增加借记交易次数。&&
交易码交易服务&&
00借记,购物与服务&&
01借记,取现&&
02借记,调整(客户调整)&&
38,Bit77借记自动冲正交易笔数(Debits,Reversal&Number)&&
位图位置:77&&
格式:定长&&
类型:N10&&
描述:借记收单行自动冲正、“ChargeBack"等交易总的交易次数&&
CYBERBANK软件在收到如下一个处理代码时会增加借记重发交易次数,并在清算表报中反映。&&
交易码交易服务&&
20借记(!!!),退货&&
21借记,存款&&
22借记,调整(客户修改)&&
39,Bit78转帐交易笔数(Transfers,Number)&&
位图位置:78&&
格式:定长&&
类型:N10&&
描述:转帐的交易总次数。&&
系统在收到如下一个处理代码的金融交易时会增加转帐交易的次数。&&
交易码交易服务&&
40客户相关帐户间转帐&&
40,Bit79转帐自动冲正交易笔数(Transfers,Reversal&Number)&&
位图位置:79&&
格式:定长&&
类型:N10&&
描述:转帐的自动冲正交易总次数。&&
系统在收到如下一个处理代码的自动冲正交易时会增加转帐自动冲正交易的次数。&&
交易码交易服务&&
40客户相关帐户间转帐&&
41,Bit80查询交易笔数(Inquiries,Number)&&
位图位置:80&&
格式:定长&&
类型:N10&&
描述:成功的查询交易次数。&&
系统软件在收到如下一个处理代码时会增加查询交易次数。&&
交易码交易服务&&
30查询可用金额&&
42,Bit81授权交易笔数(Authorization,Number)&&
位图位置:81&&
格式:定长&&
类型:N10&&
描述:成功的授权交易总额&&
在收到一个授权交易时系统将授权交易笔数加一。&&
43,Bit83贷记交易费金额(Credits,Transaction&FeeAmount)&&
位图位置:83&&
格式:定长&&
类型:N12&&
描述:净交易费用,如交易金额为正。&&
44,Bit85借记交易费金额(Debits,Transaction&FeeAmount)&&
位图位置:85&&
格式:定长&&
类型:N12&&
描述:净交易费用,如交易金额为负。&&
45,Bit86贷记交易金额(Credits,Amount)&&
位图位置:86&&
格式:定长&&
类型:N16&&
描述:贷记金融交易总的交易金额,不含任何费用。&&
系统在收到如下一个处理代码时会增加贷记交易金额,并在清算表报中反映。&&
交易码交易服务&&
20贷记,退货&&
21贷记,存款&&
22贷记,调整(客户修改)&&
46,Bit87贷记自动冲正金额(Credits,Reversal&Amount)&&
位图位置:87&&
格式:定长&&
类型:N16&&
描述:信用卡自动冲正交易的总金额,不含任何费用。&&
47,Bit88借记交易金额(Debits,Amount)&&
位图位置:88&&
格式:定长&&
类型:N16&&
描述:借记金融交易总的交易金额,不含任何费用。&&
系统在收到如下一个处理代码时会增加借记交易金额,并在清算表报中反映。&&
交易码交易服务&&
00借记,购物与服务&&
01借记,取现&&
02借记,调整(客户调整)&&
48,Bit89借记自动冲正交易金额(Debits,Reversal&Amount)&&
位图位置:89&&
格式:定长&&
类型:N16&&
描述:借记自动冲正交易的总金额,不含任何费用。&&
49,Bit90原交易的数据元素(Original&Data&Elements)&&
位图位置:90&&
格式:定长&&
类型:N42&&
描述:存放原交易的一些数据,用于修改或自动冲正。&&
数据由以下五部分组成:&&
位置描述&&
1-4信息类型码&&
设为原交易的信息类型代码&&
5-10系统跟踪号&&
原交易系统跟踪号&&
11-20交易日期和时间&&
原交易的交易日期和时间&&
21-31原收单机构&&
原交易的收单机构&&
不足11位的机构代码,左补‘0’&&
32-42原向前机构&&
原交易的收单机构&&
不足11位的机构代码,左补‘0’&&
50,Bit91文件修改编码(File&Update&Code)&&
位图位置:91&&
格式:定长&&
类型:AN1&&
描述:用此域指示某文件怎样维护。&&
CYBERBANK支持以下一些修改代码:&&
1增加记录&&
2改变记录&&
3删除记录&&
7增加文件&&
选用条件:&&
51,Bit94服务指示码(Service&Indicator)&&
位图位置:94&&
格式:定长&&
类型:AN7&&
描述:指示文件修改服务。&&
选用条件:&&
52,Bit95代替金额(Replacement&Amounts)&&
位图位置:95&&
格式:定长&&
类型:N42!!!&&
描述:客户修改或部分取消已完成的交易,最后实际发生的交易金额,&&
交易的原交易金额存放在90域。&&
本域由以下4部分组成&&
Sub-ElementAmountAttribute&&
交易实际金额N12&&
结算实际金额N12&&
实际交易费用X+N8&&
实际结算费用X+N8&&
53,Bit97净结算金额(Net&Settlement&Amount)&&
位图位置:97&&
格式:定长&&
类型:X+N16&&
描述:此域为净结帐金额。&&
502交易中用于发送当天的净结算金额&&
例:“C0000”,表示贷方('+'?)元。&&
“D0000”,表示借方('-'?)元。&&
54,Bit99结算机构码(Settlement&Institution&Identification)&&
位图位置:99&&
格式:LLVAR&&
类型:N..11&&
描述:此域存放接收清算信息的机构代码。&&
返回数据包此域必须和请求数据包一致。&&
55,Bit100接收机构码(Receiving&Institution&Identification)&&
位图位置:100&&
格式:LLVAR&&
类型:N..11&&
描述:金融交易此域存放授权机构代码。&&
网管类交易,800/820交易,此域存放请求的目的机构代码。&&
返回数据包此域必须和请求数据包一致。&&
56,Bit101文件名(FileName)&&
位图位置:101&&
格式:LLVAR&&
类型:ANS..17&&
描述:发送机构设置的文件名。&&
57,Bit102帐号1(Account&Identification1)&&
位图位置:102&&
格式:LLVAR&&
类型:ANS..28&&
描述:一个特定的客户帐号。帐号1用来描述受借记、转出、支付等交易影响的帐户。&&
选用条件:转帐时使用。&&
58,Bit103帐号2(Account&Identiication2)&&
位图位置:103&&
格式:LLVAR&&
类型:ANS..28&&
描述:交易的补充信息,如:第二货币号、利率代码、起止日期等。&&
定义如下表&&
位置长度描述&&
00-2122帐户&&
22-276发卡机构号&&
如果此域存在,将按此机构代码作为路由信息。&&
选用条件:机构间转帐时使用。&&
60,Bit123新密码数据(New&PIN&Data)&&
位图位置:123&&
格式:LLLVAR&&
类型:B...16&&
描述:修改密码交易时存放新密码。&&
格式参考52域&&
选用条件:修改密码交易时必须有此域。&&
61,Bit128信息确认码(MAC)&&
位图位置:128&&
格式:定长&&
类型:B16&&
描述:数据包的最后一个域,用于验证信息来源的合法性,以及数据包中数据是否未被篡改。&
MAC的计算参ANSIX.99&&
为提高效率,在发送者和接收者之间,只有以下一些重要的域参加MAC的计算。数据包中如果存在以下数据域,它们将参加MAC的计算。&&
位图域名&&
2基本帐号&&
3处理代码&&
4交易金额&&
11系统跟踪号&&
12本地交易时间&&
13本地交易日期&&
32收单机构代码&&
38授权码&&
39返回码&&
41收单终端代码&&
49交易货币代码&&
95替换金额&&
选用条件:使用65-128数据域的数据包需使用此域。&
消费交易实例:
消费交易,需要上送交易类型,卡号等等,定义如下
卡号 第2域 LLVAR BCD 5342
交易类型 第3域 长度6 BCD 900000&
金额 第4域 长度12 BCD 100分
时间 第7域 长度8 BCD
2磁道信息 第35域 LLVAR ASCII 123456&
3磁道信息 第36域 LLLVAR BCD
商户号 第41域 LLVAR ASCII
好了我们现在开始打包,首先按照长度和类型把上面的数据处理一下
卡号 545342
交易类型 900000
商户号 343332
接下来我们按照域信息生成位图
因为有第2域,所以第二个位置是1,由第三域,所以第三个位置
是1,。。。
依此类推得到一串数字
00 00 11 00 0000
转换过来,就是
72 00 00 00 30 80 00 00 这个就是BITMAP了
然后把上面的数据按照BITMAP+每个域的内容,依次排列
就得到这个包的内容了
前头再加上TPDU和MSGID就是最后的数据包
c++源代码:
&bank8583.h&:
& #ifndef & __BANK_8583_H__
& #define & __BANK_8583_H__
& #pragma & warning(
& disable & : &
& //identifier & was
& truncated & to
& 'number' & characters
& in & the &
debug & information
& #include & "tchar.h"
& #include & "ttrace.h"
& #include & "basedef.h"
& #include & "public.h"
& #include &
& #include &
& #include &
& using & namespace
& #include & "tsock.h"
& using & namespace
& #define & F8583T_STR
& #define & F8583T_INT
& #define & F8583T_BIN
& typedef & struct
& tagISO8583_FIELD
& int & bit_
& //域数据类型0 & --
& string, & 1 &
-- & int, & 2 &
-- & binary
& char & *data_
& //域名 &&
& //数据域长度
length_in_//实际长度(如果是变长)
& int & variable_
& //是否变长标志0:否 & 2:2位变长,3:3位变长
& //0 & -- &
string, & 1 & --
& int, & 2 & --
& char & *
& //存放具体值
& //保留 &&
& } & ISO8583_FIELD;
& void & Get8583Field(
& int & index, &
ISO8583_FIELD** & ppField & );
& void & Set8583ValidFields(
& BYTE* & pindex
& typedef & struct
& tagTRADE_8583
& const & char*
& BYTE bm[128];
& }TRADE_8583;
& typedef & struct
& tagTRADE_8583_DEF
& TRADE_8583 &
& TRADE_8583 &
& }TRADE_8583_DEF;
& BOOL & Set8583TradeInfo(
& TRADE_8583_DEF* & pInfo
& typedef &
vector&BYTE& &
PACK_8583_ITEM; &&
& class & Pack8583
& Pack8583( & BOOL
& bCompressInt & =
& virtual & ~Pack8583();
& BOOL & Init(DWORD
& int & SetReqField(int
& field,char* & buf,int
& len); &&
& BOOL & BuildReqPack(
vector&BYTE&&
& A, & BOOL &
bForceFillAll & = & TRUE
& BOOL & GetReqPackItem(
& int & index, &
PACK_8583_ITEM& & item);
& DWORD & GetReqBankCode();
& DWORD & GetAnsBankCode();
& //-1 & package
& is & not &
& //-2 & any &
field & is & not
& exist &&
LVAR,LLVAR,LLLVAR的长度不是DIGIT
& //-4 & LVAR,LLVAR,LLLVAR的长度太大
& int & UnPack(BYTE*
& pack,int &
len);//把缓冲区的数据解包到ansdata里
& //0 & OK
& //1 & time &
& //2 & recv &
LVAR,LLVAR,LLLVAR的长度不是DIGIT
& int & UnPack(
& TCPSocket& &
sock & );//接收解包
& BOOL & GetAnsPackItem(
& int & index, &
PACK_8583_ITEM& & item);
& PACK_8583_ITEM* & GetFromReq(
& int & index &
& PACK_8583_ITEM* & GetFromAns(
& int & index &
& void & ShowReq();
& void & ShowAns();
& char & m_recvbuf[1024];
& int & m_
& protected:
& BOOL & m_bCompI
& int & GetReqPackLen();
& BOOL & IsReqFieldValid(int);
& BOOL & IsAnsFieldValid(int);
& BOOL & IsReqFieldNotFill();
& void & BuildReqMask(
& BYTE* & mask,
& BOOL & bext, &
BYTE* & bm & );
& BOOL & IsReqExtExist();
& void & MaskToBM(
& BYTE* & mask,
& BYTE* & bm &
);//mask & BYTE[16],bm & BYTE[64]
& TRADE_8583_DEF* & m_pTradeD
& map& & int,
& PACK_8583_ITEM &
& map& & int,
& PACK_8583_ITEM &
&bank8583.cpp&:
& #include & "stdafx.h"
& #include &
& #include &
&string.h&
& #include &
&assert.h&
& #include & "bank/bank8583.h"
& ISO8583_FIELD & Tbl]
& & {0,"BIT &
MAP,EXTENDED & ", & 8,
& 0, & 0, & 2,
& NULL,0}, & &
& & {0,"PRIMARY
& ACCOUNT & NUMBER
& ", & 22, & 0,
& 2, & 1, &
NULL,0}, & &
& & {0,"PROCESSING
& CODE & ", & 6,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"AMOUNT,
& TRANSACTION & ",
& 12, & 0, & 0,
& 1, & NULL,0},
& & {0,"NO & USE
& ", & 12, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 12, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"TRANSACTION
& DATE & AND &
TIME & ", & 10,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"SYSTEM &
TRACE & AUDIT & NUMBER
& ", & 6, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"TIME, &
LOCAL & TRANSACTION & ",
& 6, & 0, & 0,
& 1, & NULL,0},
& & {0,"DATE, &
LOCAL & TRANSACTION & ",
& 4, & 0, & 0,
& 1, & NULL,0},
& & {0,"DATE, &
EXPIRATION & ", & 4,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"DATE, &
SETTLEMENT & ", & 4,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 4, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"DATE, &
CAPTURE & ", & 4,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"MERCHANT'S
& TYPE & ", & 4,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"POINT &
OF & SERVICE & ENTRY
& MODE & ", & 3,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"POINT &
OF & SERVICE & CONDITION
& CODE & ", & 2,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 2, & 0,
& 0, & 1, &
NULL,0}, &&
& & {0,"NO & USE
& ", & 1, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"field27
& ", & 6, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 1, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 1, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 8, & 0,
& 1, & 1, &
NULL,0}, & &
& & {0,"ACQUIRER
& INSTITUTION & ID.
& CODE & ", &
11, & 0, & 2, &
1, & NULL,0}, &
& & {0,"FORWARDING
& INSTITUTION & ID.
& CODE & ", &
11, & 0, & 2, &
1, & NULL,0}, &
& & {0,"NO & USE
& ", & 28, & 0,
& 2, & 0, &
NULL,0}, & &
& & {0,"TRACK &
2 & DATA & ", &
37, & 0, & 2, &
0, & NULL,0}, &
& & {0,"TRACK &
3 & DATA & ",104,
& 0, & 3, & 0,
& NULL,0}, & &
& & {0,"RETRIEVAL
& REFERENCE & NUMBER
& ", & 12, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"AUTH. &
IDENTIFICATION & RESPONSE & ",
& 6, & 0, & 0,
& 0, & NULL,0},
& & {0,"RESPONSE
& CODE & ", & 2,
& 0, & 0, & 0,
& NULL,0}, & &
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"CARD &
ACCEPTOR & TERMINAL & ID.
& ", & 8, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"CARD &
ACCEPTOR & IDENTIFICATION & CODE
& ", & 15, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"CARD &
ACCEPTOR & NAME & LOCATION
& ", & 40, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"ADDITIONAL
& RESPONSE & DATA
& ", & 25, & 0,
& 2, & 0, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 76, & 0,
& 2, & 0, &
NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"field47
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"ADDITIONAL
& DATA & --- &
PRIVATE & ",999, & 0,
& 3, & 0, &
NULL,0}, & &
& & {0,"CURRENCY
& CODE,TRANSACTION & ",
& 3, & 0, & 0,
& 0, & NULL,0},
& & {0,"CURRENCY
& CODE,SETTLEMENT & ",
& 3, & 0, & 0,
& 0, & NULL,0},
& & {0,"NO & USE
& ", & 3, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"PERSONAL
& IDENTIFICATION & NUMBER
& DATA & ", & 8,
& 0, & 0, & 2,
& NULL,0}, & &
& & {0,"SECURITY
& RELATED & CONTROL
& INformATION", & 16,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"ADDITIONAL
& AMOUNTS & ",120,
& 0, & 3, & 0,
& NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ", & 5, & 0,
& 3, & 0, &
NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ", & 11, & 0,
& 3, & 0, &
NULL,0}, & &
& & {0,"NO & USE
& ", & 11, & 0,
& 3, & 0, &
NULL,0}, & &
& & {0,"MESSAGE
& AUTHENTICATION & CODE
& FIELD & ", &
8, & 0, & 0, &
2, & NULL,0}, &
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ", & 1, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 1, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 1, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 1, & NULL,0},
& & {0,"SYSTEM &
MANAGEMENT & INformATION & CODE
& ", & 3, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 1, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 1, & NULL,0},
& & {0,"NO & USE
& ", & 6, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"NUMBER &
OF & CREDITS & ",
& 10, & 0, & 0,
& 1, & NULL,0},
& & {0,"REVERSAL
& NUMBER & OF &
CREDITS & ", & 10,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NUMBER &
OF & DEBITS & ",
& 10, & 0, & 0,
& 1, & NULL,0},
& & {0,"REVERSAL
& NUMBER & OF &
DEBITS & ", & 10,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NUMBER &
OF & TRANSFER & ",
& 10, & 0, & 0,
& 1, & NULL,0},
& & {0,"REVERSAL
& NUMBER & OF &
TRANSFER & ", & 10,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"NUMBER &
OF & INQUIRS & ",
& 10, & 0, & 0,
& 1, & NULL,0},
& & {0,"AUTHORIZATION
& NUMBER & ", &
10, & 0, & 0, &
1, & NULL,0}, &
& & {0,"NO & USE
& ", & 12, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"CREDITS,TRANSCATION
& FEEAMOUNT & ",
& 12, & 0, & 0,
& 1, & NULL,0},
& & {0,"NO & USE
& ", & 12, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"DEBITS,TRANSCATION
& FEEAMOUNT & ",
& 12, & 0, & 0,
& 1, & NULL,0},
& & {0,"AMOUNT &
OF & CREDITS & ",
& 16, & 0, & 0,
& 1, & NULL,0},
& & {0,"REVERSAL
& AMOUNT & OF &
CREDITS & ", & 16,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"AMOUNT &
OF & DEBITS & ",
& 16, & 0, & 0,
& 1, & NULL,0},
& & {0,"REVERSAL
& AMOUNT & OF &
DEBITS & ", & 16,
& 0, & 0, & 1,
& NULL,0}, & &
& & {0,"ORIGINAL
& DATA & ELEMENTS
& ", & 42, & 0,
& 0, & 1, &
NULL,0}, & &
& & {0,"FILE &
UPDATE & CODE & ",
& 1, & 0, & 0,
& 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"SERVICE
& INDICATOR & ",
& 7, & 0, & 0,
& 0, & NULL,0},
& & {0,"REPLACEMENT
& AMOUNTS & ", &
42, & 0, & 0, &
0, & NULL,0}, &
& & {0,"NO & USE
& ", & 8, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"AMOUNT &
OF & NET & SETTLEMENT
& ", & 16, & 0,
& 0, & 0, &
NULL,0}, & &
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"SETTLEMENT
& INSTITUTION & ID
& ", & 11, & 0,
& 2, & 1, &
NULL,0}, & &
& & {0,"RECVEING
& INSTITUTION & ID
& ", & 11, & 0,
& 2, & 1, &
NULL,0}, & &
& & {0,"FILENAME
& ", & 17, & 0,
& 2, & 0, &
NULL,0}, & &
& & {0,"ACCOUNT
& IDENTIFICATION1 & ",
& 28, & 0, & 2,
& 0, & NULL,0},
& & {0,"ACCOUNT
& IDENTIFICATION2 & ",
& 28, & 0, & 2,
& 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NEW &
PIN & DATA & ",
& 8, & 0, & 3,
& 2, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"NO & USE
& ",999, & 0, &
3, & 0, & NULL,0},
& & {0,"MESSAGE
& AUTHENTICATION & CODE
& FIELD & ", &
8, & 0, & 0, &
2, & NULL,0}, &
& void & Get8583Field(
& int & index, &
ISO8583_FIELD** & ppField & )
& assert( &
index&=1 &
&& & index
& &= & 128
& *ppField & = &
&Tbl8583[index-1];
BYTE & g_8583ValidFields[16] & =
& void & Set8583ValidFields(
& BYTE* & pindex
& memset( & g_8583ValidFields,
& 0, & sizeof(g_8583ValidFields)
& while( & *pindex
& *pindex & &=
& int & num & =
& (*pindex)-1;
& int & n & =
& num & / & 8;
& BYTE & mask &
& - & n & *
& g_8583ValidFields[n] & |=
& pindex & ++;
& BOOL & IsValidField(
& int & index &
& if( & index &
&= & 128 & ||
& index & &=
& 1 & ) & return
& int & num & =
& index-1;
& int & n & =
& num & / & 8;
& BYTE & mask &
& - & n & *
& return & ( &
g_8583ValidFields[n] & &
& mask & );
& TRADE_8583_DEF* &
g_8583TradeDef & = & NULL;
& TRADE_8583_DEF* &
Get8583TradeInfo( & DWORD & tcode
& if( & g_8583TradeDef
& == & NULL & )
& printf("Please & call
& [Set8583TradeInfo] & function
& first/r/n");
& return & NULL;
& for( & int & i
& = & 0; &
g_8583TradeDef[i].req.name & != &
NULL; & i & ++ &
& if( & g_8583TradeDef[i].tcode
& & & tcode
& ) & return &
&g_8583TradeDef[i];
& printf(" & trade
& not & find & !
& return & NULL;
& BOOL & Set8583TradeInfo(
& TRADE_8583_DEF & *
& pDef & )
& g_8583TradeDef & =
& NULL; &&
& for( & int & i
& = & 0 & ;
& pDef[i].req.name & !=
& NULL & ; & i
& for( & j & =
& 0; & ; & j
& {//保证所有的域都是声明了的
& int & index &
= & pDef[i].req.bm[j];
& if( & index &
&= & 128 & ||
& index & &=
& if( & !IsValidField(
& index & ) & )
& printf("field[%d] & is
& not & valid!/r/n",index);
& return & FALSE;
Tbl8583[index-1].variable_flag & ==
& Tbl8583[index-1].variable_flag
& == & 1 & ||
& Tbl8583[index-1].variable_flag
& == & 2 & ||
& Tbl8583[index-1].variable_flag
& == & 3 & )
& printf("field[%d] &
variable_flag & is & not
& a & valid &
number!/r/n",index); &&
& return & FALSE;
& g_8583TradeDef & =
& return & TRUE;
& Pack8583::Pack8583( & BOOL
& bCompressInt & )
& m_pTradeDef & =
& NULL; &&
& m_bCompInt & =
& bCompressI
& Pack8583::~Pack8583()
& BOOL & Pack8583::Init(DWORD
& m_pTradeDef & =
& Get8583TradeInfo( & tcode
& if( & m_pTradeDef
& == & NULL & )
& return & FALSE;
& return & TRUE;
Pack8583::IsReqFieldValid( & int
& field & )
& for( & int & i
& = & 0 & ;;
& int & findex &
= & m_pTradeDef-&req.bm[i];
& if( & findex &
& & 0 & ||
& findex & &
& 128 & ) &
& if( & field &
== & findex & )
& return & TRUE;
& return & FALSE;
Pack8583::IsAnsFieldValid( & int
& field & )
& for( & int & i
& = & 0 & ;;
& int & findex &
= & m_pTradeDef-&ans.bm[i];
& if( & findex &
& & 0 & ||
& findex & &
& 128 & ) &
& if( & field &
== & findex & )
& return & TRUE;
& return & FALSE;
Pack8583::SetReqField(int & field,char*
& buf,int & len)
& if( & !IsReqFieldValid(
& field) & )
& printf("field & [%d]
& is & not &
valid!/r/n",field); &&
& return & FALSE;
& pair& & int,
& PACK_8583_ITEM &
map& & int, &
PACK_8583_ITEM & &::iterator,
& BOOL & &
& ISO8583_FIELD &
Tbl8583[field-1]; &&
& if( & F.variable_flag
& == & 0 & )
& if( & len & !=
& F.length & )
& printf("field & [%d]
& length & not &
match!/r/n",field); &&
& return & FALSE;
& {//1,2,3
& int & maxlen &
& if( & F.variable_flag
& == & 1 & )
& maxlen & = &
& else & if( &
F.variable_flag & == & 2
& ) & maxlen & =
& else & if( &
F.variable_flag & == & 3
& ) & maxlen & =
& if( & len &
& & maxlen & ||
& printf("field & [%d]
& data & length
& out & of &
range!/r/n",field); &&
& return & FALSE;
& item_insert.first & =
& ret & = &
m_reqdata.insert( & item_insert &
& PACK_8583_ITEM &
&item & = &
ret.first-&
& item.resize( & len
& memcpy( &
&item[0], & buf,
& len & );
& return & TRUE;
& PACK_8583_ITEM* &
Pack8583::GetFromReq( & int &
& map& & int,
& PACK_8583_ITEM &
& & ::iterator &
pos & = & m_reqdata.lower_bound(
& index & );
& if( & pos & ==
& m_reqdata.end() & ||
& pos-&first & !=
& index & ) &
return & NULL;
& return &
& PACK_8583_ITEM* &
Pack8583::GetFromAns( & int &
& map& & int,
& PACK_8583_ITEM &
& & ::iterator &
pos & = & m_ansdata.lower_bound(
& index & );
& if( & pos & ==
& m_ansdata.end() & ||
& pos-&first & !=
& index & ) &
return & NULL;
& return &
& int & Pack8583::GetReqPackLen()
& int & len & =
& map& & int,
& PACK_8583_ITEM &
&::iterator &
& for( & p & =
& m_reqdata.begin() & ;
& p & != &
m_reqdata.end(); & ++ & p
& int & findex &
& int & datalen
p-&second.size();
& if( & m_bCompInt
& Tbl8583[findex-1].datatyp & ==
& int & flen & =
& Tbl8583[findex-1].variable_flag
& len & += &
flen & / & 2 & +
& flen & % & 2;
& len & += &
Tbl8583[findex-1].variable_
& len & += &
& if( & IsReqExtExist()
& ) & len & +=
& return &
C#的转换:
ASCII-&string
Convert.ToInt32(ASCII);
Binary-&string
Encoding.ASCII.GetString(Binary);
报文数据实例:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 红米手机收不到验证码 的文章

 

随机推荐