跳到主要内容

快速开始

前置条件

在初始化 SDK 之前,请确保已在 HTML 页面中引入 SDK 脚本。详见 SDK集成

初始化 midas.minigame(options)

const minigameApi = midas.minigame({
// 基础配置
appid: '1460000904',
region: 'us',
language: 'en',
sandbox: 1,
shopcode: 'xxxinapp',

// Menu 模块配置, 可选
menu: {
isWithPcHeader: true,
isLandscapeMode: false // 竖屏模式(导航条),默认值
},

// Payment 模块配置, 可选
payment: {
openid: '1018553529511732', // 减少坏账率,可不传
charac_name: 'Player1', // 减少坏账率,可不传
},

// Login 模块配置, 可选
login: {
debug: true,
timeout: 30000
}
});

参数说明

参数类型必填描述
appidstring应用 ID
regionstring地区代码,2位字符
languagestring语言代码,默认 'en'
sandboxnumber环境:0-生产,1-沙箱,2-测试,默认 0
shopcodestring商店代码
menuMenuConfigMenu 模块配置
paymentPaymentConfigPayment 模块配置
loginLoginConfigLogin 模块配置
interface MenuConfig {
isWithPcHeader?: boolean; // PC端是否包含顶部header
isLandscapeMode?: boolean; // 启用横屏模式(气泡样式菜单),默认 false
}

PaymentConfig 类型

interface PaymentConfig {
openid?: string; // 用户 openid
charac_name?: string; // 角色名称
}

LoginConfig 类型

interface LoginConfig {
debug?: boolean; // 调试模式
timeout?: number; // 请求超时时间(毫秒)
}

工具方法

获取模块实例 minigameApi.getModule(module)

获取特定模块实例的直接访问权限,用于高级用法。

// 获取菜单模块实例
const menuModule = minigameApi.getModule('menu');
if (menuModule) {
// 直接访问菜单模块方法
menuModule.show({ gradually: false });
}

// 获取支付模块实例
const paymentModule = minigameApi.getModule('payment');
if (paymentModule) {
// 直接访问支付模块方法
paymentModule.emit('checkout', params);
}

// 获取登录模块实例
const loginModule = minigameApi.getModule('login');
if (loginModule) {
// 直接访问登录模块方法
const isLoggedIn = loginModule.isLoggedIn();
}

参数说明

参数类型必填描述
modulestring模块名称:'menu'、'payment' 或 'login'

返回值

返回对应的模块实例,如果模块未加载或无效则返回 null

隐藏所有模块 minigameApi.hideAll()

// 隐藏所有模块(菜单、支付等)
minigameApi.hideAll();

完整示例

// 初始化 SDK
const minigameApi = midas.minigame({
appid: '1460000904',
region: 'us',
language: 'en',
sandbox: 1,
shopcode: 'xxxinapp',
menu: {
isWithPcHeader: true
},
payment: {
openid: '1018553529511732'
},
login: {
debug: true,
timeout: 30000
}
});

// 监听事件
minigameApi.on('sdk:loaded', (modules) => {
console.log('SDK加载完成:', modules);

// 获取模块实例以便直接访问
const menuModule = minigameApi.getModule('menu');
const paymentModule = minigameApi.getModule('payment');
const loginModule = minigameApi.getModule('login');

console.log('菜单模块:', menuModule);
console.log('支付模块:', paymentModule);
console.log('登录模块:', loginModule);
});

minigameApi.on('payment:success', (data) => {
console.log('支付成功:', data);
// 隐藏支付页面
minigameApi.hidePayment();
});

minigameApi.on('login:success', (data) => {
console.log('登录成功:', data);
// 显示游戏菜单
minigameApi.showMenu({
gradually: true
});
});

minigameApi.on('login:statusChanged', (status) => {
console.log('登录状态变化:', status);
});

minigameApi.on('products:success', (data) => {
console.log('商品数据加载成功:', data);
data.products.forEach(product => {
console.log(`商品: ${product.name}, 价格: ${product.price_info.display_price}`);
});
});

minigameApi.on('products:failed', (error) => {
console.log('商品数据加载失败:', error);
});

// 用户登录 - 回调方式
minigameApi.login({
success: function(result) {
console.log('登录成功:', result);
},
fail: function(error) {
console.log('登录失败:', error);
}
});

// 用户登录 - Promise 方式
minigameApi.login()
.then(result => {
console.log('登录成功:', result);
// 登录成功后显示游戏菜单
return minigameApi.showMenu({ gradually: true });
})
.catch(error => {
console.log('登录失败:', error);
});

// 显示游戏菜单
minigameApi.showMenu({
gradually: true
});

// 显示支付页面 - Promise 方式(推荐)
minigameApi.showPayment({
params: {
game_openid: '1018553529511732',
role_id: '1555629938',
product_id: 'coins_01-midasbuy'
},
extra: {
hideResultPage: true
}
})
.then(result => {
console.log('支付成功:', result);
// result 包含: { order_no, openid, order_no_hash }
})
.catch(error => {
console.log('支付错误:', error.type, error.message);

// 处理特定错误类型
if (error.type === 'queryChannelsFailed') {
console.log('请检查网络连接');
} else if (error.type === 'hide') {
console.log('用户取消了支付');
}
});

// 获取商品数据
minigameApi.getProductsData({
game_openid: '1018553529511732',
role_id: '1555629938',
server_id: 'server_001'
})
.then(result => {
console.log('商品数据加载成功:', result);
result.products.forEach(product => {
console.log(
`商品: ${product.name} - ${product.price_info.display_price} (${product.quantity}+${product.bonus.virtual_currency_quantity} UC)`
);
});
})
.catch(error => {
console.log('商品数据加载失败:', error);
});