Langsung ke konten

Paket Penagihan Komitmen Bulanan iOS

GitHub

Apple mendukung langganan yang ditagih bulanan tetapi mengikat pelanggan untuk masa 12 bulan. Jika StoreKit dan OS yang berjalan mendukung skema penagihan ini, @capgo/native-purchases menyediakan ketentuan harga, memungkinkan Anda memilih paket penagihan bulanan saat pembelian, dan mengembalikan metadata komitmen pada transaksi serta info perpanjangan.

Gunakan ini untuk penawaran langganan tahunan di mana pengguna lebih suka bayar bulanan, tapi Anda tetap ingin retensi dan prediktabilitas dari komitmen setahun.

  • Konfigurasikan paket billing bulanan dengan komitmen 12 bulan di App Store Connect atau di StoreKit Testing di Xcode.
  • Build aplikasi iOS dengan Xcode SDK yang berisi StoreKit pricingTerms dan billingPlanType.
  • Jalankan di versi iOS yang mendukung paket billing komitmen StoreKit.
  • Sediakan opsi billing standar untuk perangkat atau storefront yang tidak mengembalikan ketentuan harga komitmen.

Panggil getProducts() seperti biasa. Untuk produk langganan iOS yang didukung, setiap produk dapat mencakup 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',
);

Render nilai dari store alih-alih harga hardcoded:

KolomGunakan untuk
billingDisplayPriceJumlah penagihan berulang yang ditampilkan ke pengguna, misalnya biaya bulanan.
billingPeriodInterval penagihan untuk harga yang ditampilkan.
commitmentInfo.priceStringTotal harga komitmen yang diformat untuk storefront pengguna.
commitmentInfo.periodPeriode komitmen penuh.
subscriptionOffersPenawaran perkenalan atau promosi yang terikat pada paket harga.

Contoh teks paywall:

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

Saat pengguna memilih paket monthly commitment, kirimkan billingPlanType: 'monthly'.

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

Gunakan billingPlanType: 'upFront' hanya jika Anda perlu memilih paket penagihan standar di muka secara eksplisit. Jika tidak, billingPlanType StoreKit akan menggunakan perilaku pembelian default untuk produk tersebut.

Transaksi mencakup billing plan dan progress commitment saat StoreKit menyediakannya:

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

Info renewal dapat mencakup status commitment berikutnya:

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

Gunakan level teratas expirationDate dan isActive field tingkat atas untuk keputusan entitlement. Gunakan commitmentInfo.expirationDate untuk menjelaskan seluruh timeline commitment kepada customer.

  • Tampilkan harga tagihan berulang dan total harga komitmen sebelum pembelian.
  • Cantumkan durasi komitmen secara eksplisit di dekat tombol beli.
  • Gunakan product.title, product.priceString, pricingTerms[].billingDisplayPrice, dan pricingTerms[].commitmentInfo.priceString dari StoreKit, bukan dari harga yang di-hardcode.
  • Sediakan aksi restore purchases dan kelola langganan di paywall atau layar akun.

Lanjutkan dari iOS Monthly Commitment Billing Plans

Bagian berjudul “Lanjutkan dari iOS Monthly Commitment Billing Plans”

Jika Anda menggunakan Paket Penagihan Komitmen Bulanan iOS untuk merencanakan pembayaran dan pembelian, hubungkan dengan Menggunakan @capgo/native-purchases untuk kemampuan native saat menggunakan @capgo/native-purchases, Harga Capgo untuk alur kerja produk di halaman Harga Capgo, Sistem pembayaran untuk detail implementasi di sistem pembayaran, @capgo/native-purchases untuk detail implementasi di @capgo/native-purchases, dan Panduan Memulai untuk detail implementasi di Getting Started.