跳到主要内容

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: "1450015065",
region: "hk",
buysdk_mode: 1,
sdkUrl: 'https://sandbox.midasbuy.com/payment-sdk'
});
参数是否必填位置类型格式说明
appidYesparamsStringstring.min_len: 1应用 ID
regionYesparamsStringstring.len: 2国家代码,目前 midasbuy 开放站点列表参考 [region select]
buysdk_modeYesparamsNumber固定为1
sdkUrlYesparamsNumber用于区分沙箱、生产环境

3.2. 调起渠道支付与事件回调

调起渠道支付弹窗:

const reqParams = {
params: {
app_id: '1460000764',
game_openid: '123456789',
role_id: '123',
product_id: 'productId',
region: 'HK'
},
extra: {},
} as any;
pay?.emit('checkout', reqParams);

参数

参数是否必填位置类型格式说明
game_openidYesparamsStringstring.min_len: 1游戏用户 ID
role_idYesparamsStringstring.min_len: 1角色 ID
product_idYesparamsStringstring.min_len: 1物品ID
regionYesparamsStringstring.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: "1450015065",
region: "hk",
buysdk_mode: 1,
sdkUrl: 'https://sandbox.midasbuy.com/payment-sdk'
});
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);
console.log(`支付成功${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: "1450015065",
game_openid: "34131737143805224",
role_id: "5557607661",
product_id: "60_coins_vip",
region: "hk",
is_vip_product: true,
},
extra: {},
};
pay?.emit('checkout', reqParams);
pay?.emit('show');
}
</script>
</body>

</html>