跳到主要内容

类型定义

declare namespace midas {
interface MinigameAPI {
showMenu(options?: MenuShowOptions): Promise<ShowResult>;
hideMenu(options?: MenuHideOptions): void;
showPayment(options: PaymentShowOptions): Promise<PaymentResult>;
hidePayment(): void;
hideAll(): void;
login(options: LoginOptions): Promise<LoginResult>;
getLoginStatus(): boolean;
logout(): void;
getProductsData(params: ProductsParams): Promise<ProductsResult>;
on(event: string, callback: Function): void;
off(event: string, callback?: Function): void;
getModule(module: 'menu' | 'payment' | 'login'): any;
setErrorHandler(handler: (error: MinigameError) => void): void;
}

interface MenuShowOptions {
gradually?: boolean;
}

interface MenuHideOptions {
gradually?: boolean;
}

interface PaymentShowOptions {
params: PaymentParams;
extra?: PaymentExtra;
}

interface ShowResult {
res: string;
size?: {
width?: string;
height?: string;
};
}

interface LoginOptions {
success?: (result: LoginResult) => void;
fail?: (error: LoginError) => void;
}

interface LoginError {
code: number;
message: string;
error: string;
}

interface LoginResult {
code: number;
message: string;
data: {
jwtToken: string;
expiresIn: number;
refreshToken: string;
};
}

interface PaymentResult {
order_no: string; // 订单号
openid: string; // 用户ID
order_no_hash: string; // 订单哈希值
}

interface PaymentError extends Error {
code: string;
type: 'failed' | 'hide' | 'queryChannelsFailed';
data?: any;
timestamp: number;
}

interface ProductsParams {
game_openid: string;
role_id: string;
server_id?: string;
}

interface ProductItem {
product_id: string; // midasbuy 内部的物品 ID
game_product_id: string; // 业务侧的物品 ID
quantity: number; // 游戏币或道具数量 (结合物品类型)
product_type: 'currency' | 'item'; // 物品类型:currency(游戏币) 或 item(道具)
product_icon: string; // 物品图片URL
name: string; // 物品名称
price_info: {
price: string; // 当前价格,如:'69.99'
original_price: string; // 原价,如:'77.99'
currency: string; // 币种,如:'HKD'
display_price: string; // 展示价格(含币种),如:'69.99 HKD'
display_original_price: string; // 展示原价(含币种),如:'77.99 HKD'
};
bonus: {
virtual_currency_quantity: number; // 赠送游戏币数量
virtual_item_list: { // 赠送道具物品列表
product_id: string; // 赠送的道具对应的 midasbuy 内部的物品 ID
game_product_id: string; // 赠送的道具对应的业务侧的物品 ID
name: string; // 赠送道具名称
quantity: number; // 赠送道具数量
icon: string; // 赠送道具图片URL
}[];
};
meta: any; // 货架处理前的源数据,一般无需关注
}

interface ProductsResult {
products: ProductItem[];
}

function minigame(options: MinigameOptions): MinigameAPI;
}