Midasbuy Payment SDK
1. SDK 描述
通过传入玩家的 “人”、“物品”的信息,拉起 midasbuy 物品可用的支付渠道。
2. 引入 SDK
在 HTML 文件中引入 script:
<script src="https://cdn.midasbuy.com/no-sw-common-sdk/static/js/commonSdkApi.js"></script>
3. API 说明
3.1. 初始化
初始化 pay 实例:
const { pay } = window.midasbuyCommonSdk;
pay?.preload({
appid: "1460000904",
region: "id",
buysdk_mode: 1,
// sdkUrl: 'https://sandbox.midasbuy.com/payment-sdk', // sandbox
sdkUrl: 'https://www.midasbuy.com/payment-sdk',
openid: "1018553529511732",
charac_name: 'xxx',
shopcode: 'xxx',
forceReportRootTag: '1'
});
| 参数 | 是否必填 | 位置 | 类型 | 格式 | 说明 |
|---|---|---|---|---|---|
| appid | Yes | params | String | string.min_len: 1 | 应用 ID |
| region | Yes | params | String | string.len: 2 | 国家代码,目前 midasbuy 开放站点列表参考 [region select] |
| buysdk_mode | Yes | params | Number | 固定为1 | |
| sdkUrl | Yes | params | String | 用于区分沙箱、生产环境 | |
| openid | Yes | params | String | 游戏用户 ID | |
| charac_name | Yes | params | String | 昵称 | |
| shopcode | Yes | params | String | 商店码 | |
| forceReportRootTag | Yes | params | String | 上报模式开关 |
3.2. 调起渠道支付与事件回调
调起渠道支付弹窗:
const reqParams = {
params: {
app_id: "1460000904",
game_openid: "1018553529511732",
role_id: "1555629938",
product_id: "coins_01-midasbuy",
region: "id",
shop_code: 'xxx',
},
extra: {
hideResultPage: true
},
};
pay?.emit('checkout', reqParams);
参数
| 参数 | 是否必填 | 位置 | 类型 | 格式 | 说明 |
|---|---|---|---|---|---|
| app_id | Yes | params | String | string.min_len: 1 | 游戏用户 ID |
| game_openid | Yes | params | String | string.min_len: 1 | 游戏用户 ID |
| role_id | Yes | params | String | string.min_len: 1 | 角色 ID |
| product_id | Yes | params | String | string.min_len: 1 | 物品ID |
| region | Yes | params | String | string.min_len: 1 | 国家地区,影响物品信息的语言 |
| shop_code | Yes | params | String | string.min_len: 1 | 商店码 |
| server_id | No | params | String | string.min_len: 1 | 分区码 |
extra参数
| 参数 | 是否必填 | 位置 | 类型 | 格式 | 说明 |
|---|---|---|---|---|---|
| hideResultPage | NO | extra | String | string.min_len: 1 | 是否隐藏结果页 |
3.2.1. 支付成功回调
成功示例:
pay.on('paymentSuccess', (data) => {
console.log('data', data);
console.log(`支付成功${JSON.stringify(data)}`);
数据实例:
{
"order_no":"SG250225BHGE8KPUZKXDFE",
"openid":"34131737143805224",
"order_no_hash":"ca171bec7737d557d54f15706404bddc129bd2f09749f76b5dfae055a44b11e9"
}
| 参数 | 说明 |
|---|---|
| order_no | 订单号 |
| openid | 游戏用户 ID |
| order_no_hash | 订单号哈希值 |
3.2.2. 其余事件枚举
| 参数 | 说明 |
|---|---|
| hide | 支付弹窗隐藏 |
| queryChannelsFailed | 初始化支付弹窗失败,通常是查询物品失败或查询渠道失败 |
| paymentFailed | 初始化支付弹窗成功,用户在后续的支付中未成功 |
4. 完整沙箱demo
<html>
<head>
<title>payment sdk demo</title>
<script src="https://cdn.midasbuy.com/no-sw-common-sdk/static/js/commonSdkApi.js"></script>
</head>
<body>
<button onclick="clickToPay()">pay</button>
<script>
const { pay } = window.midasbuyCommonSdk;
pay?.preload({
appid: "1460000904",
region: "id",
buysdk_mode: 1,
// sdkUrl: 'https://sandbox.midasbuy.com/payment-sdk', // sandbox
sdkUrl: 'https://www.midasbuy.com/payment-sdk',
openid: "1018553529511732",
charac_name: 'xxx', //用户昵称
shopcode: 'xxx', //写死
forceReportRootTag: '1' //写死
});
try {
pay?.on('loaded', () => {
console.log('已经加载PaySDK');
this.channelWraperLoaded = true;
});
} catch (error) {
console.log('error', error);
throw error;
}
function clickToPay() {
console.log('正在加载支付渠道...');
pay?.off('hide');
pay?.off('queryChannelsFailed');
pay?.off('paymentSuccess');
pay?.off('paymentFailed');
pay?.off('handlerPlayerId');
pay?.off('drawerFilterPop');
pay?.on('hide', () => {
pay.emit('hide');
}).on('queryChannelsFailed', (msg) => {
console.log(`查询渠道失败:${JSON.stringify(msg)}`);
})?.on('paymentSuccess', (data) => {
console.log('data', data);
pay.emit('hide');
console.log(`支付成功${JSON.stringify(data)}`);
alert(`支付成功${JSON.stringify(data)}`);
})?.on('paymentFailed', (error) => {
console.log('error', error);
console.log(`支付失败${JSON.stringify(error)}`);
})?.on('show', () => {
pay.emit('show');
});
const reqParams = {
params: {
app_id: "1460000904",
game_openid: "1018553529511732",
role_id: "1555629938",
product_id: "coins_01-midasbuy",
region: "id",
shop_code: 'xxx',
},
extra: {
hideResultPage: true
},
};
pay?.emit('checkout', reqParams);
pay?.emit('show');
}
</script>
</body>
</html>