# JSAPI支付【推荐】

# H5/小程序下单

# 请求方法:

POST(application/json)

# 请求地址

https://open.wecard.qq.com/cgi-bin/pay/app/wxpay?access_token=access_token[1]

# 请求参数

参数名 类型 是否必填 描述
access_token string Y 应用有效凭证,参考文档
sub_appid string Y 发起支付商户的sub_appid,获取方式参考文档
user_id string N 用户ID
openid string N 微信用户openid。openid和sub_openid必传其一。这里的参数值为服务商公众号下的openid,参考用户信息查询
sub_openid string N 微信用户sub_openid。openid和sub_openid必传其一。这里的参数值为微卡主公众号下的openid或者小程序openid,参考用户信息查询
order_id string Y 订单号(长度需大于16位)
amount int Y 支付金额。单位:分
order_time int N 下单时间(Unix 时间戳)
product_id string N 商品 id
product_name string N 商品名称
product_detail string N 商品描述
callback_url string N 支付成功后的回调通知地址(http/https 开头的可外网访问的地址,用于接收支付异步回调)
metadata string N 附加数据。支付成功后透传给回调地址的数据。例如:"room=501&sex=male"

openid 和 sub_openid 必须传至少其中一个。请在 product_detail 参数中添加支付备注,例如:5 舍 501 室缴电费。

# 响应参数

参数名 类型 必有 描述
code int Y 业务状态。0 为成功 其他为失败
message string Y 业务提示
data order_id string Y 订单号
pay_params appId string Y 主公众号appid
timeStamp string Y 时间戳
nonceStr string Y 随即串
package string Y 支付参数
signType string Y 签名类型
paySign string Y 签名参数
  • 响应数据示例
{
  "code": 0,
  "data": {
    "order_id": "abc123",
    "pay_params": {
      "appId": "wx873fad3359987c1c",
      "timeStamp": "1576734280",
      "nonceStr": "a5192a5f9c6807e35a52b672f26b074b",
      "package": "prepay_id=wx191344402366069301e364f01452325900",
      "signType": "MD5",
      "paySign": "9C7FDA21DE043644B6B20C817E8AC18B"
    }
  },
  "message": "下单成功"
}

# 调起支付

参考微信支付官方文档:

H5 页面内调起支付 (opens new window)

小程序内调起支付 (opens new window)

# 流程图

JSAPI支付流程图

# 注意事项

[1] 私有化部署的主体不能使用上面接口地址,需要根据主体私有化部署域名拼上对应的路径,主体私有化网关域名(私有化部署域名+/kong)