Zum Inhalt springen

Monatliche Verpflichtungsabrechnungspläne für iOS

GitHub

Apple unterstützt Abonnements, die monatlich abgerechnet werden, während der Kunde sich für eine längere 12-monatige Laufzeit verpflichtet. @capgo/native-purchases Wenn StoreKit und der laufende Betriebssystem diese Abrechnungsplan unterstützen,

die Preisbedingungen offenlegt, Ihnen ermöglicht, die monatliche Abrechnungsplan während der Kauf auszuwählen, und die Verpflichtungsdaten auf Transaktionen und Wiederholungsinfo zurückgibt.

  • Konfigurieren Sie die monatliche Abrechnung mit einem 12-Monats-Verpflichtungsabrechnungsplan in App Store Connect oder in StoreKit Testing in Xcode.
  • Bauen Sie die iOS-App mit einem Xcode SDK, der StoreKit enthält pricingTerms und billingPlanType.
  • Ausführen auf einem iOS-Version, die StoreKit-Verpflichtungsabrechnungspläne unterstützt.
  • Bewahren Sie eine Standardabrechnungsoption für Geräte oder Geschäftsstellen auf, die keine Verpflichtungspreisvereinbarungen zurückgeben.

Anruf getProducts() wie gewohnt. Für unterstützte iOS-Abonnementprodukte kann jeder Produktbezeichnung 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',
);

Statt der festen Preise die vom Laden bereitgestellten Werte rendern:

FeldVerwenden Sie es für
billingDisplayPriceDer wiederkehrende Abrechnungsbetrag, der dem Benutzer angezeigt wird, z. B. der monatliche Betrag.
billingPeriodDie Abrechnungsperiode für den angezeigten Abrechnungspreis.
commitmentInfo.priceStringDer Gesamtauftragspreis im Format für den Benutzer des Ladens.
commitmentInfo.periodDie gesamte Verpflichtungszeit.
subscriptionOffersEinführende oder werbliche Angebote, die der Preis- und Zahlungsbedingung beigefügt sind.

Beispiel-Zutrittsschranke:

function commitmentLabel(term: NonNullable<typeof monthlyCommitment>) {
const total = term.commitmentInfo?.priceString;
return total
? `${term.billingDisplayPrice} billed monthly, ${total} total commitment`
: term.billingDisplayPrice;
}

Wenn der Benutzer das monatliche Zusage-Beitrittsangebot auswählt, übermitteln Sie billingPlanType: 'monthly'.

const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.example.app.premium.yearly',
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
appAccountToken: userStoreUuid,
});

Verwenden Sie billingPlanType: 'upFront' Verwenden Sie nur dann, wenn Sie explizit das Standard-Vorauszahlungs-Abrechnungsangebot auswählen müssen. Wenn Sie dies billingPlanTypeStoreKit verwendet sein Standardkaufverhalten für das Produkt.

Transaktionen umfassen das Abrechnungsplan und die Zusage-Progress, wenn StoreKit es liefert:

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

Die Erneuerungs-Info kann die nächste Zusage-Zustand umfassen:

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

Verwenden Sie die obersten Ebene expirationDate und isActive Felder für Entscheidungen über die Berechtigung. Verwenden Sie commitmentInfo.expirationDate um die vollständige Zusage-Zeitlinie dem Kunden zu erklären.

  • Zeigen Sie sowohl den wiederkehrenden Abrechnungspreis als auch den Gesamtaufwandpreis vor dem Kauf an.
  • Machen Sie die Laufzeit des Engagements explizit in der Nähe des Kaufknopfes.
  • Verwenden Sie , und von StoreKit anstatt der festen Preise. product.title, product.priceString, pricingTerms[].billingDisplayPriceBieten Sie Wiederherstellungskauf und Verwalten-Abonnement-Aktionen auf der Zahlungsanzeige oder dem Konto-Bildschirm an. pricingTerms[].commitmentInfo.priceString Zugehörige Anleitungen
  • Abschnitt mit dem Titel “Zugehörige Anleitungen”
Konfigurieren Sie die iOS-Sandbox-Testung

Wenn Sie " iOS-Monatsverpflichtungsbilligungspläne zum Planen von Zahlungen und Kaufleistungen verwenden, verbinden Sie es mit Verwenden Sie @capgo/native-purchases für die native Fähigkeit in Verwenden Sie @capgo/native-purchases, Capgo-Preise für den Produktworkflow in Capgo-Preise, Zahlungssystem für die Implementierungsdetail in Zahlungssystem, @capgo/native-purchases für die Implementierungsdetails in @capgo/native-purchases, und Anleitung zum Starten für die Implementierungsdetails in Anleitung zum Starten.