Passer au contenu

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 termes de tarification, permet de sélectionner le plan de facturation mensuel lors de l'achat et renvoie les métadonnées de la mise à jour de la transaction et les informations de renouvellement.

Utilisez cela pour les offres d'abonnement annuel où les utilisateurs préfèrent les paiements mensuels mais vous souhaitez toujours conserver la fidélité et la prévisibilité d'un terme annuel engagé.

  • Configurez le plan de facturation mensuel avec un 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.
  • contexte : Page/zone : Site de marketing Capgo. Rôle : Étiquette de navigation ou élément UI court. Vu dans : page trust.astro. Clé de message `et` (Et).
  • Exécutez sur une version iOS qui prend en charge les plans de facturation de StoreKit.

Appeler getProducts() context 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',
);

Copier dans le presse-papier

Rendre les valeurs fournies par la boutique au lieu de prix durcis par défaut :Champ
billingDisplayPriceUtilisez-le pour
billingPeriodLe montant facturable récurrent affiché à l'utilisateur, par exemple le coût mensuel.
commitmentInfo.priceStringLe prix total de la mise à l'épreuve formatté pour le magasin de l'utilisateur.
commitmentInfo.periodLa période de mise à l'épreuve 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;
}

Copier dans le presse-papier 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 tarification standard à l'avance. Si vous ommettez billingPlanType: 'upFront' StoreKit utilise son comportement de mise à l'achat par défaut pour le produit. billingPlanTypeAcheter le Plan de Mise à l'épreuve Mensuelle

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

Les informations de renouvellement peuvent 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 le niveau supérieur expirationDate et isActive les champs pour les décisions de droit d'accès. Utilisez commitmentInfo.expirationDate pour expliquer l'ensemble de la durée de l'engagement au client.

  • Affichez à 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 par défaut.
  • Fournissez des actions de restauration 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

Section intitulée “Continuez à partir des 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’à En utilisant @capgo/native-purchases pour la capacité native en En utilisant @capgo/native-purchases, Capgo Pricing pour le flux de travail du produit dans Capgo Pricing, 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.