Piani di fatturazione mensile per iOS
Copiare un prompt 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 esporre i termini di prezzo, consentire di selezionare il piano di fatturazione mensile durante l'acquisto e restituire i metadati di impegno sulle transazioni e le informazioni di rinnovo.
Usa questo per offerte di abbonamento annuale in cui gli utenti preferiscono i pagamenti mensili, ma desideri comunque la retention e la prevedibilità di un termine annuale impegnativo.
Requisiti
Sottosezione intitolata “Requisiti”- Configura il piano di fatturazione mensile con un impegno di 12 mesi nel 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 di iOS che supporta i piani di fatturazione di impegno di StoreKit.
- Mantieni un'opzione di fatturazione standard disponibile per dispositivi o negozi che non restituiscono termini di prezzo di impegno.
Carica e visualizza termini di prezzo
Sottosezione intitolata “Carica e visualizza termini di prezzo”Chiamata getProducts() come al solito. 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',);Visualizza i valori forniti dal negozio al posto dei prezzi hardcoded:
| Campo | Usalo per |
|---|---|
billingDisplayPrice | L'importo di fatturazione ricorrente visualizzato all'utente, ad esempio il carico mensile. |
billingPeriod | La cadenza di fatturazione per il prezzo di fatturazione visualizzato. |
commitmentInfo.priceString | Il prezzo di impegno totale formattato per il negozio dell'utente. |
commitmentInfo.period | La durata di impegno completa. |
subscriptionOffers | Offerte promozionali o introduttive legate al termine di prezzo. |
Esempio di copia di 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 devi selezionare esplicitamente il piano di fatturazione a fronte anticipato standard. Se ometti billingPlanType, StoreKit utilizza il 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);}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 il livello superiore expirationDate e isActive campi per le decisioni di entitatività. Utilizza commitmentInfo.expirationDate per spiegare la timeline completa dell'impegno al cliente.
Note di valutazione dell'App Store
Sottosezione intitolata “Note di valutazione dell'App Store”- Mostra sia il prezzo della fattura ricorrente che il totale del impegno di acquisto prima dell'acquisto.
- Fai esplicito il periodo di impegno vicino al pulsante di acquisto.
- Usa
product.title,product.priceString,pricingTerms[].billingDisplayPrice, epricingTerms[].commitmentInfo.priceStringi prezzi da StoreKit al posto di quelli hardcoded. - Fornisci azioni di ripristino dell'acquisto e gestione della sottoscrizione sulla schermata di pagamento o sulla schermata del profilo utente.
Guida correlata
Sottosezione intitolata “Guida correlata”- Creare sottoscrizioni iOS
- Configurare il testing sandbox iOS
- Linee guida di revisione dell'App Store di iOS
Continua da Piani di fatturazione mensili di iOS
Sezione intitolata “Continua da Piani di fatturazione mensili di iOS”Se stai utilizzando Piani di fatturazione mensili di iOS per pianificare pagamenti e acquisti, connettilo con Utilizza @capgo/native-purchases per la capacità nativa in Utilizza @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 i dettagli di implementazione in @capgo/acquisti nativi, e Iniziare per i dettagli di implementazione in Iniziare.