# 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 | 自定义回调数据,透传给回调函数 |
# 流程图
# 注意事项
[1] 私有化部署的主体不能使用上面接口地址,需要根据主体私有化部署域名拼上对应的路径,主体私有化网关域名(私有化部署域名+/kong)