# 支付
小米小游戏提供虚拟充值的能力,用户可以在游戏内下单,进行游戏内道具的购买。本文主要对游戏内的支付能力进行简单概述说明。
# 准备事项
# 确认服务端接口域名
确认、并在初始化SDK时配置相应发行主体下的服务端支付服务接口域名,详见前文《准备工作 > 添加安全域名》介绍。
# 开通虚拟支付
暂无说明!
# 游戏道具价格设置
暂无说明!
# 配置支付回调接口
游戏服务器需按照《服务端对接 > 登录支付 > 支付回调》文档要求,向相关运营人员提供支付回调接口,并由运营人员配置至SDK开放平台后台,用于在用户支付成功后通知游戏发放相应购买商品!
# 接口说明
用于游戏内发起支付,仅在登录成功后可用。
sdkInstance.pay(options);
最低基础库版本要求
当用户客户端基础库版本过低时,调用 sdkInstance.pay(options)
接口将中断用户当前操作并弹出升级提示,不会报错!
# 参数说明
参数说明如下表所示:
选项 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
options | object | 是 | -- | 支付参数 |
options.accountId | number | 否 | -- | 用户账号ID,默认使用 sdkInstance.userInfo.accountId 作为缺省值 |
options.accountName | string | 否 | -- | 用户账号名称,默认使用 sdkInstance.userInfo.accountName 作为缺省值 |
options.areaId | string / number | 否 | 1 | 游戏大区ID,若游戏无大区概念,可不填,默认值为 1 ,表示初始大区编号 |
options.roleId | string / number | 否 | 同 accountId | 角色ID,若游戏无角色概念,可不填,默认值同 accountId 账号ID |
options.itemId | string | 是 | -- | 商品ID |
options.itemName | string | 是 | -- | 商品名称 |
options.itemNum | number | 否 | 1 | 商品数量,一般固定传 1 |
options.itemPrice | number | 是 | -- | 商品单价,单位为分!!! |
options.currency | string | 否 | CNY | 货币类型,默认为 CNY |
options.rate | number | 是 | -- | 游戏币兑换汇率,用于计算游戏币购买数量;例如:后台配置为 1:10 ,则 rate 为 10 ,表示1人民币=10游戏币;若无此概念,可填 1 |
options.memo | string | 否 | -- | 透传参数,支付完成后,SDK服务器将通过支付回调原样返回给游戏服务器 |
options.remark | string | 否 | -- | 备用透传参数 |
options.success | function | 否 | -- | 接口调用成功的回调函数(注意,该回调函数被触发时,仅表示当前接口调用成功,并非代表用户实际完成了支付流程,支付且发货成功应以游戏服务端下发通知为准) |
options.fail | function | 否 | -- | 接口调用失败的回调函数 |
options.complete | function | 否 | -- | 接口调用完成的回调函数,成功或失败均会调用 |
# 示例代码
注:示例代码中的参数或选项均为演示数据,仅供参考,谢谢!
// 当用户客户端基础库版本过低时,调用此接口将中断用户当前操作并弹出升级提示,不会报错!
sdkInstance.pay({
accountId: sdkInstance.userInfo.accountId,
accountName: sdkInstance.userInfo.accountName,
areaId: 1001,
roleId: "123456",
itemId: "com.dh.test",
itemName: "60钻石",
itemNum: 1, // 一般固定传1
itemPrice: 600, // 商品单价单位为分,请注意换算!例如此示例中的600表示600分,即6元
currency: "CNY",
rate: 1,
memo: JSON.stringify({ orderId: "123456789123456789" }), // 透传参数,字符串类型;支付完成后,SDK服务器将通过支付回调原样返回给游戏服务器;这里演示透传游戏业务订单号
remark: "", // 备用透传参数
success: function(response) {
// 该回调函数被触发时,仅表示当前接口调用成功,并非代表用户实际完成了支付流程,支付且发货成功应以游戏服务端下发通知为准
console.log(response);
},
fail: function(error) {
// 此处返回接口调用失败的错误信息,error.code为cancel时,表示用户主动点击了取消按钮,此时可以不向用户弹出提示
if (error.code == "cancel") {
return;
}
// 此处可向用户弹出接口返回的错误消息或统一弹出“支付失败”
sdkInstance.modal.message(error.message);
},
complete: function(result) {
// do something here...
}
});
# 支付回调
游戏服务器需按照《服务端对接 > 登录支付 > 支付回调》文档要求,向相关运营人员提供支付回调接口,并由运营人员配置至SDK开放平台后台,用于在用户支付成功后通知游戏发放相应购买商品!
注意事项
若有接口方面疑问,请咨询SDK服务端开发:陈肖军!