Piani di fatturazione mensili per iOS
Copia un prompt di configurazione con le istruzioni di installazione e la guida markdown completa per questo plugin.
Apple supporta le sottoscrizioni che fatturano mensilmente impegnando il cliente a un termine più lungo di 12 mesi. Quando StoreKit e il sistema operativo in esecuzione supportano questo piano di fatturazione, @capgo/native-purchases espongono i termini di prezzo, consentono di selezionare il piano di fatturazione mensile durante l'acquisto e restituiscono i metadati di impegno nelle transazioni e le informazioni di rinnovo.
Utilizza questo per offrire abbonamenti annuali dove gli utenti preferiscono pagamenti mensili, ma desiderano comunque la retenzione e la prevedibilità di un termine annuale impegnativo.
Requisiti
Sezione intitolata “Requisiti”- Configura il piano di fatturazione mensile con impegno di 12 mesi in App Store Connect o in StoreKit Testing in Xcode.
- Costruisci l'app iOS con un Xcode SDK che contiene StoreKit
pricingTermsebillingPlanType. - Esegui su un'istanza di iOS che supporta i piani di fatturazione di impegno di StoreKit.
- Tieni una scelta di fatturazione standard disponibile per dispositivi o negozi che non restituiscono i termini di prezzo di impegno.
Carica e visualizza i termini di prezzo
Sezione intitolata “Carica e visualizza i termini di prezzo”Chiamare getProducts() context:HTML testo frammento da una stringa Capgo UI più lunga (chiave genitore `appflow_migration_step2`). Pagina/area: Appflow comparazione / migrazione copia di marketing. Ruolo: Copia di sito di frase. Visibile in: pagina ionic-appflow.astro. Preservare esattamente i termini di prodotto/marca e i termini di sviluppatore Capgo. Chiave di messaggio `appflow_migration_step2` (Appflow Migration Step2). pricingTerms.
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
const { products } = await NativePurchases.getProducts({ productIdentifiers: ['com.example.app.premium.yearly'], productType: PURCHASE_TYPE.SUBS,});
const premiumYearly = products.find( (product) => product.identifier === 'com.example.app.premium.yearly',);const monthlyCommitment = premiumYearly?.pricingTerms?.find( (term) => term.billingPlanType === 'monthly',);Copiare nel portapenne
| Visualizza i valori forniti dalla store al posto dei prezzi hardcoded: | Campo |
|---|---|
billingDisplayPrice | Utilizzalo per |
billingPeriod | Il costo mensile ricorrente visualizzato all'utente, ad esempio il carico mensile. |
commitmentInfo.priceString | Il prezzo totale di impegno formattato per il negozio del cliente. |
commitmentInfo.period | Il periodo di impegno completo. |
subscriptionOffers | Offerte introduttive o promozionali associate al termine di prezzo. |
Esempio di copia del paywall:
function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) { const total = term.commitmentInfo?.priceString; return total ? `${term.billingDisplayPrice} billed monthly, ${total} total commitment` : term.billingDisplayPrice;}Acquista il Piano di Impegno Mensile
Sezione intitolata “Acquista il Piano di Impegno Mensile”Quando l'utente seleziona il piano di impegno mensile, passa billingPlanType: 'monthly'.
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.example.app.premium.yearly', productType: PURCHASE_TYPE.SUBS, billingPlanType: 'monthly', appAccountToken: userStoreUuid,});Usa billingPlanType: 'upFront' Usa solo quando hai bisogno di selezionare esplicitamente il piano di fatturazione standard a fronte. billingPlanTypeSe ometti, StoreKit utilizza il suo comportamento di acquisto predefinito per il prodotto.
Leggi i Metadati dell'Impegno
Sottosezione intitolata “Leggi i Metadati dell'Impegno”Gli acquisti includono il piano di fatturazione e lo stato di avanzamento dell'impegno quando StoreKit lo fornisce:
if (transaction.billingPlanType === 'monthly') { console.log('Current billing period:', transaction.commitmentInfo?.billingPeriodNumber); console.log('Total billing periods:', transaction.commitmentInfo?.totalBillingPeriods); console.log('Commitment ends:', transaction.commitmentInfo?.expirationDate); console.log('Commitment total:', transaction.commitmentInfo?.price);}Le informazioni di rinnovo possono includere lo stato dell'impegno successivo:
const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, onlyCurrentEntitlements: true,});
for (const purchase of purchases) { const commitment = purchase.renewalInfo?.commitmentInfo; if (!commitment) continue;
console.log('Renews into another commitment:', commitment.willAutoRenew); console.log('Next billing plan:', commitment.renewalBillingPlanType); console.log('Next renewal date:', commitment.renewalDate);}Utilizza il livello superiore expirationDate e isActive Campi per le decisioni di abilitazione. Utilizza commitmentInfo.expirationDate per spiegare la timeline di impegno completo al cliente.
Note di revisione dell'App Store
Sottosezione intitolata “Note di revisione dell'App Store”- Mostra sia il prezzo di fatturazione ricorrente che il prezzo di impegno totale prima dell'acquisto.
- Fai esplicito l'intervallo di impegno vicino al pulsante di acquisto.
- Utilizza
product.title,product.priceString,pricingTerms[].billingDisplayPrice, epricingTerms[].commitmentInfo.priceStringda StoreKit al posto dei prezzi hardcoded. - Fornisci azioni di ripristino delle acquisti e gestione della sottoscrizione sul paywall o sulla schermata account.
Guide correlate
Sottosezione intitolata “Guide correlate”Continua da qui con i piani di fatturazione mensile di impegno iOS
Sezione intitolata “Continua da qui con i piani di fatturazione mensile di impegno iOS”Se stai utilizzando I piani di fatturazione mensile di impegno iOS per pianificare pagamenti e acquisti, connettilo con Utilizzando @capgo/native-purchases per la capacità nativa in Utilizzando @capgo/native-purchases Capgo Pricing per il workflow del prodotto in Capgo Pricing Sistema di pagamento per il dettaglio di implementazione in Sistema di pagamento @capgo/acquisti nativi per il dettaglio di implementazione in @capgo/acquisti nativi, e Iniziare per il dettaglio di implementazione in Iniziare.