手机pos接口

156 申请商户接口

功能说明

申请商户接口,用于后续交易

调用方式:系统调用

特别提醒:手机APP在银联发起交易时,订单号必须按此规则:CMP+16位数字+NPAY,eg:CMP2021012020210120NPAY,否则后续无法正常分账

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为156。
商户客户号 mer_cust_id 定长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20210120
行业 tm_type 定长4位String 必须 0100:住宿;0200:餐饮;0300:电器;0400:服饰;0500:旅游;0600:珠宝;0700:汽车服务;0800:美容养生;0900:酒吧,夜总会;1000:数码电脑;1100:美妆护肤;1200:百货;1300:家装建材;
用户省份 cust_prov 定长2位String 必须  
用户地区 cust_area 定长6位String 必须  
分账账户串 div_detail 变长1024位String 必须 数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’}],可分给多个对象,每个对象大括号{}用逗号隔开 该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的usercustid和acct_id , 若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知商户交易分账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
设备静态信息 dev_info_json 变长1024位的String 必须 Json格式,如下

分账账户串(div_detail)内容:

参数中文名称 参数名称 数据格式 是否必须 说明
分账客户号 divCustId 定长16位的String 必须  
分账账户号 divAcctId 变长9位String 必须  
分账金额 divAmt 变长14位String 必须 分账金额,保留两位小数

设备静态信息(dev_info_json)内容:

参数中文名称 参数名称 数据格式 是否必须 说明
设备类型 devType 定长1位 String 必须 交易时的,1-电脑;2-手机
IP地址 ipAddr 变长45位 String 必须 交易时的ip地址 目前暂传IPv4格式
定位(经度) cenX 变长 String 必须  
定位(纬度) cenY 变长 String 必须  
商户APP ID merAppId 变长 String 必须 Android 取 客户端包名 iOS 取 bundleID
APP名称 appName 变长 String 必须  
APP版本号 appVersion 变长 String 必须  
注册账号 registerAccount 变长 String 必须 指商户APP侧登录用户名
注册时间 registerTime 变长 String 必须 指商户APP侧用户注册时间
注册IP地址 registerIpArr 变长 String 必须 指商户APP侧用户注册时所用IP
注册时使用的设备号 registerDevNo 变长 String 必须 指手机ICCID
注册设备类型 registerType 变长 String 必须 1.电脑;2.手机
设备GPS位置 registerGpsLocation 变长 String 必须 指该笔交易发生的IP
设备SIM卡号码 registerSimCardNo 变长 String 必须 指手机SIM卡号码

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为156
返回码 resp_code 定长6位String 必须 156000–调用成功,其他见返回码表
结果描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20200513
行业 tm_type 定长4位String 必须 根据实际获取的行业
用户省份 cust_prov 定长2位String 必须 根据实际获取的省份
用户地区 cust_area 定长6位String 必须 根据实际获取的地区
分账账户串 div_detail 变长1024位String 必须 数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’}],可分给多个对象,每个对象大括号{}用逗号隔开 该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的usercustid和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知商户交易分账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
银联商户号 union_pay_mer_id 变长32位String 可选 银联商户号
银联商户名 union_pay_mer_name 变长256位String 可选 银联商户名

返回码

返回码 返回描述
156104 用户状态异常
156334 分账信息格式不正确
156333 分账信息不存在
156721 分账串内容不能超过五个
156722 分账串部分字段为空
156732 分账串客户号信息格式错误
156202 交易订单号重复
156728 分账串账户信息格式错误
156723 分账串金额格式错误
156112 账号不存在
156741 分账串内容重复

代码示例

java

String valueObj = {
       "version":"10",
       "cmd_id":"156",
       "mer_cust_id":
       "6666000000026086",
       "user_cust_id":"6666000000026186",
       "order_id":"2021012011111",
       "order_date":"20210120",
       "tm_type":"0100",
       "cust_prov":"15",
       "cust_area":"150700",
       "div_detail":"[{'divCustId':'6666000000028715','divAcctId':'82524','divAmt':'5.03'},{'divCustId':'6666000000026190','divAcctId':'79714','divAmt':'6.03'}]",
       "bg_ret_url":"http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "dev_info_json":"{\"devType\":\"1\",\"iMEI\":\"355320084666603\",\"ipAddr\":\"172.31.30.188\",\"cenX\":\"172\",\"cenY\":\"173\",\"merAppId\":\"name2\",\"appName\":\"app名称\",\"appVersion\":\"1.0\",\"registerAccount\":\"1.0\",\"registerTime\":\"20210126\",\"registerIpArr\":\"1.0\"}"
       };

 String testUrl = "http://192.168.3.170:8083/api/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "156";
 String merCustId = "6666000000026086";
 String version = "10";
 httpServletResponse.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
 PrintWriter out = httpServletResponse.getWriter();
 out.println();
 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
 out.println("<HTML>");
 out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
 out.println(" <BODY style=\"display: none\">");
 out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
 out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
 out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
 out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
 out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
 out.println("</from>");
 out.println("<script>window.document.submitForm.submit();</script>");
 out.println(" </BODY>");
 out.println("</HTML>");
 out.flush();
 out.close();
成功响应:
200
      {
        "cmd_id": "156",
        "resp_code": "156000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20210120",
        "order_id": "2021012011111",
        .......
      }
失败响应:
200
   {
     "cmd_id": "156",
     "resp_code": "156099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20210120",
     "order_id": "2021012011111",
     .......
   }

155 手机pos交易结果通知

功能说明

此接口返回的是手机pos交易成功后,入账的结果,通知地址是156申请商户接口请参中的商户后台应答地址

调用方式:无

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为155
应答返回码 resp_code 定长6位String 必须 155000—交易成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
全局流水号 trace_id 变长40位String 必须 全局流水号
请求流水号 product_seq_id 变长64位String 必须 请求流水号
请求日期 product_seq_date 定长8位String 必须 yyyyMMdd
银联商户号 union_pay_mer_id 变长32位String 必须  
银联商户名 union_pay_mer_name 变长256位String 可选  
银联流水号 out_transaction_id 变长64位String 可选  
商户订单号 order_id 变长128位String 可选  
商户订单日期 order_date 定长8位String 可选 yyyymmdd
交易类型 business_type 定长2位String 可选 交易类型(01:消费 00:查询 31:消费撤销 04:消费退款)
交易方法 business_method 定长2位String 可选 交易方法(00:有卡 01:二维码主扫 02:二维码被扫)
终端号 term_id 变长128位String 可选 终端号, uMP开头
订单发送时间 order_send_time 变长14位String 可选 yyyyMMddHHmmss
银行卡号 acc_no 变长32位String 可选 根据商户配置返回
交易金额 trans_amt 变长14位String 必须 交易金额(单元:元)
交易币种 currency_code 定长3位String 可选 交易币种(默认为156-CNY)
交易传输时间 trace_time 变长14位String 可选 yyyyMMddHHmmss
刷卡方式 card_mode 定长2位String 可选 刷卡方式(00:银行卡 01:手机pay 02:可穿戴)
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡;1–贷记,信用卡;2-借贷不分离
支付通道类型 pay_channel_type 定长1位String 可选 W微信、A支付宝、U银联
兑换日期 exchange_date 变长String 可选 兑换日期(交易成功,交易币种和清算币种不一致的时候返回) yyyyMMdd
汇率 exchange_rate 变长String 可选 汇率(交易成功,交易币种和清算币种不一致的时候返回)
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
优惠信息 coupon_info 定长String 可选  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
分账账户串 div_detail 变长1024位String 可选 数据格式:[{“divCustId “:”6000060000009547”,” divAcctId”:”MDT000001”,” divAmt”:”1.00”}]

分账账户串(div_detail)内容:

参数中文名称 参数名称 数据格式 是否必须 说明
分账客户号 divCustId 定长16位的String 必须  
分账账户号 divAcctId 变长9位String 必须  
分账金额 divAmt 变长14位String 必须 分账金额,保留两位小数

优惠信息(coupon_info)内容:

参数中文名称 参数名称 数据格式 是否必须 说明
项目类型 type 定长4位的String 必须  
出资方 spnsrId 变长20位String 必须 出资方(目前取值只允许为00010000,即仅支持银联作为出资方,未来将增加付款方等出资方)
金额 offstAmt 变长14位String 必须 单位是元,不能为0,币种同上层currencyCode字段
项目编号 id 变长40位String 可选 项目编号,用于票券编号等,格式自定义
项目简称 desc 变长40位String 可选 项目简称,优惠活动简称,可用于展示,打单等
附加信息 addnInfo 变长100位String 可选  

返回码

返回码 返回描述
156000 交易成功
156003 交易失败