Skip to main content

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

ParameterTypeRequiredDescription
appidstringYesApplication ID
regionstringYesRegion code, 2 characters
languagestringNoLanguage code, default 'en'
sandboxnumberNoEnvironment: 0-production, 1-sandbox, 2-test, default 0
shopcodestringNoShop code
menuMenuConfigNoMenu module configuration
paymentPaymentConfigNoPayment module configuration
loginLoginConfigNoLogin module configuration
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

ParameterTypeRequiredDescription
modulestringYesModule 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);
});