Piani di fatturazione iOS con impegno mensile
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Apple supporta gli abbonamenti con fatturazione mensile che impegnano il cliente per un periodo più lungo di 12 mesi. Quando StoreKit e il sistema operativo supportano questo piano di fatturazione, @capgo/native-purchases espone le condizioni di prezzo, consente di selezionare il piano di fatturazione mensile durante l'acquisto e restituisce metadati sull'impegno per transazioni e informazioni di rinnovo.
Usalo per le offerte con abbonamento annuale in cui gli utenti preferiscono i pagamenti mensili ma vuoi comunque la retention e la prevedibilità di un impegno annuale.
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.
- Esegui il build dell'app iOS con un SDK di Xcode che contiene StoreKit
pricingTermsebillingPlanType. - Esegui su una versione di iOS che supporti i piani di fatturazione StoreKit commitment.
- Mantieni disponibile un'opzione di fatturazione standard per i dispositivi o gli storefront che non restituiscono i termini di prezzo dell'impegno.
Carica e mostra i termini di prezzo
Sezione: “Caricare e visualizzare i termini di prezzo”Chiama getProducts() come al solito. Per i prodotti in 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',);Renderizza i valori forniti dallo store invece di prezzi hardcoded:
| Campo | Usalo per |
|---|---|
billingDisplayPrice | L'importo di fatturazione ricorrente mostrato all'utente, ad esempio l'addebito mensile. |
billingPeriod | La cadenza di fatturazione per il prezzo di fatturazione visualizzato. |
commitmentInfo.priceString | Il prezzo totale dell'impegno formattato per lo storefront dell'utente. |
commitmentInfo.period | L'intero periodo di impegno. |
subscriptionOffers | Offerte introduttive o promozionali associate al periodo di fatturazione. |
Esempio di testo per il 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 Monthly Commitment
Sezione intitolata “Acquista il piano Monthly Commitment”Quando l'utente seleziona il piano Monthly Commitment, 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' solo quando devi selezionare esplicitamente il piano di fatturazione anticipata standard. Se ometti billingPlanType, StoreKit utilizza il comportamento di acquisto predefinito per il prodotto.
Leggi i metadati del Commitment
Sezione intitolata “Leggi i metadati di commitment”Le transazioni includono il piano di fatturazione e l'avanzamento del commitment quando StoreKit li 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 sul rinnovo possono includere lo stato del prossimo impegno:
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);}Usa il top-level expirationDate e isActive campi per le decisioni sui diritti. Usa commitmentInfo.expirationDate per spiegare al cliente la timeline completa dell'impegno.
Note per la revisione dell'App Store
Sezione intitolata “Note per la revisione App Store”- Mostra sia il prezzo di fatturazione ricorrente sia il prezzo totale dell'impegno prima dell'acquisto.
- Rendi esplicita la durata dell'impegno vicino al pulsante di acquisto.
- Usa
product.title,product.priceString,pricingTerms[].billingDisplayPrice, epricingTerms[].commitmentInfo.priceStringda StoreKit invece di prezzi hardcoded. - Fornisci le azioni per ripristinare gli acquisti e gestire l'abbonamento nella paywall o nella schermata account.
Guide correlate
Sezione intitolata “Guide correlate”- Creare abbonamenti iOS
- Configurare i test sandbox iOS
- Linee guida per la revisione dell'App Store iOS
Continua dai piani di fatturazione iOS Monthly Commitment
Sezione intitolata “Continua dai piani di fatturazione iOS Monthly Commitment”Se stai usando Piani di fatturazione iOS con impegno mensile per pianificare pagamenti e acquisti, collegalo a Utilizzo di @capgo/native-purchases per la funzionalità nativa in Utilizzo di @capgo/native-purchases, Prezzi Capgo per il workflow del prodotto nella pagina Prezzi di Capgo, Sistema di pagamento per i dettagli di implementazione nel sistema di pagamento, @capgo/native-purchases per i dettagli di implementazione in @capgo/native-purchases, e Per iniziare per i dettagli sull'implementazione in Getting Started.