JSAPI下单
支持微信公众号支付、微信小程序支付、支付宝JS支付等使用jsapi支付的场景。
请求接口
openapi/v2/pay/trans/jsapipay
公共参数
[接口协议 - 公共参数](/docs/openapi/v2/dev/rule/params.md
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| payment | 是 | String(16) | 支付方式. 支付方式 |
| app_id | 否 | String(32) | 微信支付时必填,商户公众号或小程序的appid |
| open_id | 否 | String(32) | 微信支付时必填,商户公众号或小程序appid下获取的用户openid |
| user_id | 否 | String(32) | 支付宝支付时必填,支付宝的用户userid |
| amount | 是 | int | 支付金额,单位分 |
| out_trade_no | 是 | String(32) | 业务订单号,业务方保证唯一 |
| subject | 是 | String(127) | 商品名或订单简要描述 |
| client_ip | 是 | String(32) | 客户端IP |
| time_start | 否 | String(20) | 订单生成时间,格式为:yyyy-MM-dd HH:mm:ss,不传默认为当前时间 |
| time_expire | 否 | String(20) | 订单失效时间,格式为:yyyy-MM-dd HH:mm:ss,建议:最短失效时间间隔大于1分钟 |
| currency | 否 | String(16) | 货币类型,默认人民币:CNY |
| limit_credit | 否 | int | 是否限制使用信用卡,1为限制,0或不传为不限制,默认为0 |
| attach | 否 | String(127) | 附加信息,会跟订单信息一起原样返回 |
| goods_tag | 否 | String(32) | 商品标记,优惠券或单品营销使用 |
| goods_details | 否 | Json | 商品详情,Json结构,做单品优惠时传入。goods_details结构 |
| is_miniapp | 否 | String(1) | 是否来自小程序,app_id为小程序时传"Y",默认为"N"(公众号jsapi支付) |
| notify_url | 否 | String(256) | 支付回调地址URL,不带参数 |
content请求示例
微信公众号支付
{
"payment": "WXPAY",
"amount": 2000,
"out_trade_no": "20241212180000001",
"subject": "云商品",
"client_ip": "61.144.11.222",
"notify_url": "http://p.abc.com/callback/20241212180000001/",
"app_id": "wxf636efh567hg4356",
"open_id": "o-MYE42l80oelYMDE34nYD456Xoy",
"goods_tag": "item_water12"
}
微信小程序支付
{
"payment": "WXPAY",
"amount": 2000,
"out_trade_no": "20241212193056001",
"subject": "小程序商品A",
"client_ip": "61.144.11.222",
"notify_url": "http://p.abc.com/callback/20241212193056001/",
"app_id": "wxf636efh567hg4356",
"open_id": "o-MYE42l80oelYMDE34nYD456Xoy",
"is_miniapp": "Y"
}
支付宝JS支付
{
"payment": "ALIPAY",
"amount": 2000,
"out_trade_no": "20241212194089001",
"subject": "ZFB商品B",
"client_ip": "61.144.11.222",
"notify_url": "http://p.abc.com/callback/20241212194089001/",
"user_id": "InfaYerGz4iC0rnrtOXeiUAr"
}
响应参数
| 名称 | 必填 | 类型 | 说明 |
|---|---|---|---|
| pay_no | 是 | String | 聚合支付订单号,'600'开头 |
| payment | 是 | String | 支付方式,WXPAY为微信,ALIPAY为支付宝,UNIONPAY为银联云闪付 |
| amount | 是 | int | 交易金额,单位:分 |
| status | 是 | int | 支付状态。参见支付状态值枚举 |
| pay_time | 否 | String | 支付时间,格式"yyyy-MM-dd HH:mm:ss" |
| wx_js_info | 否 | Json | payment为微信时返回的支付信息,可原封不动返回前端唤起支付控件 |
| ali_js_info | 否 | Json | payment为支付宝时返回的支付信息,可原封不动返回前端唤起支付控件 |
js_info支付信息说明
当支付方式为WXPAY时,返回wx_js_info:
| 名称 | 必填 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | String | 发起微信支付的AppId |
| timestamp | 是 | String | 时间戳 |
| nonce_str | 是 | String | 随机字符串 |
| package | 是 | String | "prepay_id=xxxx" |
| sign_type | 是 | String | 签名类型 |
| pay_sign | 是 | String | 支付签名 |
| prepay_id | 否 | String | 用于package,非必传 |
当支付方式为ALIPAY时,返回ali_js_info:
| 名称 | 类型 | 说明 |
|---|---|---|
| trade_no | String | 唤起支付宝钱包的交易号 |
当支付方式为UNIONPAY时,
- 暂无返回
result返回值示例
列举各场景下的必传参数,可作参考。
payment为WXPAY
{
"pay_no": "60086150032145781",
"payment": "WXPAY",
"amount": 2000,
"status": 101,
"pay_time": "2024-12-12 18:00:02",
"wx_js_info": {
"app_id": "wxf636efh567hg4356",
"timestamp": "1733997603",
"nonce_str": "p2zioujhlwe823sz",
"package": "prepay_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"sign_type": "MD5",
"pay_sign": "892015b7ce6746cf9f2ea26acaff68f9"
}
}
payment为ALIPAY
{
"pay_no": "60086150032145781",
"payment": "ALIPAY",
"amount": 2000,
"status": 101,
"pay_time": "2024-12-12 18:00:02",
"ali_js_info": {
"trade_no": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}