Facturation mensuelle de l'engagement iOS
Copiez un prompt 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 conditions tarifaires, vous permet de sélectionner le plan de facturation mensuelle lors de l'achat, et renvoie les métadonnées de la commitment sur les transactions et les informations de renouvellement.
Utilisez cela pour des offres d'abonnement annuel où les utilisateurs préfèrent des paiements mensuels mais vous souhaitez toujours la fidélité et la prévisibilité d'un terme annuel engagé.
Exigences
Section intitulée « Exigences »- Configurez le plan de facturation mensuel avec un terme de 12 mois dans App Store Connect ou dans StoreKit Testing dans Xcode.
- Construisez l'application iOS avec un projet Xcode SDK contenant StoreKit
pricingTermsetbillingPlanType. - Exécutez sur une version iOS qui prend en charge les plans de facturation de StoreKit.
- Conserver une option de facturation standard disponible pour les appareils ou les points de vente qui ne retournent pas les termes de prix de engagement.
Afficher et afficher les termes de tarification
Section intitulée « Afficher et afficher les termes de tarification »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 | Utilisez-le pour |
|---|---|
billingDisplayPrice | Champ : « Montant de facturation récurrent affiché à l'utilisateur, par exemple le coût mensuel. » |
billingPeriod | Le rythme de facturation pour le prix facturé affiché. |
commitmentInfo.priceString | Le prix total de l'engagement formatté pour le magasin de l'utilisateur. |
commitmentInfo.period | La période d'engagement complète. |
subscriptionOffers | Offres promotionnelles ou d'introduction attaché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
Section intitulée « Acheter le Plan de Engagement Mensuel »Lorsque l'utilisateur sélectionne le plan d'engagement mensuel, transmettre billingPlanType: 'monthly'.
const transaction = await NativePurchases.purchaseProduct({ productIdentifier: 'com.example.app.premium.yearly', productType: PURCHASE_TYPE.SUBS, billingPlanType: 'monthly', appAccountToken: userStoreUuid,});Utiliser billingPlanType: 'upFront' Utilisez uniquement lorsque vous devez sélectionner explicitement le plan de facturation standard à l'avance. Si vous omitt billingPlanType, StoreKit 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);}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 le niveau supérieur expirationDate et isActive les champs pour les décisions d'entitlement. Utilisez commitmentInfo.expirationDate pour expliquer l'intégralité du calendrier de la commitment au client.
Notes de la Revue de l'App Store
Section intitulée « Notes de la Revue de l'App Store »- Affichez les deux prix de facturation récurrente et le prix total de la commitment avant l'achat.
- Faites l'explicitation de la longueur de la commitment près du bouton d'achat.
- Utilisez
product.title,product.priceString,pricingTerms[].billingDisplayPrice, etpricingTerms[].commitmentInfo.priceStringà partir de StoreKit au lieu de prix fixés. - Restaure les achats et gère les actions de souscription sur l'écran de paiement ou de compte.
Guides connexes
Rubrique intitulée « Guides connexes »- Créer des abonnements iOS
- Configurer les tests de banc iOS
- Lignes directrices de la revue iOS App Store
Continuer avec les plans de facturation mensuelle de l'engagement iOS
Rubrique intitulée « Continuer avec les plans de facturation mensuelle de l'engagement iOS »Si vous utilisez les 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, Capgo Tarification pour le flux de produit dans Capgo Prix 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 Prise en main pour le détail d'implémentation dans Prise en main.