Plans de facturation mensuels de iOS sous engagement
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 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 ce pour les offres d'abonnement annuelles où les utilisateurs préfèrent les paiements mensuels mais vous voulez toujours la rétention et la prévisibilité d'un terme annuel engagé.
Exigences
Section intitulée « Exigences »- 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 projet Xcode SDK contenant StoreKit
pricingTermsetbillingPlanType. - Exécutez sur une version iOS qui prend en charge les plans de facturation de StoreKit avec engagement.
- Maintenez une option de facturation standard disponible pour les appareils ou les magasins qui ne retournent pas les termes de prix de engagement.
Charger et Afficher les Termes de Prix
Section intitulée “Charger et Afficher les Termes de Prix”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 le magasin au lieu des prix fixés par défaut :
| Champ | Utilisez-le pour |
|---|---|
billingDisplayPrice | L'import total facturé à l'utilisateur, par exemple le coût mensuel. |
billingPeriod | Le cycle de facturation pour le prix facturé à l'utilisateur. |
commitmentInfo.priceString | Le prix total de l'engagement formaté pour le magasin de l'utilisateur. |
commitmentInfo.period | La période d'engagement totale. |
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;}Achetez le Plan d'Engagement Mensuel
Titre de la section « Achetez le Plan d'Engagement Mensuel »Lorsque l'utilisateur sélectionne le plan d'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 uniquement lorsque vous avez besoin de sélectionner explicitement le plan de facturation à l'avance. Si vous ommettez billingPlanType: 'upFront' StoreKit utilise son comportement de purchase par défaut pour le produit. billingPlanTypeConseil
Les transactions incluent le plan de facturation et l'avancement de l'engagement lorsque StoreKit le fournit :
Copier dans le presse-papierLes informations de renouvellement peuvent inclure l'état de l'engagement suivant :
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);}__CAPGO_KEEP_1__
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 de haut pour expirationDate et isActive les champs pour les décisions de droit d'accès. Utilisez commitmentInfo.expirationDate pour expliquer l'ensemble du calendrier de l'engagement à l'égard du 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 d'engagement avant l'achat.
- Faites l'engagement explicite 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. - Fournir des actions de rachat d'achat et de gestion d'abonnement sur l'écran de paiement ou de compte.
Guides connexes
Section intitulée “Guides connexes”- Créer des abonnements iOS
- Configurer les tests de banc d'essai iOS
- Lignes directrices de la revue de l'App Store iOS
Continuez à partir des plans de facturation mensuelle de l'engagement iOS
Section intitulée “Continuez à partir des plans de facturation mensuelle de l'engagement iOS”Si vous utilisez Plans de facturation mensuelle de l'engagement iOS pour planifier les paiements et les achats, connectez-le avec En utilisant @capgo/native-purchases pour la capacité native 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/native-purchases pour le détail d'implémentation dans @capgo/native-purchases, et Démarrage rapide pour le détail d'implémentation dans Démarrage rapide.