1. 接口说明
请求URL: https://apihk.mch.weixin.qq.com/v3/global/transactions/app
2. 请求参数
|
商户号 | mchid | string[1, 32] | 是 | Body 微信支付分配的商户号 注意:仅适用于直连模式 示例值:1900000109 |
APPID | appid | string[1, 32] | 是 | Body 商户在微信公众平台或开放平台生成的应用的APPID。求统一下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID。 注意:仅适用于直连模式 示例值:wx8888888888888888 |
子商户号 | sub_mchid | string[1, 32] | 是 | Body 微信支付分配的子商户号 注意:仅适用于机构模式 示例值:1900000109 |
机构商户号 | sp_mchid | string[1, 32] | 是 | Body 微信支付分配的机构商户号 注意:仅适用于机构模式 示例值:1900000100 |
机构APPID | sp_appid | string[1, 32] | 是 | Body 机构在微信公众平台申请服务号对应的APPID 注意:仅适用于机构模式 示例值:wx8888888888888888 |
子商户APPID | sub_appid | string[1, 32] | 否 | Body 商户在微信开放平台申请移动应用对应的APPID 付款码支付/扫码支付/公众号支付使用商户公众号appid 小程序支付使用商户小程序appid APP支付使用商户APP应用appid 注意:仅适用于机构模式 示例值:wx8888888888888888 |
商品描述 | description | string[1, 127] | 是 | Body 商品或支付单简要描述,格式要求:门店品牌名-城市分店名-实际商品名称 示例值:image形象店-深圳腾大- QQ公仔 |
商户数据 | attach | string[1, 127] | 否 | Body 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 示例值:自定义数据 |
通知地址 | notify_url | string[1,256] | 是 | Body 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。请使用https协议链接 示例值:https://www.weixin.qq.com/wxpay/pay.php |
商户订单号 | out_trade_no | string[1, 32] | 是 | Body 商户系统内部的订单号,32个字符内、可包含字母;重新下单时请更换单号,其他说明见商户订单号 示例值:1217752501201407033233368018 |
商品标记 | goods_tag | string[1, 32] | 否 | Body 商品标记 示例值:WXG |
交易类型 | trade_type | string[1, 16] | 是 | Body JSAPI:公众号支付 NATIVE:扫码支付 APP:App支付 MWEB:H5支付 MICROPAY:付款码支付 示例值:JSAPI |
指定支付方式 | limit_pay | string[1, 32] | 否 | Body no_credit:指定不能使用信用卡支付 示例值:no_credit |
交易起始时间 | time_start | string[1,64] | 否 | Body 订单生成时间,格式为rfc3339格式,如2018-06-08T10:34:56+08:00 代表北京时间2018年06月08日10时34分56秒 示例值:2018-06-08T10:34:56+08:00 |
交易结束时间 | time_expire | string[1,64] | 否 | Body 订单失效时间,格式为rfc3339格式,如2018-06-08T10:34:56+08:00 代表北京时间2018年06月08日10时34分56秒。 示例值:2018-06-08T10:34:56+08:00 |
MCC码 | merchant_category_code | string[1, 16] | 是 | Body 商户行业编码,值列表详见商户行业编码 示例值:4111 |
支付者 | payer | object | 否 | Body 支付者信息,详细说明见下文 |
 | 支付者 | | |
用户标识 | openid | string[1,128] | 否 | 用户在商户appid对应下的唯一标识,需要传appid才有返回 ,openid如何获取,可详见获取openid 注意:仅适用于直连模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | 用户标识(机构) | sp_openid | string[1,128] | 否 | 用户在机构sp_appid对应下的唯一标识,sp_openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。openid如何获取,可详见获取openid。 注意:仅适用于机构模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | 用户标识(子商户) | sub_openid | string[1,128] | 否 | 用户在子商户sub_appid下用户唯一标识,sp_openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。openid如何获取,可详见获取openid。 注意:仅适用于机构模式 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o |
|
|
订单金额 | amount | object | 是 | Body 订单金额信息,详细说明见下文 |
 | 订单金额 | | |
总金额 | total | int | 是 | 订单总金额,币种的最小单位,只能为整数,详见交易金额 示例值:888 | 货币类型 | currency | string[1, 16] | 是 | 符合ISO 4217标准的三位字母代码 示例值:HKD |
|
|
场景信息 | scene_info | object | 否 | Body 场景信息对象,详细说明见下文 |
 | 场景信息 | | |
商户端设备号 | device_id | string[1, 32] | 否 | 终端设备号(商户自定义,如门店编号) 示例值:013467007045764 | 商户端设备IP | device_ip | string[1, 40] | 否 | 商户侧设备IP,取公网出口IP,支持IPV6 示例值:128.0.0.1 | 用户终端IP | payer_client_ip | string[1, 40] | 否 | 用户侧设备IP,取公网出口IP,支持IPV6 示例值:128.0.0.1 | 操作员ID | operator_id | string[1, 32] | 否 | 收银员ID,由商户自定义 示例值:123145 | 商户门店信息 | store_info | object | 否 | Body 门店信息对象,详细说明见下文 |  | 商户门店信息 | | |
编号 | id | string[1, 32] | 否 | 商户侧门店ID 示例值:0001 | 名称 | name | string[1, 32] | 是 | 商户侧门店名称 示例值:腾讯大厦分店 | 详细地址 | address | string[1, 64] | 是 | 详细的商户门店地址 示例值:广东省深圳市南山区科技中一道10000号 |
|
|
|
|
优惠功能 | detail | object | 否 | Body 优惠功能信息,详细说明见下文 |
 | 优惠功能 | | |
订单原价 | cost_price | int | 否 | 1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。 2.当订单原价与支付金额不相等,则不享受优惠。 3.该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 示例值:608800 | 商品小票ID | receipt_id | string[1, 32] | 否 | 商家小票ID 示例值:wx123 | 单品列表 | goods_detail | Array | 否 | Body 单品信息,使用Json格式 |  | 单品列表 | | |
商品编码 | goods_id | string[1, 32] | 是 | 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成 示例值:商品编码 | 微信支付商品编码 | wxpay_goods_id | string[1, 32] | 否 | 微信支付定义的统一商品编号(没有可不传) 示例值:1001 | 商品名称 | goods_name | string[1, 256] | 否 | 商品的实际名称 示例值:iPhone6s 16G | 商品数量 | quantity | int | 是 | 用户购买的数量 示例值:1 | 商品单价 | price | int | 是 | 如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的优惠券100-50,则活动商品的单价应为原单价-50) 示例值:528800 |
|
|
|
|
请求示例
机构模式

1{
2 "sp_appid": "wxdace645e0bc2c424",
3 "sp_mchid": "10000100",
4 "sub_mchid": "20000100",
5 "out_trade_no": "YX201710140020Z",
6 "merchant_category_code": "4111",
7 "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php",
8 "trade_type": "JSAPI",
9 "amount": {
10 "total": 10,
11 "currency": "HKD"
12 },
13 "attach": "QR code test",
14 "description": "QR code test",
15 "goods_tag": "001",
16 "detail": {
17 "cost_price": 10000,
18 "receipt_id": "1234",
19 "goods_detail": [
20 {
21 "goods_id": "iphone6s_16G",
22 "wxpay_goods_id": "1001",
23 "goods_name": "iPhone6s 16G",
24 "quantity": 1,
25 "price": 10
26 }
27 ]
28 },
29 "scene_info": {
30 "payer_client_ip": "14.23.150.211",
31 "device_ip": "59.37.125.32",
32 "device_id": "013467007045764",
33 "operator_id": "P001",
34 "store_info": {
35 "id": "SZTX001"
36 }
37 }
38}
直连模式

1{
2 "appid": "wx2421b1c4370ec43b",
3 "mchid": "10000100",
4 "out_trade_no": "YX202111100020Z",
5 "merchant_category_code": "4111",
6 "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php",
7 "trade_type": "JSAPI",
8 "amount": {
9 "total": 10,
10 "currency": "HKD"
11 },
12 "attach": "QR code test",
13 "description": "QR code test",
14 "goods_tag": "001",
15 "detail": {
16 "cost_price": 10000,
17 "receipt_id": "1234",
18 "goods_detail": [{
19 "goods_id": "iphone6s_16G",
20 "wxpay_goods_id": "1001",
21 "goods_name": "iPhone6s 16G",
22 "quantity": 1,
23 "price": 10
24 }]
25 },
26 "scene_info": {
27 "payer_client_ip": "14.23.150.211",
28 "device_ip": "59.37.125.32",
29 "device_id": "013467007045764",
30 "operator_id": "P001",
31 "store_info": {
32 "id": "SZTX001"
33 }
34 }
35}
3. 返回参数
正常返回
|
预支付交易会话标识 | prepay_id | string[1,64] | 是 | 微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时 示例值:wx201410272009395522657a690389285100 |
异常返回
|
返回状态码 | code | string[1, 32] | 是 | 错误码,枚举值见错误码列表 示例值:INVALID_REQUEST |
返回信息 | message | string[1, 256] | 是 | 返回信息,如非空,为错误原因 示例值:参数格式校验错误 |
详细的错误描述 | detail | object | 否 | 当code为PARAM_ERROR时返回,详细说明见下 |
 | 详细的错误描述 | | |
指示错误参数的位置 | field | string[1, 256] | 是 | 当错误参数位于请求body的JSON时,填写指向参数的JSON Pointer 当错误参数位于请求的url或者querystring时,填写参数的变量名 示例值:#/properties/payer | 错误参数的值 | value | string[1, 256] | 是 | 错误参数的值 示例值:1346177081915535577 | 具体错误原因 | issue | string[1, 256] | 是 | 具体错误原因 示例值:与ALLOF schema不符 | 错误参数的位置 | location | string[1, 256] | 否 | body:错误参数位于请求body的JSON中 url:错误参数位于请求url中 query:错误参数位于请求的querystring中 示例值:body |
|
|
返回示例
正常示例

1{
2 "prepay_id": "wx201411101639507cbf6ffd8b0779950874"
3}
异常示例

1{
2 "code": "INVALID_REQUEST",
3 "message": "Parameter format verification error",
4 "detail": {
5 "field": "#/properties/payer",
6 "value": "1346177081915535577",
7 "issue": "与ALLOF schema不符",
8 "location": "body"
9 }
10}
4. 错误码
|
NO_AUTH | 商户无此接口权限 | 请商户前往申请此接口权限 |
NOT_ENOUGH | 余额不足 | 用户账号余额不足,请用户充值或更换支付卡后再支付 |
ORDER_PAID | 商户订单已支付 | 商户订单已支付,无需更多操作 |
ORDER_CLOSED | 订单已关闭 | 当前订单已关闭,请重新下单 |
SYSTEM_ERROR | 系统错误 | 系统异常,请用相同参数重新调用 |
APPID_NOT_EXIST | APPID不存在 | 请检查APPID是否正确 |
MCHID_NOT_EXIST | MchID不存在 | 请检查MchID是否正确 |
APPID_MCHID_NOT_MATCH | appid和mchid不匹配 | 请确认appid和mchid是否匹配 |
LACK_PARAMS | 缺少参数 | 请检查参数是否齐全 |
OUT_TRADE_NO_USED | 商户订单号重复 | 请核实商户订单号是否重复提交 |
SIGN_ERROR | 签名错误 | 请检查签名参数和方法是否都符合签名算法要求 |
REQUIRE_POST_METHOD | 请使用post方法 | 请检查请求参数是否通过post方法提交 |
POST_DATA_EMPTY | post数据为空 | 请检查post数据是否为空 |
NOT_UTF8 | 编码格式错误 | 请使用UTF-8编码格式 |