Plans de facturation mensuelle iOS de l'engagement
Copiez un prompt de configuration avec les étapes d'installation et la guide markdown complète pour ce plugin.
Apple prend en charge les abonnements qui facturent mensuellement tout en engageant le client à un terme plus long de 12 mois. Lorsque StoreKit et le système d'exploitation en cours de fonctionnement supportent ce plan de facturation, @capgo/native-purchases expose les conditions tarifaires, permet de sélectionner le plan de facturation mensuelle lors de l'achat et renvoie les métadonnées de la transaction et les informations de renouvellement.
Utilisez cela pour les offres de souscription annuelle où les utilisateurs préfèrent des paiements mensuels mais vous souhaitez toujours conserver la fidélité et la prévisibilité d'un terme annuel engagé.
Requirements
Section intitulée « Requis »- Configurez le plan de facturation mensuel avec engagement de 12 mois dans App Store Connect ou dans StoreKit Testing dans Xcode.
- Construisez l'application iOS avec un Xcode SDK contenant StoreKit
pricingTermsetbillingPlanType. - Exécutez sur une version iOS qui prend en charge les plans de facturation de StoreKit.
- Gardez une option de facturation standard disponible pour les appareils ou les points de vente qui ne renvoient pas les conditions tarifaires d'engagement.
Charger et Afficher les Conditions Tarifaires
Section intitulée « Charger et Afficher les Conditions Tarifaires »Appeler getProducts() Comme d'habitude. Pour les produits de souscription iOS pris en charge, chaque produit peut inclure 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',);Affichez les valeurs fournies par la boutique au lieu de tarifs fixés.
| Field | Champ |
|---|---|
billingDisplayPrice | L'import de facturation récurrent affiché à l'utilisateur, par exemple le coût mensuel. |
billingPeriod | La fréquence de facturation pour le prix de facturation affiché. |
commitmentInfo.priceString | La fréquence de facturation pour le prix de facturation affiché. |
commitmentInfo.period | La période de engagement intégrale. |
subscriptionOffers | Offres promotionnelles ou d'introduction liées au terme de tarification. |
Exemple de copie de mur payant :
function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) { const total = term.commitmentInfo?.priceString; return total ? `${term.billingDisplayPrice} billed monthly, ${total} total commitment` : term.billingDisplayPrice;}Acheter le Plan de Engagement Mensuel
Titre de la section « Acheter le Plan de Engagement Mensuel »Lorsque l'utilisateur sélectionne le plan d'engagement mensuel, transmettez billingPlanType: 'monthly'.
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.example.app.premium.yearly', productType: PURCHASE_TYPE.SUBS, billingPlanType: 'monthly', appAccountToken: userStoreUuid,});Utilisez billingPlanType: 'upFront' Utilisez uniquement lorsque vous devez sélectionner explicitement le plan de tarification à l'avance standard. Si vous ommettez billingPlanTypeStoreKit utilise sa comportement de achat par défaut pour le produit.
Lire les métadonnées de l'engagement
Section intitulée « Lire les métadonnées de l'engagement »Les transactions incluent le plan de facturation et l'avancement de l'engagement lorsque StoreKit le fournit :
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);}Renewal info can include the next commitment state:
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);}Utilisez les champs de niveau supérieur expirationDate et isActive pour prendre des décisions sur les droits. Utilisez commitmentInfo.expirationDate expliquer l'ensemble du calendrier de la prise en charge à la clientèle.
Notes de la revue de l'App Store
Section intitulée « Notes de la revue de l'App Store »- Afficher à la fois le prix facturable récurrent et le prix total de l'engagement avant l'achat.
- Faites le montant de la période explicite près du bouton d'achat.
- Utiliser
product.title,product.priceString,pricingTerms[].billingDisplayPrice, etpricingTerms[].commitmentInfo.priceStringutilisez StoreKit au lieu de prix fixés. - Restaurer les achats et gérer les actions de souscription sur l'écran de paiement ou l'écran de compte.
Guides connexes
Section intitulée « Guides connexes »Continuez avec les plans de facturation mensuelle de l'engagement iOS
Plan de facturation mensuelle pour les engagements iOSSi vous utilisez Plans de facturation mensuelle de l'engagement iOS pour planifier les paiements et les achats, connectez-l’avec En utilisant @capgo/native-purchases pour la capacité native dans En utilisant @capgo/native-purchases, Tarification de Capgo pour le flux de travail du produit dans Capgo Tarification, Système de paiement pour les détails d'implémentation dans le système de paiement, @capgo/achats-natifs pour les détails d'implémentation dans @capgo/achats-natifs, et Getting Started pour les détails d'implémentation dans Démarrer.