调用地址
使用HTTP协议,POST方式提交。
URL(测试环境):https://test.wsmsd.cn/sit/api/v3/labs/trans/merge/preorder
URL(生产环境):https://s2.lakala.com/api/v3/labs/trans/merge/preorder
请求报文
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| merchant_no | 商户号 | M | String(32) | 拉卡拉分配的商户号 |
| term_no | 终端号 | M | String(32) | 拉卡拉分配的业务终端号 |
| out_trade_no | 商户交易流水号 | M | String(32) | 商户系统唯一,对应数据库表中外部请求流水号。 |
| out_split_info | 拆单信息 | M | List<> | 拆单信息,详细字段见out_split_info字段说明 |
| account_type | 钱包类型 | M | String(32) | 微信:WECHAT 支付宝:ALIPAY 银联:UQRCODEPAY 京东钱包:JD |
| trans_type | 接入方式 | M | String(2) | 41:NATIVE(扫码支付)(仅ALIPAY支持) 51:JSAPI(微信公众号支付,支付宝服务窗支付,银联JS支付,翼支付JS支付、拉卡拉钱包支付) 71:微信小程序支付 |
| 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 不存在情况下,则按此地址通知商户 |
| remark | 备注 | C | String(128) |
|
| identity_info | 身份信息 | C | String(1024) | 实名支付信息,json字符串,如{“identityNo”:”32000000000000000X”,”name”:”张三”} ,然后国密sm2加密 |
| acc_busi_fields | 账户端业务信息域 | C | Object | 参见以下acc_busi_fields字段详细说明,不同的account_type和trans_type,需要传入的参数不一样 |
| complete_notify_url | 发货确认通知地址 | 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条,否则拒绝。
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域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| user_id | 买家在支付宝的用户id | M | String(64) | 支付宝的buyer_user_id |
| timeout_express | 预下单有效时间 | C | String(2) | 预下单的订单的有效时间,以分钟为单位。如果在有效时间内没有完成付款,则在账户端该订单失效。如果不上送,以账户端订单失效时间为准。 建议不超过15分钟。不传值则默认5分钟。 |
| extend_params | 业务扩展参数 | C | Object | 支付宝业务扩展参数 ,见说明 |
| goods_detail | 商品详情 | C | String(6000) | 订单包含的商品列表信息,Json格式。 |
| quit_url | 用户付款中途退出返回商户网站的地址 | C | String(256) | transType=81时(即支付宝H5支付),此参数必传 |
| 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_fields域内容
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| timeout_express | 预下单有效时间 | C | String(2) | 预下单的订单的有效时间,以分钟为单位。如果在有效时间内没有完成付款,则在账户端该订单失效。如果不上送,以账户端订单失效时间为准。 建议不超过15分钟。不传值则默认5分钟。 |
| sub_appid | 子商户公众账号ID | C | String(32) | 微信分配的子商户公众账号ID,sub_appid(即微信小程序支付-71、公众号支付-51、微信app支付-61),此参数必传,只对微信支付有效 工行数字钱包情况下,该字段上送工行的openId 拉卡拉钱包情况下,该字段上送LAKALA的userId |
| user_id | 用户标识 | C | String(64) | 用户在子商户sub_appid下的唯一标识,sub_openid,(即微信小程序支付-71、众号支付-51),此参数必传,只对微信支付有效 |
| detail | 商品详情 | C | String(1024) | 单品优惠功能字段,详见下文说明 |
| goods_tag | 订单优惠标记 | C | String(32) | 订单优惠标记,微信平台配置的商品标记,用于优惠券或者满减使用,accountType为WECHAT时,可选填此字段 |
| attach | 附加域 | C | String(128) | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据。商户定制字段,直接送到账户端。 |
微信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_id |
| M | String(32) | 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。如“商品编码” |
| wxpay_goods_id |
| C | String(32) | 微信支付定义的统一商品编号 |
| goods_name |
| C | String(256) | 商品的实际名称 |
| quantity |
| M | String(12) | 用户购买的数量 |
| price |
| M | String(12) | 单位为:分。如果商户有优惠,需传输商户优惠后的单价 |
响应报文
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| merchant_no | 商户号(待上线) | M | String(32) | 拉卡拉分配的商户号(请求接口中商户号) |
| out_trade_no | 商户请求流水号 | M | String(32) | 请求报文中的商户请求流水号 |
| trade_no | 拉卡拉交易流水号 | M | String(32) | 拉卡拉交易流水号 |
| log_no | 拉卡拉对账单流水号 | M | String(14) | 拉卡拉对账单流水号 |
| 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) | 单位分,整数型字符 |
支付宝(41-NATIVE)场景下返回acc_resp_fields域
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| code | 二维码信息 | M | String(256) | 商户可用此参数自定义去生成二维码后展示出来进行扫码支付 |
| code_image | 二维码图片内容 | M | String(256) | 商户收款二维码图片。Base64编码,暂无 |
| sub_mch_id | 子商户号
| C | String(20) | 账户端子商户号 |
支付宝(51-JSAPI)场景下返回acc_resp_fields域
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| prepay_id | 预下单Id | M | String(32) | 预支付交易会话ID |
| sub_mch_id | 子商户号
| C | String(20) | 账户端子商户号 |
微信(71-小程序)微信(51-JSAPI)场景下返回acc_resp_fields域
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| prepay_id | 预下单Id | M | String(32) | 预支付交易会话ID |
| pay_sign | 支付签名信息 | M | String(256) | 签名 |
| app_id | 小程序id | M | String(32) | 商户注册具有支付权限的小程序成功后即可获得小程序id |
| time_stamp | 时间戳 | M | String(32) | 当前的时间 |
| nonce_str | 随机字符串 | M | String(32) | 随机字符串 |
| package | 订单详情扩展字符串 | M | String(128) |
|
| sign_type | 签名方式 | M | String(32) | 签名类型,支持RSA |
| sub_mch_id | 子商户号
| C | String(20) | 账户端子商户号 |
微信(61-APP)场景下返回acc_resp_fields域
| 字段名 | 中文名称 | 是否必填 | 类型 | 说明 |
|---|
| prepay_id | 预下单Id | M | String(32) | 预支付交易会话ID |
| pay_sign | 支付签名信息 | M | String(256) | 签名 |
| app_id | 移动应用appid | M | String(32) | 商户注册具有支付权限的安卓/IOSAPP成功后即可获得移动应用appid |
| time_stamp | 时间戳 | M | String(32) | 当前的时间 |
| nonce_str | 随机字符串 | M | String(32) | 随机字符串 |
| package | 订单详情扩展字符串 | M | String(128) |
|
| sign_type | 签名方式 | M | String(32) | 签名类型,支持RSA |
| sub_mch_id | 子商户号
| C | String(20) | 账户端子商户号 |
| partner_id | 从业机构号 | M | String(32) |
|
示例
请求报文:
{
"req_data": {
"merchant_no": "822290070111135",
"term_no": "29034705",
"out_trade_no": "KFPT20211018163339745459405",
"account_type":"UQRCODEPAY",
"trans_type": "51",
"total_amount": "100",
"location_info": {
"request_ip":"12.34.56.78",
"base_station":"00 6361 58130",
"location":"+37.123456789,-121.123456789"
},
"busi_mode":"ACQ",
"subject": "自动化测试",
"pay_order_no":"",
"notify_url": "",
"settle_type":"",
"remark": "",
"identity_info":"",
"promo_info":"",
"acc_busi_fields":{
"user_id":"Wek52a9hYY3zXbQ7JSrvZwiPa9lYJ7HyC+MqdjIbrSL21YT1H/v0WrgncHoRmsmZ",
"timeout_express":"",
"acq_addn_data_order_info":"",
"acq_addn_data_goods_info":"",
"front_url":"",
"front_fail_url":""
}
},
"req_time":"20211018163339",
"version":"3.0",
"out_org_code":"OP00000003"
}
复制
响应报文:
{
"msg": "成功",
"resp_time": "20211018165606",
"code": "BBS00000",
"resp_data": {
"out_trade_no": "KFPT20211018165606301458020",
"trade_no": "2021101866210004200101",
"log_no": "66210004200101",
"settle_merchant_no": "",
"settle_term_no": "",
"acc_resp_fields": {
"code": "https://qr.test.95516.com/UP02/qrcGtwWeb-web/front/confirmOrder?sessionId=c0b60813735d42838e761e47a84e000a",
"code_image": "",
"prepay_id": "",
"pay_sign": "",
"time_stamp": "",
"nonce_str": "",
"package": "",
"sign_type": "",
"redirect_url": "",
"best_pay_info": ""
}
}
}