# JSAPI 网页支付

# 说明

  • 支持微信、支付宝
  • 指微信公众号支付,支付宝的服务窗或生活号支付
  • 微信则先通过  获取 openid (opens new window)  接口获得用户 openid
  • 支付宝则先通过  获取 buyerid (opens new window)  接口获得用户 buyer_id
  • 然后请求 jsapi 接口,获得支付参数,在网页用 WeixinJSBridge 代码调起支付(微信)
  • 然后请求 jsapi 接口,获得支付参数,在网页用 AlipayJSBridge 代码调起支付(支付宝)

# 接口地址

https://open.weidoufu.com/pay/jsapi (opens new window)

请求方式:POST

# 接口参数

字段名称 字段类型 必填参数 说明 (AccessKey/SecretKey)应用密钥
access_key string(32) 应用密钥的 AK,即是 AccessKey
body string(32) 商品名称 例如:QQ 会员充值
out_order_no string(32) 商户订单号(字母、数字,至少 18 位长度)
pay_type int(2) 支付类型 1-微信;2-支付宝;3-云闪付
total_fee int(9) 价格单位:分
openid string(32) 微信必传,微信 openid,具体获取方法点击查看 (opens new window)
buyer_id string(32) 支付宝必传,支付宝 buyer_id,具体获取方法点击查看 (opens new window)
notify_url string(128) 你平台的回调地址 例如:http://www.your.com/notify_url
attach string(128) 附加信息,回调时原样传回 例如:{test:'test1_params'}
ledger string(512) 分账接收方,jsonArray 格式 例如:'[{"amount":1,"sub_mch_no":"xxxxxxxx"}]'
sign string 签名结果(大写),详见 签名算法 (opens new window)

特殊说明:pay_type 为 1 时,openid 必传;pay_type 为 2 时,buyer_id 必传;

openid(微信) 和 buyer_id(支付宝) 二选一

# 返回参数(微信)

返回为 json 格式

名称 字段类型 必有 说明
code int 1:成功   0:失败
message string 返回描述信息
mch_trade_no string 平台返回的订单号
out_order_no string 商户订单号(字母、数字)
app_id string jsapi 支付参数
timestamp string jsapi 支付参数
nonce_str string jsapi 支付参数
package string jsapi 支付参数
sign_type string jsapi 支付参数
pay_sign string jsapi 支付参数

成功返回:

{
    code: 1,
    message: "成功",
    data: {
        mch_trade_no: '202105135513716648486662',
        out_order_no: '180901620895069445',
        jsapi: {
            app_id: 'wx369ab4160391bvbgg',
            timestamp: '1620895076',
            nonce_str: '82aafec92844bd7b7575e5d642911ac9',
            package: 'prepay_id=wx1316375652779615245693f173dedb0000',
            sign_type: 'MD5',
            pay_sign: 'E1BDB03ECDC44F48CE1D4D353819318A'
        }
    }
}

# 返回参数(支付宝)

返回为 json 格式

名称 字段类型 必有 说明
code int(1) 1:成功   0:失败
message string 返回描述信息
mch_trade_no string 平台返回的订单号
out_order_no string 商户订单号(字母、数字)
trade_no string jsapi 支付参数

成功返回:

{
    code: 1,
    message: "成功",
    data: {
        mch_trade_no: '202105135513716648486662',
        out_order_no: '180901620895069445',
        jsapi: {
            trade_no: '20211127220461494775747063371',
        }
    }
}

失败返回:

{
    code: 0,
    message: "签名错误",
    data: {
        mch_trade_no: '202105135513716100622151',
        out_order_no: '1809016208199613140',
        jsapi: ''
    }
}

# H5 demo(微信)

前端页面根据返回赋值调起支付 JS

function onBridgeReady(payData) {
  WeixinJSBridge.invoke(
    "getBrandWCPayRequest",
    {
      appId: payData.app_id, //公众号名称,由商户传入
      timeStamp: payData.timestamp, //时间戳,自1970年以来的秒数
      nonceStr: payData.nonce_str, //随机串
      package: payData.package,
      signType: payData.sign_type, //微信签名方式
      paySign: payData.pay_sign, //微信签名
    },
    function (res) {
      // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg 将在用户支付成功后返回 ok,但并不保证它绝对可靠。
      if (res.err_msg == "get_brand_wcpay_request:ok") {
        // 现在已经不能在这里定义跳转,具体跳转请看下面
      }
    }
  );
}

if (typeof WeixinJSBridge === "undefined") {
  if (document.addEventListener) {
    document.addEventListener("WeixinJSBridgeReady", onBridgeReady, false);
  } else if (document.attachEvent) {
    document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
    document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
  }
} else {
  onBridgeReady();
}

# 付款完成后跳转

请到管理后台自定义跳转地址,没设置的,默认付款完后灰自动关闭窗口

后台设置链接:https://console.weidoufu.com/merchant/jump (opens new window)

# 支付跳转示例:

填写的跳转链接

https://pay.baidu.com/wx/success

则付款完成后,将要跳转页面链接如下

https://pay.baidu.com/wx/success/?mch_trade_no=202003013506162516&out_order_no=T138446641210111

即系提供两个参数供后续操作(可做支付完成后页面展示等)

# 平台订单号
mch_trade_no

# 你的订单号
out_order_no

# 示例下载

https://doc.weidoufu.com/down/jsapi.html (opens new window)

最后更新于: 1/11/2024, 10:57:30 PM