说明:被扫支付场景,可能存在支付中需要用户输入密码的情况。该情况下一般交易会返回“BBS10000-支付中”状态。在该场景下,建议发起方发起多次查询,查询频率推荐1分钟内按 5s+5s+5s+5s+10S+10S+20S方式联机查询,并保留手工发起查询的能力。
调用地址
使用HTTP协议,POST方式提交。
URL(测试环境):
URL(测试环境外网): https://test.wsmsd.cn/sit/api/v3/labs/trans/merge/micropay
URL(生产环境)::https://s2.lakala.com/api/v3/labs/trans/merge/micropay
请求报文
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| merchant_no | 商户号 | M | String(32) | 拉卡拉分配的商户号 |
| term_no | 终端号 | M | String(32) | 拉卡拉分配的业务终端号 |
| out_trade_no | 商户交易流水号 | M | String(32) | 商户系统唯一,不可重复 |
| out_split_info | 商户拆单信息 | M | List<> | 拆单信息,详细字段见out_split_info字段说明 |
| auth_code | 支付授权码 | M | String(32) | 扫码支付授权码,设备读取用户APP中的条码或者二维码信息,用户付款码条形码规则见说明 |
| total_amount | 金额 | M | String(12) | 单位分,整数型字符 |
| location_info | 地址位置信息 | M | Object | 地址位置信息,风控要求必送 |
| busi_mode | 业务模式 | C | String(8) | 业务模式: ACQ-收单 PAY-付款 不填,默认为“ACQ-收单” |
| subject | 订单标题 | C | String(42) | 标题,用于简单描述订单或商品(账户端控制,实际最多42个字符) |
| notify_url | 商户通知地址 | C | String(128) | 商户通知地址,如上传,且 pay_order_no 不存在情况下,且支付响应报文是交易中状态的场景下,则按此地址通知商户 |
| scan_type | 扫码类型 | C | String(1) | 0或不填:扫码支付 1:刷脸支付 |
| identity_info | 身份信息 | C | String(1024) | 实名支付信息,json字符串,如{“identityNo”:”32000000000000000X”,”name”:”张三”} ,然后国密sm2加密 |
| acc_busi_fields | 账户端业务信息域 | C | Object | 参见以下acc_busi_fields字段详细说明,不同类型的auth_code对应不同的账户端,需要填写不同的信息 |
| remark | 备注 | C | String(128) | 备注信息 |
out_split_info字段说明
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| out_sub_trade_no | 外部子交易流水号 | M | String(32) | 商户子交易流水号,商户号下唯一 |
| merchant_no | 商户号 | M | String(32) | 拉卡拉分配的商户号 |
| term_no | 终端号 | M | String(32) | 拉卡拉分配的业务终端号 |
| amount | 金额 | M | String(12) | 单位分,整数型字符 |
| settle_type | 结算类型(合单) | C | String(4) | “0”或者空,常规结算方式 |
| sub_remark | 子单备注 | C | String(64) | 子单备注信息 |
说明:
1)拆单信息域中商户号不可重复;
2)交易层订单金额必须是拆单信息域中各个子单的金额汇总之和;
3)对拆单信息域中每个结算商户号和终端号的权限交易都必须通过,其中一个校验失败,则交易中止,失败返回;
4)拆单域中子单条数最少两条、最多20条,否则拒绝。
支持的auth_code说明
| 属性 | 说明 | 备注 |
|---|
| 微信 | WECHAT | 付款码10 11 12 13 14 15开头 |
| 支付宝 | ALIPAY | 付款码25 26 27 28 29 30开头 |
location_info字段说明
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| request_ip | 请求方IP地址 | M | String(64) | 请求方的IP地址,存在必填,格式如36.45.36.95 |
| base_station | 基站信息 | C | String(128) | 客户端设备的基站信息(主扫时基站信息使用该字段) |
| location | 维度,经度 | C | String(32) | 商户终端的地理位置,存在必填 格式:纬度,经度,+表示北纬、东经,-表示南纬、 西经,精度最长支持小数点后9位。举例:+37.123456789,-121.123456789 |
支付宝二维码被扫场景下acc_busi_fields域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| extend_params | 业务扩展参数 | C | object | 支付宝业务扩展参数 ,主要用于花呗分期,见extend_params字段说明 |
| business_params | 商户传入业务信息 | C | String(512) | 商户传入业务信息,应用于安全,营销 等参数直传场景,格式为 json 格式。 |
| goods_detail | 商品详情 | C | String(6000) | 订单包含的商品列表信息,Json格式。见“支付宝goods_detail字段说明” |
| store_id | 商户门店编号 | C | String(32) | 支付宝收单上送 |
| alipay_store_id | 支付宝店铺编号 | C | String(32) | 支付宝收单上送 |
支付宝extend_params字段说明
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| sys_service_provider_id | 服务商的PID | C | String(64) | 系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的 PID |
| hb_fq_num | 花呗分期期数 | M | String(5) | 支付宝花呗分期必送字段: 花呗分期数 3:3期 6:6期 12:12期 |
| hb_fq_seller_percent | 卖家承担手续费比例 | M | String(3) | 支付宝花呗分期必送字段: 卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持 100:代表商家贴息 0:代表用户承担手续费 |
支付宝goods_detail字段说明(暂不支持)
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| goods_id |
| M | String(32) | 商品的编号 |
| alipay_goods_id |
| C | String(32) | 支付宝定义的统一商品编号 |
| goods_name |
| M | String(256) | 商品名称 |
| quantity |
| M | String(12) | 商品数量 |
| price |
| M | String(12) | 单位为分 |
| goods_category |
| C | String(24) | 商品类目 |
| categories_tree |
| C | String(128) | 商品类目树,从商品类目根节点到叶子节点的类目 id 组成,类目 id 值使用|分 割 |
| body |
| C | String(512) | 商品描述信息 |
| show_url |
| C | String(256) | 商品的展示地址 |
微信二维码被扫场景下acc_busi_fileds域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| sub_appid | 子商户公众账号ID sub_appid | C | String(32) | 微信公众平台基本配置中的AppID(应用ID),传入后支付成功可返回对应公众号下的用户openid,只对微信支付有效 |
| detail | 商品详情 | C | String(1024) | 单品优惠功能字段,json字符串格式,内容见以下“微信detail字段说明” |
| goods_tag | 订单优惠标记 | C | String(32) | 订单优惠标记,微信平台配置的商品标记,用于优惠券或者满减使用,accountType为WECHAT时,可选填此字段 |
微信detail字段说明(暂不支持)
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| cost_price |
| C | String(12) | 1.商户侧一张小票订单可能被分多次支付,订单原 价用于记录整张小票的交易金额。 2.当订单原价与支付金额不相等,则不享受优惠。 3.该字段主要用于防止同一张小票分多次支付,以 享受多次优惠的情况,正常支付订单不必上传此参 数。 如:608800 |
| receipt_id |
| C | String(12) | 商家小票 ID |
| goods_detail |
| M | String(512) | json字符串,内容见以下“微信goods_detail字段说明” |
微信goods_detail字段说明
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| goods_id |
| M | String(32) | 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如“商品编码” |
| wxpay_goods_id |
| C | String(32) | 微信支付定义的统一商品编号 |
| goods_name |
| C | String(256) | 商品的实际名称 |
| quantity |
| M | String(12) | 用户购买的数量 |
| price |
| M | String(12) | 单位为:分。如果商户有优惠,需传输商户优惠后的单价 |
响应报文
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| need_query | 是否需要发起查询 | M | String(32) | 0=不需要 1=需要 当返回1时,代表订单处理中,商户需主动发起查询 |
| merchant_no | 商户号(待上线) | M | String(32) | 拉卡拉分配的商户号(请求接口中商户号) |
| out_trade_no | 商户交易流水号 | M | String(32) | 请求报文中的商户交易流水号 |
| trade_no | 拉卡拉交易流水号 | M | String(32) | 拉卡拉交易流水号 |
| log_no | 拉卡拉对账单流水号 | M | String(14) | 拉卡拉对账单流水号 |
| acc_trade_no | 账户端交易订单号 | C | String(32) | 账户端交易流水号 |
| account_type | 钱包类型 | M | String(16) | 微信:WECHAT 支付宝:ALIPAY 银联:UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING 数字货币:DCPAY |
| total_amount | 订单金额 | M | String(12) | 单位分,整数数字型字符 |
| payer_amount | 付款人实际发生金额 | M | String(12) |
|
| acc_settle_amount | 账户端应结订单金额 | M | String(12) | 应结订单金额,单位分 |
| acc_mdiscount_amount | 商户优惠金额(账户端) | C | String(12) | 账户端返回商户优惠金额,单位分 |
| acc_discount_amount | 账户端优惠金额 | C | String(12) | 账户端返回账户端优惠金额,单位分 |
| trade_time | 交易完成时间 | M | String(14) | 以账户端返回时间为准 |
| bank_type | 付款银行 | C | String(128) | 付款银行 |
| card_type | 银行卡类型 | C | String(16) | 01:借记卡 02:贷记卡 |
| split_info | 拆单信息 | M | List<> | 拆单信息见split_info域说明 |
| acc_resp_fields | 账户端返回信息域 | C | Object | 账户端返回信息域 |
split_info域信息
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| sub_trade_no | 子单交易流水号 | M | String(32) | 子单交易流水号 |
| sub_log_no | 子单对账单流水号 | M | String(14) | 子单对账单流水号 |
| out_sub_trade_no | 外部子交易流水号 | M | String(32) | 商户子交易流水号,商户号下唯一 |
| merchant_no | 商户号 | M | String(32) | 拉卡拉分配的商户号 |
| merchant_name | 商户名称 | M | String(64) | 商户名称 |
| term_no | 终端号 | M | String(32) | 拉卡拉分配的业务终端号 |
| amount | 金额 | M | String(12) | 单位分,整数型字符 |
支付宝二维码被扫场景下返回acc_resp_fields域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| user_id | 买家在支付宝的用户id | M | String(64) | buyer_user_id |
| store_id | 商户门店编号 | C | String(32) |
|
| alipay_store_id | 支付宝的店铺编号 | C | String(32) |
|
| sub_mch_id | 子商户号 | C | String(20) | 账户端子商户号 |
微信二维码被扫场景下返回acc_resp_fields域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| store_id | 商户门店编号 | C | String(32) |
|
| alipay_store_id | 支付宝的店铺编号 | C | String(32) |
|
| open_id | 用户标识 | M | String(64) | 用户在商户appid下的唯一标识 |
| user_id | 用户子标识 | C | String(64) | sub_open_id |
| sub_mch_id | 子商户号 | C | String(20) | 账户端子商户号 |
| acc_activity_id | 活动 ID | C | String(32) | 在账户端商户后台配置的批次 ID |
示例
请求报文:
{
"req_time":"20210907150256",
"version":"3.0",
"out_org_code":"OP00000003",
"req_data":{
"merchant_no":"822290070111135",
"term_no":"29034705",
"out_trade_no":"FD660E1FAA3A4470933CDEDAE1EC1D8E",
"auth_code":"135178236713755038",
"total_amount":"123",
"location_info":{
"request_ip":"10.176.1.192",
"location":"+37.123456789,-121.123456789"
},
"out_order_no":"08F4542EEC6A4497BC419161747A92FA"
}
}
复制
响应报文:
{
"msg":"用户支付中",
"resp_time":"20210907150258",
"code":"BBS10000",
"resp_data":{
"need_query":"1",
"out_trade_no":"FD660E1FAA3A4470933CDEDAE1EC1D8E",
"trade_no":"2021090766210003630077",
"log_no":"66210003630077",
"acc_trade_no":"",
"account_type":"WECHAT",
"total_amount":"123",
"payer_amount":"",
"acc_settle_amount":"",
"acc_mdiscount_amount":"",
"acc_discount_amount":"",
"trade_time":"20210907150258",
"bank_type":"",
"card_type":""
}
}
复制