Iniziare
-
Installa il pacchetto
Terminal window npm i @capgo/capacitor-wechatTerminal window pnpm add @capgo/capacitor-wechatTerminal window yarn add @capgo/capacitor-wechatTerminal window bun add @capgo/capacitor-wechat -
Sincronizzazione con progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
##Configurazione
Registrazione dell’app WeChat
Section titled “Registrazione dell’app WeChat”Prima di utilizzare questo plugin, devi registrare la tua app sulla WeChat Open Platform per ottenere un ID app.
iOS Configurazione
Section titled “iOS Configurazione”Aggiungi quanto segue al tuo Info.plist:
<key>LSApplicationQueriesSchemes</key><array> <string>weixin</string> <string>weixinULAPI</string></array>
<key>CFBundleURLTypes</key><array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>weixin</string> <key>CFBundleURLSchemes</key> <array> <string>YOUR_WECHAT_APP_ID</string> </array> </dict></array>Dovrai integrare WeChat SDK nel tuo progetto iOS. Aggiungi WeChat SDK al tuo Podfile o scaricalo dalla piattaforma aperta WeChat.
Android Configurazione
Section titled “Android Configurazione”Aggiungi quanto segue al tuo AndroidManifest.xml:
<manifest> <application> <!-- WeChat callback activity --> <activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:label="@string/app_name" android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application></manifest>Dovrai integrare WeChat SDK nel tuo progetto Android. Aggiungi la dipendenza WeChat SDK al tuo build.gradle o scaricalo dalla piattaforma aperta WeChat.
Utilizzo
Section titled “Utilizzo”Controlla l’installazione di WeChat
Section titled “Controlla l’installazione di WeChat”import { CapacitorWechat } from '@capgo/capacitor-wechat';
const checkWeChat = async () => { const { installed } = await CapacitorWechat.isInstalled(); if (installed) { console.log('WeChat is installed'); } else { console.log('WeChat is not installed'); }};Autenticazione
Section titled “Autenticazione”const loginWithWeChat = async () => { try { const { code, state } = await CapacitorWechat.auth({ scope: 'snsapi_userinfo', // or 'snsapi_login' state: 'my_random_state' });
// Send code to your backend to exchange for access token const response = await fetch('https://yourapi.com/auth/wechat', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ code }) });
const { access_token, openid } = await response.json(); console.log('Logged in with WeChat:', openid); } catch (error) { console.error('WeChat auth failed:', error); }};Condividi contenuti
Section titled “Condividi contenuti”Condividi testo
Section titled “Condividi testo”const shareText = async () => { await CapacitorWechat.share({ scene: 0, // 0 = Chat, 1 = Moments, 2 = Favorite type: 'text', text: 'Hello from Capacitor WeChat!' });};Condividi collegamento
Section titled “Condividi collegamento”const shareLink = async () => { await CapacitorWechat.share({ scene: 1, // Share to Moments type: 'link', title: 'Check out this awesome app!', description: 'Built with Capacitor and WeChat SDK', link: 'https://capacitorjs.com', thumbUrl: 'https://capacitorjs.com/icon.png' });};Condividi l’immagine
Section titled “Condividi l’immagine”const shareImage = async () => { await CapacitorWechat.share({ scene: 0, type: 'image', imageUrl: 'https://example.com/image.png', // or base64 data thumbUrl: 'https://example.com/thumb.png' });};WeChat paga
Section titled “WeChat paga”const payWithWeChat = async () => { // First, get payment parameters from your server const paymentParams = await fetchPaymentParamsFromServer();
try { await CapacitorWechat.sendPaymentRequest({ partnerId: paymentParams.partnerId, prepayId: paymentParams.prepayId, nonceStr: paymentParams.nonceStr, timeStamp: paymentParams.timeStamp, package: paymentParams.package, // Usually 'Sign=WXPay' sign: paymentParams.sign });
console.log('Payment successful!'); } catch (error) { console.error('Payment failed:', error); }};Apri il Mini Programma
Section titled “Apri il Mini Programma”const openMiniProgram = async () => { await CapacitorWechat.openMiniProgram({ username: 'gh_xxxxxxxxxxxxx', // Mini program original ID path: 'pages/index/index', // Path within mini program type: 0 // 0 = Release, 1 = Test, 2 = Preview });};API Riferimento
Section titled “API Riferimento”è installato()
Section titled “è installato()”Controlla se l’app WeChat è installata sul dispositivo.
const result = await CapacitorWechat.isInstalled();// Returns: { installed: boolean }autenticazione(opzioni)
Section titled “autenticazione(opzioni)”Autentica l’utente con WeChat OAuth.
interface WechatAuthOptions { scope: string; // 'snsapi_userinfo' or 'snsapi_login' state?: string; // Optional state parameter for CSRF protection}
const result = await CapacitorWechat.auth(options);// Returns: { code: string, state?: string }condividi(opzioni)
Section titled “condividi(opzioni)”Condividi contenuti su WeChat.
interface WechatShareOptions { scene: number; // 0 = Session (chat), 1 = Timeline (moments), 2 = Favorite type: 'text' | 'image' | 'link' | 'music' | 'video' | 'miniprogram'; text?: string; // For type 'text' title?: string; // For type 'link', 'music', 'video', 'miniprogram' description?: string; // For type 'link', 'music', 'video', 'miniprogram' link?: string; // For type 'link' imageUrl?: string; // Image URL or base64 data thumbUrl?: string; // Thumbnail URL or base64 data mediaUrl?: string; // For type 'music' or 'video' miniProgramUsername?: string; // For type 'miniprogram' miniProgramPath?: string; // For type 'miniprogram' miniProgramType?: number; // For type 'miniprogram': 0 = Release, 1 = Test, 2 = Preview miniProgramWebPageUrl?: string; // Fallback URL for type 'miniprogram'}
await CapacitorWechat.share(options);inviaRichiestaPagamento(opzioni)
Section titled “inviaRichiestaPagamento(opzioni)”Invia richiesta di pagamento a WeChat Pay.
interface WechatPaymentOptions { partnerId: string; // Merchant ID prepayId: string; // Prepay ID from unified order API nonceStr: string; // Random string timeStamp: string; // Timestamp package: string; // Usually 'Sign=WXPay' sign: string; // Signature}
await CapacitorWechat.sendPaymentRequest(options);openMiniProgram(opzioni)
Section titled “openMiniProgram(opzioni)”Apri il mini-programma WeChat.
interface WechatMiniProgramOptions { username: string; // Mini-program username (original ID) path?: string; // Path to open in mini-program type?: number; // 0 = Release, 1 = Test, 2 = Preview}
await CapacitorWechat.openMiniProgram(options);scegli Fattura (opzioni)
Section titled “scegli Fattura (opzioni)”Scegli la fattura da WeChat (per app aziendali).
interface WechatInvoiceOptions { appId: string; signType: string; cardSign: string; timeStamp: string; nonceStr: string;}
const result = await CapacitorWechat.chooseInvoice(options);// Returns: { cards: string[] }getPluginVersion()
Section titled “getPluginVersion()”Ottieni la versione del plugin nativo.
const result = await CapacitorWechat.getPluginVersion();// Returns: { version: string }Esempio completo
Section titled “Esempio completo”import { CapacitorWechat } from '@capgo/capacitor-wechat';
export class WeChatService { async init() { const { installed } = await CapacitorWechat.isInstalled(); if (!installed) { throw new Error('WeChat is not installed'); } }
async login() { const { code } = await CapacitorWechat.auth({ scope: 'snsapi_userinfo', state: Math.random().toString(36).substring(7) });
// Exchange code for access token on your backend const response = await fetch('/api/auth/wechat', { method: 'POST', body: JSON.stringify({ code }) });
return response.json(); }
async shareToChat(title: string, description: string, link: string, imageUrl: string) { await CapacitorWechat.share({ scene: 0, // Chat type: 'link', title, description, link, thumbUrl: imageUrl }); }
async shareToMoments(title: string, description: string, link: string, imageUrl: string) { await CapacitorWechat.share({ scene: 1, // Moments type: 'link', title, description, link, thumbUrl: imageUrl }); }}Note importanti
Section titled “Note importanti”-
Integrazione WeChat SDK: questo plugin fornisce l’interfaccia Capacitor, ma è necessario integrare WeChat ufficiale SDK nei tuoi progetti nativi.
-
Registrazione dell’app: è necessario registrare la tua app sulla piattaforma aperta WeChat per ottenere un ID app.
-
Collegamenti universali (iOS): Per iOS 13+, è necessario configurare Collegamenti universali per i callback di WeChat.
-
Integrazione backend: le funzionalità di autenticazione e pagamento richiedono l’integrazione backend per scambiare codici con token e preparare i parametri di pagamento.
-
Test: le funzionalità di WeChat richiedono test su dispositivi fisici: non funzioneranno nei simulatori.
Migliori pratiche
Section titled “Migliori pratiche”- Controlla sempre se WeChat è installato prima di tentare di utilizzare le funzionalità.
- Gestisci gli errori con garbo con i blocchi try-catch.
- Utilizza il parametro di stato nelle richieste di autenticazione per la protezione CSRF.
- Convalida le risposte ai pagamenti sul tuo backend prima di concedere l’accesso.
- Comprimi le immagini prima di condividerle per ridurre l’utilizzo dei dati.
Note sulla piattaforma
Section titled “Note sulla piattaforma”- Richiede iOS 10.0+
- Utilizza WeChat ufficiale SDK per iOS
- Richiede la configurazione dei collegamenti universali per iOS 13+### Android
- Richiede Android 5.0 (API 21)+
- Utilizza WeChat ufficiale SDK per Android
- Richiede la configurazione di WXEntryActivity
- Non supportato sulla piattaforma web