Piani di fatturazione mensile per iOS
Copia un promemoria di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Apple supporta le sottoscrizioni che fatturano mensilmente mentre impegnano 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 espone i termini di prezzo, consente di selezionare il piano di fatturazione mensile durante l'acquisto e restituisce i metadati di impegno sui trasazioni e le informazioni di rinnovo.
Usa questo per offrire sottoscrizioni annuali dove gli utenti preferiscono pagamenti mensili ma tu vuoi ancora 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 una versione iOS che supporta i piani di fatturazione di StoreKit.
- Conserva un'opzione di fatturazione standard disponibile per dispositivi o negozi che non restituiscono termini di prezzo di impegno.
Carica e visualizza i termini di prezzo
Sottosezione intitolata “Carica e visualizza i termini di prezzo”Chiamare getProducts() come di consueto. Per i prodotti di abbonamento iOS supportati, ogni prodotto può includere 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',);Rendere i valori forniti dalla store al posto dei prezzi hardcoded:
| Campo | Utilizzalo per |
|---|---|
billingDisplayPrice | Il costo di fatturazione ricorrente visualizzato all'utente, ad esempio il carico mensile. |
billingPeriod | Il calendario di fatturazione per il prezzo di fatturazione visualizzato. |
commitmentInfo.priceString | Il prezzo di impegno totale formattato per il negozio dell'utente. |
commitmentInfo.period | Il periodo di impegno completo. |
subscriptionOffers | Offerte introduttive o promozionali legate 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;}Prenota il piano di impegno mensile
Sezione intitolata “Prenota 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' utilizza solo quando hai bisogno di selezionare esplicitamente il piano di fatturazione a fronte standard. Se ometti billingPlanType, StoreKit utilizza il comportamento di acquisto predefinito per il prodotto.
Letti i metadati di impegno
Sezione intitolata “Leggi i metadati del impegno”I transazioni includono il piano di fatturazione e lo stato di 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);}L'informazione di rinnovo può 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 i campi di livello superiore expirationDate e isActive per le decisioni di entità. Utilizza commitmentInfo.expirationDate per spiegare la timeline completa dell'impegno al cliente.
Note di revisione dell'App Store
Sezione intitolata “Note di revisione dell'App Store”- Mostra sia il prezzo di fatturazione ricorrente che il prezzo totale dell'impegno prima dell'acquisto.
- Fai esplicita la lunghezza del impegno vicino al pulsante di acquisto.
- Usa
product.title,product.priceString,pricingTerms[].billingDisplayPrice, epricingTerms[].commitmentInfo.priceStringda StoreKit al posto di prezzi hardcoded. - Fornire azioni di ripristino acquisti e gestione abbonamento sulla schermata di pagamento o sulla schermata account.
Guide correlate
Sezione intitolata “Guide correlate”Prosegui da Piani di fatturazione mensili di impegno iOS
Prosegui da Piani di fatturazione mensili di impegno iOSSe stai utilizzando Piani di fatturazione mensili per 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/native-purchases per il dettaglio di implementazione in @capgo/native-purchases, e Avvio rapido per i dettagli di implementazione in Getting Started.