# JSAPI支付

# H5/小程序下单

# 请求方法:

POST(application/json)

# 请求地址

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

# 请求参数

参数名 类型 是否必填 描述
access_token string Y 应用有效凭证,参考文档
sub_appid string Y 发起支付商户的sub_appid,获取方式参考文档
user_id string Y 用户 ID(card_number) 参考 用户信息查询
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"
order_type int N 下单类型:0 为公众号 H5 下单; 1 为小程序下单,默认值 0

# 响应参数

参数名 类型 必有 描述
code int Y 业务状态。0 为成功 其他为失败
message string Y 业务提示
data pay_info string Y 支付参数。将此参数透传给支付 SDK 发起支付
  • 响应数据示例
{
    "code": 0,
    "data": {
        "pay_info": ""
    },
    "message": "下单成功"
}

# 调起支付

描述:移动端H5或小程序将/mppay接口返回的payinfo透传给支付SDK,拉起支付

# 下载SDK

# 引入SDK

<script src="openMidas.js"></script>    // 公众号H5引入方式

require('openMidas.js');                // 小程序引入方式

# 支付初始化

OpenMidas.init(env)
  • 参数说明
参数名 参数类型 必填 参数说明
env string 环境。release 表示正式环境,test 表示测试环境

# 调起支付框

OpenMidas.pay(payInfo, callback, appMetaData);
  • 参数说明
参数名 参数类型 必填 参数说明
payInfo string 支付参数。 请求/mppay接口成功后返回的pay_info数据
callback function 支付完成后执行的回调函数。参见回调参数说明
appMetaData string 扩展字段,key=value 形式,最大长度 255。透传给回调函数的参数

# 公众号 H5 支付示例:

var payInfo = mppay_res.data.pay_info;      // 请求mppay接口返回的数据
var appMetaData = 'app=test&version=1.1';   // 自定义回调数据

// 设置支付配置
window.OpenMidasConfig = {
    apiCommonConf: {
        version: "weixiao"
    },
    cgiDomain: {
        release: "midas.weixiao.qq.com/api",  // 私有化参数联系微卡客服进行获取
    },
    webDomain: "https://midas.weixiao.qq.com/h5",// 私有化参数联系微卡客服进行获取
    sandboxWebDomain: "https://midas.weixiao.qq.com/h5"// 私有化参数联系微卡客服进行获取
}

OpenMidas.init('release');
OpenMidas.pay(payInfo, function(resultCode, innerCode, resultMsg, appMetaData){
    console.log(resultCode);    // 支付响应状态码
    console.log(innerCode);     // 支付响应内部错误码
    console.log(resultMsg);     // 支付响应说明
    console.log(appMetaData);   // 自定义回调数据

    // todo:处理业务逻辑
}, appMetaData);

# 小程序支付示例

var OpenMidas = require("openMidas.js"); // 引入小程序目录下的SDK文件

// 设置支付配置
wx['OpenMidasConfig'] = {
    apiCommonConf: {
        version: "weixiao"
    },
    cgiDomain: {
        release: "midas.weixiao.qq.com/api",  // 私有化参数联系微卡客服进行获取
    },
    webDomain: "https://midas.weixiao.qq.com/h5",// 私有化参数联系微卡客服进行获取
    sandboxWebDomain: "https://midas.weixiao.qq.com/h5"// 私有化参数联系微卡客服进行获取
}

var payInfo = mppay_res.data.pay_info; // 请求mppay接口返回的数据
var appMetaData = "app=test&version=1.1"; // 自定义回调数据

OpenMidas.init("release");
OpenMidas.pay(
  payInfo,
  function(resultCode, innerCode, resultMsg, appMetaData) {
    console.log(resultCode); // 支付响应状态码
    console.log(innerCode); // 支付响应内部错误码
    console.log(resultMsg); // 支付响应说明
    console.log(appMetaData); // 自定义回调数据

    // todo:处理业务逻辑
  },
  appMetaData
);

# callback 参数

属性 类型 取值
resultCode int 0 支付成功 非0 支付失败
innerCode string 系统内部错误码,不直接展示给用户
resultMsg string 错误信息,不直接展示给用户
appMetaData string 自定义回调数据,透传给回调函数

# 流程图

JSAPI支付流程图

# 注意事项

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