Passer à la navigation

Plans de facturation mensuels pour iOS

GitHub

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 commitment sur les transactions et les informations de renouvellement.

Utilisez-le pour les offres d'abonnement annuel où les utilisateurs préfèrent les paiements mensuels mais vous souhaitez toujours la fidélité 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.
  • Construisez l'application iOS avec un Xcode SDK contenant StoreKit pricingTerms et billingPlanType.
  • 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.

Call 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.

ChampUtilisez-le pour
billingDisplayPriceLe montant facturé à l'utilisateur pour les factures récurrentes, par exemple le coût mensuel.
billingPeriodLa fréquence de facturation pour le prix facturé affiché.
commitmentInfo.priceStringLe prix total de la facture formaté pour le magasin de l'utilisateur.
commitmentInfo.periodLa période de facture totale.
subscriptionOffersOffres promotionnelles ou d'introduction attachées au terme de tarification.

Exemple de copie de mur d'achat :

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 devez sélectionner explicitement le plan de facturation standard à l'avance. Si vous omettez billingPlanType, StoreKit utilise son comportement de purchase par défaut pour le produit.

Lisez les métadonnées de l'engagement

Lecture des métadonnées de la mise à contribution

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);
}

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 fields for entitlement decisions. Use commitmentInfo.expirationDate pour expliquer l'intégralité du calendrier d'engagement au client.

  • Affichez les deux prix de facturation récurrente et le prix total de l'engagement avant l'achat.
  • Faites l'étendue de 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 restauration d'achat et de gestion de l'abonnement sur l'écran de paiement ou de compte.

Continuez avec les plans de facturation mensuelle de l'abonnement iOS

Sous-titre « Continuez avec les plans de facturation mensuelle de l'abonnement iOS »

Si vous utilisez Plans de facturation mensuels pour iOS pour planifier les paiements et les achats, connectez-l’avec En utilisant @capgo/achats natifs pour la capacité native dans En utilisant @capgo/achats natifs, Tarification de @Capgo 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 Prise en main pour le détail d'implémentation dans Prise en main.