Aller directement au contenu

Plans de Facturation Mensuelle iOS de l'Engagement

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 annuel 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é.

  • Configurez le plan de facturation mensuel avec engagement de 12 mois dans App Store Connect ou dans StoreKit Testing dans Xcode.
  • Construirez l'application iOS avec un Xcode SDK contenant StoreKit pricingTerms et billingPlanType.
  • Exécuter sur une version iOS qui prend en charge les plans de facturation de StoreKit.
  • Maintenez une option de facturation standard disponible pour les appareils ou les points de vente qui ne retournent pas les termes de tarification de engagement.

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 tarifs fixés manuellement :

ChampL'utiliser pour
billingDisplayPriceLe montant facturé à répétition affiché à l'utilisateur, par exemple le coût mensuel.
billingPeriodLa période de facturation pour le prix facturé affiché.
commitmentInfo.priceStringLe prix total de l'engagement formatté pour le magasin de l'utilisateur.
commitmentInfo.periodLa période d'engagement complète.
subscriptionOffersOffres 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;
}

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 billingPlanType: 'upFront' seulement lorsque vous avez besoin de sélectionner explicitement le plan de facturation standard à l'avance. Si vous omittrez billingPlanTypeStoreKit utilise son comportement de purchase par défaut pour le produit.

Les transactions incluent le plan de facturation et l'état 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 la durée complète de l'engagement au client.

  • Afficher à la fois le prix de facturation récurrente et le prix total de l'engagement avant l'achat.
  • Faites l'engagement explicite près du bouton d'achat.
  • Utilisez product.title, product.priceString, pricingTerms[].billingDisplayPrice, et pricingTerms[].commitmentInfo.priceString à partir de StoreKit au lieu de prix fixés.
  • Fournir des actions de rachat d'achat et de gestion d'abonnement sur la page de paiement ou l'écran de compte.

Continuez à partir des plans de facturation mensuelle de l'engagement iOS

Sous-titre « Continuez à partir des plans de facturation mensuelle de l'engagement iOS »

Si vous utilisez Tarifs mensuels de facturation pour iOS pour planifier les paiements et les achats, connectez-le à En utilisant @capgo/native-purchases pour la capacité native dans En utilisant @capgo/native-purchases, Capgo Tarifs pour le flux de travail du produit dans Capgo Tarifs, 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 pour le détail d'implémentation dans Démarrage.