付款码支付API(支持单品优惠)

应用场景

请求参数变更:单品优惠仅在原付款码支付API基础上新增了一个请求参数version,其他协议规则保持不变。

返回参数变更:新增参数promotion_detail,以json方式展示,所有优惠信息都将通过该字段做展示,同时为了保持参数风格一致,原字段“总代金券金额(coupon_fee)”、“应结订单金额(settlement_total_fee)”也进行了重命名 ,详细内容请见“注意事项”

接口地址

https://api.mch.weixin.qq.com/pay/micropay

https://api2.mch.weixin.qq.com/pay/micropay(备用域名)见跨城冗灾方案

是否需要证书

不需要。

输入参数

名称 变量名 必填 类型 示例值 描述
接口版本号 version String(32) 1.0 新增字段,接口版本号,区分原接口,固定填写1.0
订单优惠标记 goods_tag String(32)   订单优惠标记,用于区分订单是否可以享受优惠,字段内容在微信后台配置券时进行设置,说明详见代金券或立减优惠
商品详情 detail String(6000) 示例见下文

新增字段,单品优惠活动该字段必传,且必须按照规范上传,JSON格式,详见下文【单品优惠活动字段说明】

其他字段列表见

付款码支付API(普通商户)

付款码支付API(服务商)

单品优惠活动detail字段列表说明:

名称 变量名 必填 类型 示例值 描述
订单原价 cost_price int 608800 1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。
2.当订单原价与支付金额不相等,则不享受优惠。
3.该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。
商品小票ID receipt_id String(32) wx123 商家小票ID
单品列表 goods_detail String 示例见下文 单品信息,使用Json数组格式提交

单品优惠活动goods_detail字段说明:

名称 变量名 必填 类型 示例值 描述
商品编码 goods_id String(32) 商品编码 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成
微信侧商品编码 wxpay_goods_id String(32) 1001 微信支付定义的统一商品编号(没有可不传)
商品名称 goods_name String(256) iPhone6s 16G 商品的实际名称
商品数量 quantity int 1 用户购买的数量
商品单价 price int 528800 单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的优惠券100-50,则活动商品的单价应为原单价-50)

detail字段值举例如下:

{
"cost_price":608800,
"receipt_id":"wx123",
"goods_detail":[ //注意goods_detail字段的格式为"goods_detail":[{}],较多商户写成"goods_detail":{}
{
"goods_id":"商品编码",
"wxpay_goods_id":"1001",
"goods_name":"",
"quantity":1,
"price":528800
},
{
"goods_id":"商品编码",
"wxpay_goods_id":"1002",
"goods_name":"iPhone6s 32G",
"quantity":1,
"price":608800
}
]
}

提交支付数据举例:

<xml>
<appid>wxdace645e0bc2c424</appid>
<attach>test</attach>
<auth_code>130050378319653252</auth_code>
<body>被扫测试</body>
<detail><![CDATA[{"cost_price":1,"receipt_id":"wx123","goods_detail":[{"goods_id":"商品编码","wxpay_goods_id":"1001","goods_name":"iPhone6s 16G","quantity":1,"price":1},{"goods_id":"商品编码","wxpay_goods_id":"1002","goods_name":"iPhone6s 32G","quantity":1,"price":1}]}]]></detail>
<device_info>TEST01</device_info>
<goods_tag>MEETING</goods_tag>
<mch_id>1900009001</mch_id>
<nonce_str>4b4f6f692547affd2c8fadb39fed603a</nonce_str>
<out_trade_no>19000090011489146530</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<sub_mch_id>11383918</sub_mch_id>
<total_fee>503</total_fee>
<version>1.0</version>
<sign>144FF79B7391FE1BD0708470B7D8A2E3</sign>
</xml>

注:参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。

返回结果

当return_code 和result_code都为SUCCESS的时:

名称 变量名 必填 类型 示例值 描述
其他字段列表见

付款码支付API(普通商户)

付款码支付API(服务商)

营销详情 promotion_detail String(6000) 示例见下文 新增返回,营销详情列表,使返回值为Json格式

单品优惠活动promotion_detail字段列表说明:

名称 变量名 必填 类型 示例值 描述
券ID promotion_id String(32)
109519
券或者立减优惠id
优惠名称 name String(64)
单品惠-6
优惠名称
优惠范围 scope String(32)
SINGLE

GLOBAL- 全场代金券

SINGLE- 单品优惠
优惠类型 type String(32)
DISCOUNT

COUPON- 代金券,需要走结算资金的充值型代金券,(境外商户券币种与支付币种一致)

DISCOUNT- 优惠券,不走结算资金的免充值型优惠券,(境外商户券币种与标价币种一致
优惠券面额 amount int 5

用户享受优惠的金额

活动ID activity_id String(32)
931386
在微信商户后台配置的批次ID
微信出资 wxpay_contribute String(32) 0 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额,单位为分
商户出资 merchant_contribute String(32) 0

特指商户自己创建的优惠,出资金额等于本项优惠总金额,单位为分

其他出资 other_contribute String(32) 5 其他出资方出资金额,单位为分
单品列表 goods_detail String 见下文 单品信息,使用Json格式

单品优惠活动goods_detail字段说明:

名称 变量名 必填 类型 示例值 描述
商品编码 goods_id String(32) 商品编码 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成
商品备注 goods_remark String(128) 1001 goods_remark为备注字段,按照配置原样返回,字段内容在微信后台配置券时进行设置。
商品优惠金额 discount_amount int 100 单品的总优惠金额,单位为:分
商品数量 quantity int 1 用户购买的数量
商品价格 price int 528800 单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50)

注意:goods_remark为备注字段,按照配置原样返回,goods_tag是订单优惠标记,用于区分订单是否可以享受优惠,两个字段内容都在微信后台配置券时进行设置。

promotion_detail字段值举例如下:

{
"promotion_detail":[
{
"promotion_id":"109519",
"name":"单品惠-6",
"scope":"SINGLE",
"type":"DISCOUNT",
"amount":5,
"activity_id":"931386",
"wxpay_contribute":0,
"merchant_contribute":0,
"other_contribute":5,
"goods_detail":[
{
"goods_id":"a_goods1",
"goods_remark":"商品备注",
"quantity":7,
"price":1,
"discount_amount":4
},
{
"goods_id":"a_goods2",
"goods_remark":"商品备注",
"quantity":1,
"price":2,
"discount_amount":1
}
]
}
]
}