Skip to content

Getting Started

Terminal window
bun add @capgo/capacitor-wechat
bunx cap sync
import { CapacitorWechat } from '@capgo/capacitor-wechat';

Initialize the WeChat SDK with your application credentials.

You can also set these values in capacitor.config.ts under the CapacitorWechat plugin configuration. Calling this method overrides any bundled configuration at runtime.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
await CapacitorWechat.initialize({
appId: 'wx1234567890',
universalLink: 'https://example.com/app/'
});

Check if WeChat app is installed on the device.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
const { installed } = await CapacitorWechat.isInstalled();
if (installed) {
console.log('WeChat is installed');
}

Authenticate user with WeChat OAuth.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
const { code, state } = await CapacitorWechat.auth({
scope: 'snsapi_userinfo',
state: 'my_state'
});
// Use code to get access token from your server

Share content to WeChat.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
// Share text
await CapacitorWechat.share({
scene: 0, // 0 = Session, 1 = Timeline, 2 = Favorite
type: 'text',
text: 'Hello WeChat!'
});
// Share link
await CapacitorWechat.share({
scene: 1,
type: 'link',
title: 'My Website',
description: 'Check out my website',
link: 'https://example.com',
imageUrl: 'https://example.com/image.jpg'
});

Send payment request to WeChat Pay.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
// Get payment params from your server first
const paymentParams = await fetchPaymentParamsFromServer();
await CapacitorWechat.sendPaymentRequest({
partnerId: paymentParams.partnerId,
prepayId: paymentParams.prepayId,
nonceStr: paymentParams.nonceStr,
timeStamp: paymentParams.timeStamp,
package: paymentParams.package,
sign: paymentParams.sign
});

Open WeChat mini-program.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
const { extMsg } = await CapacitorWechat.openMiniProgram({
username: 'gh_xxxxxxxxxxxxx',
path: 'pages/index/index',
type: 0 // 0 = Release, 1 = Test, 2 = Preview
});

Choose invoice from WeChat.

import { CapacitorWechat } from '@capgo/capacitor-wechat';
const { cards } = await CapacitorWechat.chooseInvoice({
appId: 'your_app_id',
signType: 'SHA1',
cardSign: 'signature',
timeStamp: '1234567890',
nonceStr: 'random_string'
});
console.log('Selected cards:', cards);

WeChat initialization options.

export interface WechatInitializationOptions {
/**
* Required WeChat application ID.
*/
appId: string;
/**
* iOS universal link that is associated with your WeChat application.
*/
universalLink?: string;
}

WeChat authentication options.

export interface WechatAuthOptions {
/**
* OAuth scope. Use 'snsapi_userinfo' for user info or 'snsapi_login' for login only.
*/
scope: string;
/**
* Optional state parameter for CSRF protection.
*/
state?: string;
}

WeChat authentication response.

export interface WechatAuthResponse {
/**
* Authorization code to exchange for access token.
*/
code: string;
/**
* State parameter if provided in request.
*/
state?: string;
}

WeChat share options.

export interface WechatShareOptions {
/**
* Share scene: 0 = Session (chat), 1 = Timeline (moments), 2 = Favorite.
*/
scene: number;
/**
* Share type: 'text', 'image', 'link', 'music', 'video', 'miniprogram'.
*/
type: 'text' | 'image' | 'link' | 'music' | 'video' | 'miniprogram';
/**
* Text content (for type 'text').
*/
text?: string;
/**
* Title (for type 'link', 'music', 'video', 'miniprogram').
*/
title?: string;
/**
* Description (for type 'link', 'music', 'video', 'miniprogram').
*/
description?: string;
/**
* Link URL (for type 'link').
*/
link?: string;
/**
* Image URL or base64 data.
*/
imageUrl?: string;
/**
* Thumbnail URL or base64 data (for type 'link', 'music', 'video').
*/
thumbUrl?: string;
/**
* Music or video URL (for type 'music', 'video').
*/
mediaUrl?: string;
/**
* Mini-program username (for type 'miniprogram').
*/
miniProgramUsername?: string;
/**
* Mini-program path (for type 'miniprogram').
*/
miniProgramPath?: string;
/**
* Mini-program type: 0 = Release, 1 = Test, 2 = Preview (for type 'miniprogram').
*/
miniProgramType?: number;
/**
* Mini-program web page URL fallback (for type 'miniprogram').
*/
miniProgramWebPageUrl?: string;
}

WeChat payment options.

export interface WechatPaymentOptions {
/**
* Partner ID (merchant ID).
*/
partnerId: string;
/**
* Prepay ID from unified order API.
*/
prepayId: string;
/**
* Random string.
*/
nonceStr: string;
/**
* Timestamp.
*/
timeStamp: string;
/**
* Package value, typically 'Sign=WXPay'.
*/
package: string;
/**
* Signature.
*/
sign: string;
}

WeChat mini-program options.

export interface WechatMiniProgramOptions {
/**
* Mini-program username (original ID).
*/
username: string;
/**
* Path to open in mini-program.
*/
path?: string;
/**
* Mini-program type: 0 = Release, 1 = Test, 2 = Preview.
*/
type?: number;
}

WeChat invoice options.

export interface WechatInvoiceOptions {
/**
* App ID.
*/
appId: string;
/**
* Signature type.
*/
signType: string;
/**
* Card signature.
*/
cardSign: string;
/**
* Timestamp.
*/
timeStamp: string;
/**
* Random string.
*/
nonceStr: string;
}

WeChat invoice response.

export interface WechatInvoiceResponse {
/**
* Array of selected card IDs.
*/
cards: WechatInvoiceCard[];
}

WeChat invoice card item.

export interface WechatInvoiceCard {
/**
* The selected card identifier.
*/
cardId: string;
/**
* Encrypted code returned by WeChat.
*/
encryptCode?: string;
}

This page is generated from the plugin’s src/definitions.ts. Re-run the sync when the public API changes upstream.