Getting Started
Prerequisites
Before initializing the SDK, make sure you have included the SDK script in your HTML page. See SDK Integration for details.
Initialization midas.minigame(options)
const minigameApi = midas.minigame({
// Basic Configuration
appid: '1460000904',
region: 'us',
language: 'en',
sandbox: 1,
shopcode: 'xxxinapp',
// Menu Module Configuration, optional
menu: {
isWithPcHeader: true,
isLandscapeMode: false // Portrait mode (navigation bar), default
},
// Payment Module Configuration, optional
payment: {
openid: '1018553529511732', // optional, to reduce bad debt rate
charac_name: 'Player1', // optional, to reduce bad debt rate
},
// Login Module Configuration, optional
login: {
debug: true,
timeout: 30000
}
});
Parameter Description
| Parameter | Type | Required | Description |
|---|---|---|---|
| appid | string | Yes | Application ID |
| region | string | Yes | Region code, 2 characters |
| language | string | No | Language code, default 'en' |
| sandbox | number | No | Environment: 0-production, 1-sandbox, 2-test, default 0 |
| shopcode | string | No | Shop code |
| menu | MenuConfig | No | Menu module configuration |
| payment | PaymentConfig | No | Payment module configuration |
| login | LoginConfig | No | Login module configuration |
MenuConfig Type
interface MenuConfig {
isWithPcHeader?: boolean; // Whether to include top header on PC
isLandscapeMode?: boolean; // Enable landscape mode (bubble style menu), default false
}
PaymentConfig Type
interface PaymentConfig {
openid?: string; // User openid
charac_name?: string; // Character name
}
LoginConfig Type
interface LoginConfig {
debug?: boolean; // Debug mode
timeout?: number; // Request timeout (milliseconds)
}
Utility Methods
Get Module Instance minigameApi.getModule(module)
Get direct access to specific module instances for advanced usage.
// Get menu module instance
const menuModule = minigameApi.getModule('menu');
if (menuModule) {
// Direct access to menu module methods
menuModule.show({ gradually: false });
}
// Get payment module instance
const paymentModule = minigameApi.getModule('payment');
if (paymentModule) {
// Direct access to payment module methods
paymentModule.emit('checkout', params);
}
// Get login module instance
const loginModule = minigameApi.getModule('login');
if (loginModule) {
// Direct access to login module methods
const token = await minigameApi.getLoginToken?.();
}
Parameter Description
| Parameter | Type | Required | Description |
|---|---|---|---|
| module | string | Yes | Module name: 'menu', 'payment', or 'login' |
Return Value
Returns the corresponding module instance, or null if the module is not loaded or invalid.
Hide All Modules minigameApi.hideAll()
// Hide all modules (menu, payment, etc.)
minigameApi.hideAll();
Complete Example
// Initialize 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
}
});
// Listen to events
minigameApi.on('sdk:loaded', (modules) => {
console.log('SDK loaded successfully:', modules);
// Get module instances for direct access
const menuModule = minigameApi.getModule('menu');
const paymentModule = minigameApi.getModule('payment');
const loginModule = minigameApi.getModule('login');
console.log('Menu module:', menuModule);
console.log('Payment module:', paymentModule);
console.log('Login module:', loginModule);
});
minigameApi.on('payment:success', (data) => {
console.log('Payment successful:', data);
// Hide payment page
minigameApi.hidePayment();
});
minigameApi.on('login:success', (data) => {
console.log('Login successful:', data);
// Show game menu after login
minigameApi.showMenu({
gradually: true
});
});
minigameApi.on('login:statusChanged', (status) => {
console.log('Login status changed:', status);
});
minigameApi.on('products:success', (data) => {
console.log('Products loaded successfully:', data);
data.products.forEach(product => {
console.log(`Product: ${product.name}, Price: ${product.price_info.display_price}`);
});
});
minigameApi.on('products:failed', (error) => {
console.log('Failed to load products:', error);
});
// User login - Callback style
minigameApi.login({
success: function(result) {
console.log('Login successful:', result);
},
fail: function(error) {
console.log('Login failed:', error);
}
});
// User login - Promise style
minigameApi.login()
.then(result => {
console.log('Login successful:', result);
// Show game menu after successful login
return minigameApi.showMenu({ gradually: true });
})
.catch(error => {
console.log('Login failed:', error);
});
// Show game menu
minigameApi.showMenu({
gradually: true
});
// Show payment page - Promise style (recommended)
minigameApi.showPayment({
params: {
game_openid: '1018553529511732',
role_id: '1555629938',
product_id: 'coins_01-midasbuy',
server_id: 'server_001'
},
extra: {
hideResultPage: true
}
})
.then(result => {
console.log('Payment successful:', result);
// result contains: { order_no, openid, order_no_hash }
})
.catch(error => {
console.log('Payment error:', error.type, error.message);
// Handle specific error types
if (error.type === 'queryChannelsFailed') {
console.log('Please check your network connection');
} else if (error.type === 'hide') {
console.log('Payment was cancelled by user');
}
});
// Get products data
minigameApi.getProductsData({
game_openid: '1018553529511732',
role_id: '1555629938',
server_id: 'server_001'
})
.then(result => {
console.log('Products data loaded:', result);
result.products.forEach(product => {
console.log(
`Product: ${product.name} - ${product.price_info.display_price} (${product.quantity}+${product.bonus.virtual_currency_quantity} UC)`
);
});
})
.catch(error => {
console.log('Failed to load products:', error);
});