Skip to content

sud.requestVirtualPayment ​

发起虚拟支付请求。signData、paySig、signature 三个产物必须全部由 Game SVR 生成,客户端只做原样透传。

参数 ​

Object object ​

属性类型默认值必填说明
signDatastring是Game SVR 构造的签名数据(JSON 字符串),字段见下方 signData 表
paySigstring是支付态签名,算法见支付签名规范
signaturestring是用户态签名,算法见开放数据校验与解密
successfunction否支付成功回调
failfunction否支付失败回调
completefunction否接口结束回调,成功、取消或失败均执行

signData 的字段 ​

字段类型默认值必填说明
modestring是goods 表示道具直购,coin 表示游戏币购买
envnumber是0 正式环境,1 测试环境
productIdstring特殊道具直购场景必填
unitPricenumber是商品单价,单位为分(道具直购场景必填)
quantitynumber是购买游戏币数量,必须属于产品配置的固定档位
currencystring是币种,当前仅支持 CNY
outTradeNostring是业务订单号,由 Game SVR 生成,须全局唯一
attachstring否业务透传数据,发货回调时原样返回

回调参数 ​

success ​

属性类型说明
sudTradeNostringSUD 业务订单号

fail ​

属性类型说明
errCodenumber错误码
errMsgstring错误信息

complete 不携带参数,在 success 或 fail 之后调用,单次请求只执行一次。

注意事项 ​

  • 客户端不得参与 signData 的拼装或签名计算,也不得接触 pay_sign_key 与 session_key。三个产物由 Game SVR 下发后原样传入本接口。
  • signData 必须原格式传递(包括其中的空格与换行)。严禁先签名、再把 JSON 反序列化后重新序列化,任何重新序列化都可能改变空格、键顺序或转义形式而导致验签失败。
  • success 回调只表示客户端支付流程结束,不代表已发货。 严禁依据 success 直接向玩家发放资产。发货必须以 Game SVR 收到的服务端回调为准,见虚拟支付配置 - 道具直购第 5 节。
  • 同一笔订单不要并发发起多次支付。上一笔尚未确认到账时应先阻断新的下单请求。
  • complete 在成功、用户取消、失败三种情况下都会执行,不要把 complete 当作成功信号。

示例代码 ​

javascript
// signData / paySig / signature 均来自 Game SVR 的下单接口,客户端不要自行构造
sud.requestVirtualPayment({
    signData: orderFromGameServer.signData,
    paySig: orderFromGameServer.paySig,
    signature: orderFromGameServer.signature,
    success: (res) => {
        // 仅表示客户端支付流程结束,发货以服务端回调为准
        console.log('客户端支付流程结束', res.sudTradeNo);
    },
    fail: (err) => {
        console.error('支付失败或已取消', err.errCode, err.errMsg);
    },
    complete: () => {
        console.log('支付调用结束');
    },
});