Panduan Langganan Jumlah Tetap
Contoh Layanan Video Streaming
Sebagai contoh, kami akan berpura-pura menjadi layanan streaming video yang ingin mengumpulkan pembayaran langganan dari pelanggan mereka.
- Pertama, kami perlu menentukan metode pembayaran yang cocok untuk pelanggan kami berdasarkan harga rata-rata. Karena harga untuk layanan dasar dan premium kami adalah sekitar IDR 100,000 hingga IDR 300,000, eWallet, Direct Debit, dan Kartu Kredit akan sesuai. Kami akan melanjutkan untuk mendaftarkan saluran-saluran ini dengan Xendit dan menentukan bahwa transaksi dapat untuk autodebit/ diinisiasi merchant.
- Sambil menunggu aktivasi saluran pembayaran, kami dapat melanjutkan pengujian. Untuk memulai pengujian, pertama-tama kami akan membuka Dasbor Xendit untuk membuat kunci API (Pengaturan > Pengembang > kunci API) dan menyediakan URL yang dihosting di server layanan streaming kami untuk menerima webhook pembayaran berulang dari Xendit (Pengaturan > Developer > Callbacks > RECURRING).
- Sekarang setelah persiapan selesai, kami dapat melihat use case kami dan mencocokkannya dengan fitur di API Xendit
- Pembayaran dilakukan sebulan sekali pada tanggal pertama kali pelanggan mendaftar
- Pelanggan harus melakukan satu pembayaran di muka
- Untuk memaksimalkan tingkat keberhasilan pembayaran, kami ingin melakukan percobaan ulang saat pelanggan memiliki saldo lagi
- Untuk memaksimalkan tingkat keberhasilan pembayaran, kami ingin memberi tahu pelanggan melalui Whatsapp saat pembayaran gagal
- Jika pelanggan gagal melakukan pembayaran selama sebulan, kami akan menghentikan layanan mereka
- Kami dapat memulai integrasi dengan menautkan aliran pembayaran ke API Xendit. API pertama adalah Buat Pelanggan tempat kami akan meneruskan informasi kontak pelanggan ke dalam rencana. Ini membantu untuk menyimpan informasi kontak dengan Xendit sehingga notifikasi Whatsapp dapat terkirim. Kami dapat memberikan informasi berdasarkan input pengguna selama pendaftaran atau membuat formulir bagi pengguna untuk memasukkan data.
POST https://api.xendit.co/customers
{
"reference_id": "test_reference_id",
"mobile_number": "+6218181818181",
"email": "honeybadgey@xendit.co",
"type" : "INDIVIDUAL",
"individual_detail": {
"given_names": "Honey Badgey"
}
}
- Untuk menyederhanakan integrasi kami, kami akan menggunakan UI Xendit untuk pembuatan metode pembayaran. API berikutnya yang perlu kita tekan adalah Buat Rencana.
POST https://api.xendit.co/recurring
{
"reference_id": "test_reference_id",
"customer_id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"recurring_action": "PAYMENT",
"currency": "IDR",
"amount": 100000,
"schedule": {
"reference_id": "test_reference_id",
"interval": "MONTH",
"interval_count": 1,
"anchor_date": "2022-02-15T16:23:52Z",
"retry_interval": "DAY",
"retry_interval_count": 3,
"total_retry": 3,
"failed_attempt_notifications": [1,3]
},
"immediate_action_type": "FULL_AMOUNT",
"notification_config": {
"recurring_created": ["WHATSAPP"],
"recurring_succeeded": ["WHATSAPP"],
"recurring_failed": ["WHATSAPP"]
},
"failed_cycle_action": "STOP",
"metadata": null,
"success_return_url": "https://www.xendit.co/successisthesumoffailures",
"failure_return_url": "https://www.xendit.co/failureisthemotherofsuccess"
}
Parameter untuk kebutuhan use case ini:
Parameter | Kebutuhan |
---|---|
interval, interval_count, anchor_date | Pembayaran dilakukan sebulan sekali pada tanggal pertama kali pelanggan mendaftar |
immediate_action_type | Pelanggan harus membayar di muka saat pertama kali |
retry_interval, retry_interval_count, total_retry | Untuk memaksimalkan tingkat keberhasilan, kami akan melakukan percobaan kembali saat pelanggan memiliki saldo lagi |
notification_config | Untuk memaksimalkan tingkat keberhasilan pembayaran, kami ingin memberi tahu pelanggan melalui Whatsapp saat pembayaran gagal |
failed_cycle_action | Jika pelanggan gagal melakukan pembayaran selama sebulan, kami akan menghentikan layanan mereka |
- Setelah permintaan dikirim, kami akan menerima respons HTTPS dengan objek rencana pembayaran berulang yang berstatus "REQUIRES_ACTION"
{
"id": "repl-239c16f4-866d-43e8-9341-7badafbc019f",
"reference_id": "test_reference_id",
"customer_id": "cust-239c16f4-866d-43e8-9341-7badafbc019f",
"recurring_action": "PAYMENT",
"recurring_cycle_count": 0,
"currency": "IDR",
"amount": 100000,
"status": "REQUIRES_ACTION",
"created": "2020-11-20T16:23:52Z",
"updated": "2020-11-20T16:23:52Z",
"schedule_id": "resc-239c16f4-866d-43e8-9341-7badafbc019f",
"schedule": {
"reference_id": "test_reference_id",
"interval": "MONTH",
"interval_count": 1,
"created": "2022-02-15T16:23:52Z",
"updated": "2022-02-15T16:23:52Z",
"anchor_date": "2022-02-15T16:23:52Z",
"retry_interval": "DAY",
"retry_interval_count": 3,
"total_retry": 3,
"failed_attempt_notifications": [1,3]
},
"immediate_action_type": "FULL_AMOUNT",
"notification_config": {
"recurring_created": ["WHATSAPP"],
"recurring_succeeded": ["WHATSAPP"],
"recurring_failed": ["WHATSAPP",],
"locale": "en"
},
"failed_cycle_action": "STOP",
"metadata": null,
"description": null,
"items": null,
"actions": [{
"action": "AUTH",
"url": "https://linking-dev.xendit.co/pali_e53e1ca6-3c09-4026-be2e-95ed3d4bb25b",
"url_type": "WEB",
"method": "GET"
}],
"success_return_url": "https://www.xendit.co/successisthesumoffailures",
"failure_return_url": "https://www.xendit.co/failureisthemotherofsuccess"
}
Status "REQUIRES_ACTION" menunjukkan bahwa kami perlu mengarahkan pelanggan ke actions.url
agar mereka dapat menyelesaikan penautan akun metode pembayaran. Setelah pelanggan kita arahkan, kita perlu menerima webhook dari Xendit untuk melanjutkan ke langkah berikutnya.
- Jika event webhook untuk
recurring.plan.activated
diterima, kami akan mencocokkannya denganreference_id
atauid
yang disimpan di database kami untuk memastikan bahwa ini adalah event untuk rencana yang baru saja kami buat. Setelah dikonfirmasi, kami dapat mulai memberikan layanan kepada pelanggan. Jikarecurring.plan.inactivated
diterima, kami dapat meminta pelanggan untuk mencoba kembali alur langganan. - Pada saat yang sama, event webhook
recurring.cycle.succeeded
untuk pembayaran segera akan diterima. Webhook ini berisi detail tentang pembayaran langsung yang dilakukan. - Terakhir, event webhook
recurring.cycle.created
juga akan diterima untuk tindakan pembayaran berulang bulan mendatang. Dalam kasus penggunaan ini, adalah opsional untuk menangani webhook ini. - Untuk bulan-bulan berikutnya, jika pembayaran berhasil, event webhook
recurring.cycle.succeeded
akan diterima. Jika event webhookrecurring.cycle.retrying
diterima, berarti pembayaran gagal tetapi Xendit akan tetap melanjutkan percobaan. Jika event webhookrecurring.cycle.failed
diterima, kami akan menghentikan layanan pelanggan karena semua upaya pembayaran termasuk percobaan ulang telah gagal.
Last Updated on 2023-05-24