银行卡支付-交易创建-服务商
大约 15 分钟
银行卡支付-服务商
银行卡支付
服务ID | zjrcuoip.pay.uas.card.payment |
---|---|
VERSION | 1.0.0 |
服务详细描述
接入银行卡支付产品时,调用该接口创建交易,获取调起支付控件的参数。
注:参数中的必填要求:M为必填项,O为非必填项,C为条件选填项。
示例代码
UasCardPaymentDemoOp.java
/**
* 银行卡支付-服务商
*
* @author
*/
@Service
public class UasCardPaymentDemoOp {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void execute() {
// 1.获取通讯连接对象
INetTools netTools = NetToolsHttpFactory.getHttpInstance();
// 2.生成公共请求报文对象
OipReqBean oipReqBean = new OipReqBean();
// 设置应用id
oipReqBean.setAppId("应用id");
// 设置开发者id
oipReqBean.setDlpId("开发者id");
// 设置产品id
oipReqBean.setProdId("产品id");
// 设置api方法名
oipReqBean.setMethod("zjrcuoip.pay.uas.card.payment");
// 设置api版本
oipReqBean.setVersion("1.0.0");
// 设置时间戳
SimpleDateFormat sfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
oipReqBean.setTimestamp(sfs.format(new Date()));
// 3.生成请求配置对象,配置请求地址/url等信息
NetReqConfBean netReqConfBean = new NetReqConfBean();
// 应用私钥
netReqConfBean.setAppPrivateKey("应用私钥");
// 请求地址
netReqConfBean.setNetUrl("请求地址");
// 开发者公钥
netReqConfBean.setPublicKey("开发者公钥");
// 设置业务报文
Date d=new Date();
SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHHmmss");
//以map接收所有参数生成业务报文,主要是必输项,具体参考接口文档
Map map =new HashMap();
map.put("输入项必输字段", "字段值");
String bizContent = JSON.toJSONString(map);
// 生成业务报文json对象
oipReqBean.setBizContent(bizContent);
// 通讯获取报文对象
OipRspBean oipRspBean = netTools.execute(oipReqBean, netReqConfBean);
// 响应成功
if (oipRspBean.isSuccess()) {
String bizJson = oipRspBean.getBizContent();
if (StringUtils.isNotBlank(bizJson)) {
Map bizData = JSON.parseObject(bizJson, Map.class);
System.out.println(bizData);
}
}
}
}
公共报文
业务输入项
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | deviceNo | 终端序列号 | M | String | 32 | 终端序列号 |
2 | safeModule | 安全模块号 | M | String | 32 | 密码键盘序列号 |
3 | track | 磁道密文 | M | String | 255 | 二磁道补‘F’至16的整数倍+三磁道补‘F’至16的整数倍,用签到所得tdk 进行SM4加密 |
4 | cardNo | 卡号 | M | String | 19 | |
5 | pinBlock | 密码密文 | O | String | 32 | PIN的格式应符合ANSIX9.8Format(带主账号信息),用签到所得pik 进行SM4加密 |
6 | algType | 算法标志 | M | String | 1 | 2:国密 |
7 | etryMdCd | 服务点输入方式 | M | String | 3 | |
8 | mchSeq | 商户识别号 | M | String | 32 | |
9 | txId | 商户订单号 | M | String | 32 | 当前交易的请求流水号,也是交易唯一标识,可包含数字、大小写字母、下划线,需保证在商户端不重复。 编号规则为系统编号(2位)+年月日(8位数字)+序号(最长22位)。 |
10 | mrchOrderNo | 商户原始订单号 | O | String | 64 | |
11 | rtrvlRefNb | 检索参考号 | M | String | 12 | 对应银联卡交换规范的第37域,12位定长 |
12 | txTp | 交易类型 | M | String | 2 | 01-消费 |
13 | bizCgy | 业务类型 | M | String | 4 | A001-消费 |
14 | purpPrtry | 业务种类 | M | String | 7 | A001001-实物商品租赁 A001002-虚拟商户购买 A001003-预付类账户充值 A001004-航旅交通服务 A001005-活动票务订购 A001006-商业服务消费 A001007-生活服务消费 A001008-其他商家消费 A001009-金融服务 |
15 | txDtTm | 交易时间 | M | Datetime | 14 | 交易发起时间,格式yyyyMMddHHmmss |
16 | amt | 交易金额 | M | String | 15 | 单位为元,精确到小数点后两位。 |
17 | ccy | 交易币种 | O | String | 3 | 默认CNY-人民币,指amt的币种 |
18 | subject | 订单标题 | M | String | 256 | 商品标题/交易标题/订单标题/订单关键字等。 |
19 | body | 订单描述 | O | String | 128 | 对交易或商品的描述 |
20 | iccTl | 安全控制信息 | C | Map | 对应核心的@ICCTL数据结构,IC卡必送 详细字段见iccTl说明 | |
21 | cardSqncNb | 卡序列号 | C | String | 3 | IC卡序列号,IC卡必送。 对应银联卡交换规范的第23域,3位定长 |
22 | iccDt | IC卡数据域 | C | String | 510 | IC卡必送。 对应银联卡交换规范的第55域 |
23 | token | token数据 | O | String | 512 | 对应银联卡交换规范的第63域中的TK。 上送时整串数据进行扩位。 |
24 | cdtnCd | 服务点条件码 | M | String | 2 | 00-正常提交 对应银联卡交换规范的第25域 |
25 | pinCptrCd | 服务点PIN获取码 | C | String | 2 | 由服务点设备接受的PIN的最大字符数目。 对应银联卡交换规范的第26域,2位定长。 取值范围:04-12 有密交易必须上送 |
26 | reserved | 自定义域 | M | String | 100 | 对应银联卡交换规范的第60域,详见reserved说明 |
27 | acqrRsvd | 受理方保留 | M | String | 100 | 对应银联卡交换规范的第122域 |
28 | prvtAtch | 私有附加数据 | O | String | 512 | 对应银联卡交换规范的第48域 |
29 | termInfo | 终端信息 | M | Map | 商户侧受理终端信息。详见termInfo说明 | |
30 | deviceId | 银联终端号 | M | String | 8 | 银联报备的终端号,对应银联卡交换规范的第41域 |
31 | termPrms | 终端信息 | M(三选一) | String | 248 | 对应银联卡交换规范的第104域中的PI。 终端具备获取位置信息等能力时必须上送; 针对一般POS终端,需要传递F104 PI用法tag0102及0408; 针对mPOS终端,需要传递F104 PI用法tag01~08; 上送数据示例:PI+3位后续数据长度+子域标签tag01-08(1位十六进制)+子域长度(1位十六进制)+子域数据,例:PI012+(01)(0a)1234567890;10位tag01子域数据,子域长度为0a; 上送时整串数据进行扩位。 |
32 | lbsInfo | LBS信息 | M(三选一) | String | 300 | 对应银联卡交换规范的第104域中的LB。 终端具备获取基站信息等能力时必须上送; 上送数据示例同PI; 上送时整串数据进行扩位。 |
33 | address | 交易地点信息 | M(三选一) | String | 310 | 对应银联卡交换规范的第126域。 终端具备获取位置信息等能力时必须上送; 传递F126 TA用法tag01~03:用于传递交易地点相关关信息; 上送数据元例同PI; 上送时无需扩位。 |
34 | ip | 终端IP地址 | M | String | 45 | 终端设备IP |
35 | mac | 终端MAC地址 | C | String | 32 | 终端设备MAC |
36 | remark | 备注信息 | O | String | 255 | 备注信息 |
37 | attach | 附加数据 | O | String | 78 | 附加数据,在查询接口中原样返回,该字段主要用于携带自定义数据。 如包含特殊字符,请做Base64编码。 |
38 | extendParams | 业务扩展参数 | O | Map | 备用字段,暂未定义子key。 |
iccTl说明:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | authAmt | 授权金额 | O | String | 12 | |
2 | othAmt | 其它金额 | O | String | 12 | |
3 | cntCd | 终端国家代码 | O | String | 3 | |
4 | chkRlt | 终端验证结果 | O | String | 10 | |
5 | curCd | 交易货币代码 | O | String | 3 | |
6 | tradeDate | 交易日期 | O | String | 6 | |
7 | tradeType | 交易类型 | O | String | 2 | |
8 | unpNum | 不可预知数 | O | String | 8 | |
9 | traAlp | 应用交互特征 | O | String | 4 | |
10 | traAtc | 应用交易计数器 | O | String | 4 | |
11 | cardCvr | 卡片验证结果(CVR) | O | String | 8 | |
12 | cardArqc | 待检ARQC | O | String | 16 | |
13 | cardNo | 卡号 | O | String | 19 | |
14 | cardSer | 卡片序列号 | O | String | 3 | |
15 | reserve | 备用字段 | O | String | 60 |
reserved说明:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | F60.1 | 报文原因码 | M | String | 4 | 0000 |
2 | F60.2 | 服务点附加信息 | ||||
3 | F60.2.1 | 账户所有人类型 | M | String | 1 | 用于区分账户类型。 |
4 | F60.2.2 | 终端读取能力 | M | String | 1 | 表明终端是否能够读取IC卡。 |
5 | F60.2.3 | IC卡条件代码 | M | String | 1 | 表示当在IC卡终端上使用IC卡的磁条信息时,IC卡终端的IC卡读写能力是否可用。根据该域与22域、60的值可以判断卡片或终端有无损坏,同时也可判断是否是伪卡交易。 |
6 | F60.2.4 | 保留使用 | M | String | 1 | 由于芯片或终端不能正常工作,终端引导持卡人通过刷磁条进行的交易。这种情况需由60.2.2域和60.2.3域与22域联合判断。 |
7 | F60.2.5 | 终端类型 | M | String | 2 | 保留使用 |
8 | F60.2.6 | 受理免验密码标志 | M | String | 1 | |
9 | F60.2.7 | IC卡验证可靠性标志 | M | String | 1 | 在IC卡交易中表明该卡验证的可靠性,受理方在商户或终端碰到问题时会设置该值;或者由CUPS在受理方或发卡方都不能执行该卡的验证时设置该值。在Token支付交易中,如Token由银联提供,则在银联向发卡方发送的请求报文中,使用该域标识由银联提供的Token服务。 |
10 | F60.2.8 | 电子商务标志 | M | String | 2 | 对于电子商务交易,它表明在开放式网络中(例如,Internet)使用电子商务交易时的安全程度;在无卡自助消费业务中,该标志标识发卡方自主识别和辅助识别的模式。这个标志值由受理方提供,并由CUPS在请求和通知报文中转发给接收它的发卡方进行验证。如果发卡方不能验证或发卡方选择不接收它,那么该子域将在转发报文时被取消 |
11 | F60.2.9 | 交互方式标志 | M | String | 1 | 用于区分相同终端类型的不同交互方式。 |
12 | F60.3 | 交易发生附加信息 | ||||
13 | F60.3.1 | 特殊计费类型 | M | String | 2 | 00 |
14 | F60.3.2 | 特殊计费档次 | M | String | 1 | 0 |
15 | F60.3.3 | 保留使用 | M | String | 3 | 前两位取默认值 00,启用第3位用于标识MAC算法类型 |
16 | F60.3.4 | 支持部分承兑和返回余额标志 | M | String | 1 | 0-不支持,1-支持 |
17 | F60.3.5 | 交易发起方式 | M | String | 1 | 在交易类型关键信息域相同的情况下,该域可细分交易类型 |
18 | F60.3.6 | 交易介质 | M | String | 1 | |
19 | F60.3.7 | IC卡的应用类型 | M | String | 1 | |
20 | F60.3.8 | 账户结算类型 | M | String | 2 | |
21 | F60.3.9 | 卡账户等级 | M | String | 1 | 根据报备卡样或申请卡bin时的发卡项目等级确定该取值。 |
22 | F60.3.10 | 卡产品 | M | String | 2 | 根据报备卡样或申请卡bin时的发卡项目类型确定该取值。 |
termInfo说明:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | location | 终端实时经纬度信息 | O | String | 32 | 受理终端设备实时经纬度信息,格式为纬度/经度,+表示北纬、东经,-表示南纬、西经。 |
2 | ntwLcs | 终端入网认证编号 | O | String | 5 | 银行卡受理终端产品入网认证编号。该编号由“中国银联标识产品企业资质认证办公室”为通过入网认证的终端进行分配。 格式:5位字符,例如P3100 |
3 | devTp | 商户端设备类型 | M | String | 2 | 12:行业终端(公交、地址用于指定行业的终端); |
4 | serlNm | 终端序列号 | M | String | 32 | 终端设备的硬件序列号。 |
5 | devId | 终端设备号 | M | String | 8 | 终端设备号,收单机构为商户终端分配的唯一编号。 |
6 | enRdNm | 加密随机因子 | O | String | 10 | 仅在被扫支付类交易报文中出现:若付款码为19位数字,则取后6位; 若付款码为EMV二维码,则取其tag57的卡号/token号的后6位。 |
7 | scrtTxt | 密文数据 | O | String | 16 | 仅在被扫支付类交易报文中出现:64bit的密文数据,对终端硬件序列号和加密随机因子加密后的结果。本子域取值为:64bit密文数据进行base64编码后的结果。 |
8 | appVer | 应用程序版本号 | O | String | 8 | 终端应用程序的版本号。应用程序变更应保证版本号不重复。当长度不足时,右补空格。 |
9 | devIp | 商户端设备IP | C | String | 40 | 商户端终端设备IP地址。注:如经、纬度信息未上送,该字段必送。 |
10 | mblCtryCd | 移动国家代码 | O | String | 3 | 基站信息,由国际电联(ITU)统一分配的移动国家代码(MCC) |
11 | mblNtNm | 移动网络号码 | O | String | 2 | 中国为460 |
12 | iccId | ICCID | O | String | 20 | 基站信息,由国际电联(ITU)统一分配的移动网络号码(MNC) |
13 | lctionCd1 | 位置区域码1 | O | String | 4 | 移动:00、02、04、07; 联通:01、06、09; 电信:03、05、11 |
14 | lbsNum1 | 基站编号1 | O | String | 12 | SIM卡卡号 |
15 | lbsSgnl1 | 基站信号1 | O | String | 4 | LAC(移动、联通),16进制 |
16 | lctionCd2 | 位置区域码2 | O | String | 4 | CID(移动、联通),16进制 |
17 | lbsNum2 | 基站编号2 | O | String | 12 | SIG(移动、联通),16进制 |
18 | lbsSgnl2 | 基站信号2 | O | String | 4 | LAC(移动、联通),16进制 |
19 | lctionCd3 | 位置区域码3 | O | String | 4 | CID(移动、联通),16进制 |
20 | lbsNum3 | 基站编号3 | O | String | 12 | SIG(移动、联通),16进制 |
21 | lbsSgnl3 | 基站信号3 | O | String | 4 | LAC(移动、联通),16进制 |
22 | telSysId | 电信系统识别码 | O | String | 4 | CID(移动、联通),16进制 |
23 | telNetId | 电信网络识别码 | O | String | 4 | SIG(移动、联通),16进制 |
24 | telLbs | 电信基站 | O | String | 4 | SID(电信),电信系统识别码,每个地级市只有一个SID |
25 | telLbsSgnl | 电信基站信号 | O | String | 4 | NID(电信),电信网络识别码,由电信各地级分公司分配。每个地级市可能有1到3个NID |
业务输出项
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | bizSts | 交易状态 | M | String | 4 | 指交易结果。01-交易处理中,02-交易成功,03-交易失败 |
2 | bizStsDesp | 交易状态描述 | M | String | 255 | 如:交易成功 |
3 | rjctRsnCd | 错误码 | O | String | 32 | |
4 | rjctRsn | 错误描述 | O | String | 255 | |
5 | iccDt | IC卡数据域 | C | String | 510 | 下发脚本的情况返回(十六进制扩位) |
以下字段在bizSts为01-交易处理中时有返回:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | txId | 商户订单号 | M | String | 32 | 请求的txId原样返回 |
2 | msgId | 交易流水号 | M | String | 32 | 收单交易系统生成的流水号 |
以下字段在bizSts为02-交易成功时有返回:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | txId | 商户订单号 | O | String | 32 | 请求的txId原样返回 |
2 | msgId | 交易流水号 | M | String | 32 | 收单交易系统生成的流水号 |
3 | mrchOrderNo | 商户原始订单号 | O | String | 64 | |
4 | tradeNo | 支付流水号 | O | String | 32 | 支付系统生成的唯一流水号 |
5 | mrchNm | 特约商户简称 | M | String | 128 | |
6 | tradeDate | 交易日期 | M | String | 8 | 格式为yyyyMMdd,对账用。 |
7 | timeEnd | 交易完成时间 | M | String | 14 | 格式为yyyyMMddHHmmss |
8 | tunnel | 交易通道 | M | String | 10 | ZJRCU-丰收互联,UNIONPAY-银联 |
9 | txAmt | 交易金额 | M | String | 15 | 单位元,精确到小数点后两位。 |
10 | ccy | 标价币种 | O | String | 3 | 默认CNY-人民币。指txAmt的币种。 |
11 | ftPayAmt | 用户支付金额 | O | String | 15 | 买家付款的金额。单位为元,精确到小数点后两位 |
12 | settleAmt | 应结金额 | M | String | 15 | |
13 | promTtlAmt | 优惠金额 | O | String | 15 | 优惠金额<=交易金额,交易金额-优惠金额=用户实付金额。单位为元,精确到小数点后两位 |
以下字段在bizSts为02-交易成功且交易通道为行内通道时有返回:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | payInfo | 支付详情 | O | List | 详细字段见payInfo说明 | |
2 | zjrcuPromInfo | 优惠详情 | O | List | 详见zjrcuPromInfo说明。 |
payInfo说明:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | acctTp | 账户类型 | M | String | 20 | 0102-借记卡;0201-信用卡;0301-电子账户;0401-平台账户;0501-随心花; |
2 | amt | 支付金额 | M | String | 15 | 单位元,精确到小数点后两位. 当账户类型为借记卡/信用卡/电子账户/平台账户/随心花时,表示对应的账户支付金额; |
3 | acctNo | 转出卡号 | M | String | 32 | |
4 | acctNm | 转出账户名 | M | String | 80 | |
5 | openBranNo | 开户机构号 | C | String | 6 |
zjrcuPromInfo说明:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | promTp | 优惠类型 | M | String | 4 | PR01-随机减,PR02-票券 |
2 | promAmt | 优惠金额 | M | String | 15 | 单位为元,精确到小数点后两位。 |
3 | promTm | 活动时间 | O | String | 32 | 如:20240101-20240130 |
4 | promNm | 活动名称 | 0 | String | 32 |
以下字段在bizSts为02-交易成功且交易通道为银联时有返回:
序号 | key | 中文名称 | 是否必输 | 类型 | 长度 | 说明 |
---|---|---|---|---|---|---|
1 | rcvrInstCd | 接收机构标识码 | M | String | 11 | |
2 | parIf | PAR信息 | O | String | 37 | token交易返回。数据示例:PR031+子域tag(01)+子域长度(1D)+29位数据 |