midas.pay

本接口应在服务器端调用,详细说明参见服务端API

本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载),wx-server-sdk >= 0.4.0

扣除游戏币。开通了虚拟支付的小游戏,可以通过本接口扣除某个用户的游戏币。 由于可能存在接口调用超时或返回系统失败,但是游戏币实际已经扣除的情况,所以当该接口返回系统失败时,可以用相同的bill_no再次调用本接口,直到返回非系统失败为止,不会重复扣款,也可以调用取消支付接口取消本次扣款。

调用方式:

HTTPS 调用

正式环境

POST https://api.weixin.qq.com/cgi-bin/midas/pay?access_token=ACCESS_TOKEN

沙箱环境

POST https://api.weixin.qq.com/cgi-bin/midas/sandbox/pay?access_token=ACCESS_TOKEN

请求参数

属性 类型 默认值 必填 说明
openid string 用户唯一标识符
appid string 小程序 appId
offer_id string 米大师分配的offer_id
ts number UNIX 时间戳,单位是秒
zone_id string 游戏服务器大区id,游戏不分大区则默认zoneId ="1",String类型。如过应用选择支持角色,则角色ID接在分区ID号后用"_"连接。
pf string 平台 安卓:android
user_ip string 用户外网 IP
amt number 扣除游戏币数量,不能为 0
bill_no string 订单号,业务需要保证全局唯一;相同的订单号不会重复扣款。长度不超过63,只能是数字、大小写字母_-
pay_item string 道具名称
app_remark string 备注。会写到账户流水
sig string 以上所有参数(含可选最多11个)+uri+米大师密钥,用 HMAC-SHA256签名,详见 virtual-payment#签名计算算法
access_token / cloudbase_access_token string 接口调用凭证

返回值

Object

返回的 JSON 数据包

属性 类型 说明
errcode number 错误码
errmsg string 错误信息
bill_no string 订单号,有效期是 48 小时
balance number 预扣后的余额
used_gen_amt number 本次扣的赠送币的金额

errcode 的合法值

说明 最低版本
0 请求成功
-1 系统繁忙,此时请开发者稍候再试
90010 用户未登录或登录态已过期
90011 sig签名错误
90012 订单已存在
90013 余额不足
90017 没有调用接口的权限
90018 参数错误

POST 数据格式:JSON

{
    "openid":"odkx20ENSNa2w5y3g_qOkOvBNM1g",
    "appid":"wx1234567",
    "offer_id":"12345678",
    "ts":1507530737,
    "zone_id":"1",
    "pf":"android",
    "amt":123,
    "bill_no":"BillNo_123",
    "sig":"f705c7351830125282ffc6d3c22c81db19b50a748f60f7c8f267e59152941d83",
}

云调用

云调用是微信云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 wx-server-sdk 使用。

正式环境

openapi.midas.pay

沙箱环境

openapi.midas.paySandbox

需在 config.json 中配置 midas.pay API 的权限,详情

请求参数

属性 类型 默认值 必填 说明
openid string 用户唯一标识符
appid string 小程序 appId
offerId string 米大师分配的offer_id
ts number UNIX 时间戳,单位是秒
zoneId string 游戏服务器大区id,游戏不分大区则默认zoneId ="1",String类型。如过应用选择支持角色,则角色ID接在分区ID号后用"_"连接。
pf string 平台 安卓:android
userIp string 用户外网 IP
amt number 扣除游戏币数量,不能为 0
billNo string 订单号,业务需要保证全局唯一;相同的订单号不会重复扣款。长度不超过63,只能是数字、大小写字母_-
payItem string 道具名称
appRemark string 备注。会写到账户流水
sig object 签名,可使用 cloud.signature 方法计算

返回值

Object

返回的 JSON 数据包

属性 类型 说明
errCode number 错误码
errMsg string 错误信息
billNo string 订单号,有效期是 48 小时
balance number 预扣后的余额
usedGenAmt number 本次扣的赠送币的金额

errCode 的合法值

说明 最低版本
0 成功

异常

Object

抛出的异常

属性 类型 说明
errCode number 错误码
errMsg string 错误信息

errCode 的合法值

说明 最低版本
-1 系统繁忙,此时请开发者稍候再试
90010 用户未登录或登录态已过期
90011 sig签名错误
90012 订单已存在
90013 余额不足
90017 没有调用接口的权限
90018 参数错误

SDK 调用示例

// cloud = require('wx-server-sdk')
// ...
// 方法返回 Promise
cloud.openapi.midas.pay({
 openid: OPENID,
 appid: APPID,
 offerId: 111111111111,
 ts: parseInt(+new Date / 1000),
 zoneId: '1',
 pf: 'android',
 amt: 1,
 billNo: 'bill_abc_1',
 sig: cloud.signature({
  type: 'midas',
  params: ['openid','appid','offerId','ts','zoneId','pf', 'amt', 'billNo'],
  secret: 'xxxxxxxxxxxx',
 })
})