Plans de facturation mensuels iOS
Copiez une commande de configuration avec les étapes d'installation et le guide Markdown complet 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 termes de tarification, permet de sélectionner le plan de facturation mensuel lors de l'achat et renvoie les métadonnées de la transaction et les informations de renouvellement.
Utilisez ceci pour les offres de souscription annuelle où les utilisateurs préfèrent les paiements mensuels mais vous voulez toujours la fidélité et la prévisibilité d'un terme annuel engagé.
Exigences
Section intitulée « Exigences »- Configurez le paiement mensuel avec un plan de facturation de 12 mois en 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 engagement StoreKit.
- Gardez une option de facturation standard disponible pour les appareils ou les points de vente qui ne retournent pas les termes de tarification d'engagement.
Charger et afficher les conditions tarifaires
Titre de la section « 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',);Afficher les valeurs fournies par la boutique au lieu des tarifs fixés manuellement :
| Champ | Utilisez-le pour |
|---|---|
billingDisplayPrice | L'import total du facture récurrente affichée à l'utilisateur, par exemple le coût mensuel. |
billingPeriod | La fréquence de facturation pour le prix de facturation affiché. |
commitmentInfo.priceString | Le prix total de l'engagement formaté pour le magasin de l'utilisateur. |
commitmentInfo.period | La période d'engagement complète. |
subscriptionOffers | Offres promotionnelles ou de promotion 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;}Achetez le Plan de Engagement Mensuel
Section intitulée « Achetez le Plan de Engagement Mensuel »Lorsque l'utilisateur sélectionne le plan de engagement mensuel, passez 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 standard à l'avance. Si vous omittrez billingPlanTypeStoreKit utilise son comportement de purchase 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);}L'information de renouvellement peut inclure l'état de l'engagement suivant :
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 pour expliquer l'intégralité du calendrier de l'engagement au client.
Notes de revue de l'App Store
Section intitulée « Notes de revue de l'App Store »- Afficher les deux prix de facturation récurrente et le prix total de l'engagement avant l'achat.
- Faites explicite la durée de l'engagement près du bouton d'achat.
- Utilisez
product.title,product.priceString,pricingTerms[].billingDisplayPrice, etpricingTerms[].commitmentInfo.priceStringles prix de StoreKit au lieu de prix fixés. - Fournissez les actions de restauration d'achat et de gestion d'abonnement sur la page de paiement ou l'écran de compte.
Guides connexes
Section intitulée « Guides connexes »- Créer des abonnements iOS
- Configurer les tests de sandbox iOS
- Directives de révision de l'App Store iOS
Continuez à partir des plans de facturation mensuelle iOS
Section intitulée “Continuez à partir des plans de facturation mensuelle iOS”Si vous utilisez Plans de facturation mensuelle iOS pour planifier les paiements et les achats, connectez-le avec En utilisant @capgo/native-purchases pour la capacité native en En utilisant @capgo/native-purchases, Capgo Tarification pour le flux de travail du produit dans Capgo Tarification, Système de paiement pour le détail d'implémentation dans Système de paiement @capgo/achats natifs pour le détail d'implémentation dans @capgo/achats natifs, et Démarrage pour le détail d'implémentation dans Démarrage.