API Penggunaan Reward Stempel (v2)
API Penggunaan Reward Stempel menandai reward (minuman gratis, diskon, dll.) sebagai telah digunakan setelah semua stempel terkumpul.
Setelah digunakan, stempel tidak dapat digunakan kembali dan pengguna harus mendapatkan stempel baru untuk memulai siklus berikutnya.
API ini digunakan dalam sistem reward berbasis kunjungan atau pembelian.
API ini tersedia mulai dari paket Personal ke atas.
/api/stamp/v2/redeem
{
"stampIdx": 394,
"onsiteToken": "QsBkV0ryiCkxiV4KUNJBSWQcR8MzSlvez4ntLh2Tt2M",
"processStoreIdx": 22
}
Request Parameters
- stampIdx integer required
- Stamp IDX.
- onsiteToken string
-
Token pertukaran berjangka pendek. v2 tidak menerima kata sandi teks biasa
(
onsitePwd).
Jika sumber daya memilikionsiteYn = Y, kirimonsiteTokendari respons API validasi apa adanya.
Idempotency-Keywajib untuk permintaan yang memakai token. Percobaan ulang dengan kunci yang sama memutar ulang hasil pertama; memakai token yang sama dengan kunci berbeda ditolak dengan400(kode kesalahan1228).
Jika toko pemroses ditentukan saat validasi, permintaan ini harus memakai toko yang sama. - processStoreIdx integer
-
IDX toko tempat permintaan ini benar-benar diproses. Jika dikirim, server memverifikasi kepemilikan organisasi, status aktif, dan izin sebelum mencatatnya dalam riwayat pemrosesan.
Cabang pemrosesan tidak diambil dari permintaan; server menentukannya dari toko ini. Nilai ini berbeda dari toko penerbit (storeIdx).
{
"code": 0,
"message": "",
"result": null
}
Response Parameters
- code integer
- Kode respons: 0 = Berhasil, nilai lainnya = Error
- message string
- Pesan respons. Jika kode bukan 0, pesan error akan dikembalikan.
- result null
Validasi parameter numerik
Jika parameter numerik menerima nilai bukan angka, atau angka di luar rentang yang dapat diproses server, permintaan langsung ditolak dengan 400 (kode kesalahan 653).
Dalam kasus itu data stempel dan riwayat perolehan sama sekali tidak berubah, dan tidak ada catatan event maupun pengiriman Webhook. Jika Anda menerima respons gagal, tidak ada yang tersimpan.
Menentukan toko pemroses
| Parameter | Arti | Deskripsi |
|---|---|---|
processStoreIdx |
Toko pemroses | Toko tempat permintaan ini benar-benar diproses. Opsional; jika dikirim, server memverifikasi kepemilikan organisasi, status aktif, dan izin sebelum mencatatnya dalam riwayat pemrosesan. |
Cabang pemroses tidak diterima dari permintaan. Server menentukannya dari toko yang Anda tentukan dan mencatatnya.
Jika cakupan penggunaan adalah BRANCH, permintaan hanya diproses bila cabang toko pemroses yang terverifikasi sama dengan cabang penggunaan,
atau bila Anda melakukan autentikasi dengan kata sandi di tempat cabang tersebut. Tanpa keduanya, permintaan ditolak.
Parameter yang tidak dapat digunakan — branchIdx (cabang penerbit),
storeIdx (toko penerbit), useScope (cakupan penggunaan), dan
useBranchIdx (cabang penggunaan) adalah kebijakan penerbitan yang sudah tersimpan dan tidak dapat diubah melalui API ini.
Jika dikirim, akan ditolak dengan 400 (kode kesalahan 1227).
Idempotency-Key
Untuk mencoba ulang dengan aman saat respons hilang karena kesalahan jaringan, kirim nilai unik per permintaan
pada header Idempotency-Key. Anda juga dapat mengirimnya sebagai requestId di body;
jika keduanya dikirim dengan nilai berbeda, permintaan ditolak.
Format yang diizinkan adalah 8–64 karakter berupa huruf, angka, dan . _ : -.
Jika Anda mengirim ulang permintaan yang sama dengan key yang sama, hasil pertama dikembalikan tanpa diproses ulang. Tidak ada yang diproses dua kali dan webhook tidak dikirim ulang.
Gunakan key yang sama hanya untuk percobaan ulang operasi logis yang sama.
Selalu gunakan key baru untuk operasi yang berbeda.
Menggunakan key yang sama dengan isi permintaan lain atau untuk operasi lain dapat ditolak dengan 409.
Tahap penggunaan reward
Ini adalah tahap akhir dari sistem stempel.
- Memastikan akumulasi telah selesai
- Memproses pemberian reward
- Menandai stempel sebagai sudah digunakan
Ini bukan sekadar perubahan status, tetapi tahap finalisasi hasil event.
Akhir siklus stempel
API ini merupakan tahap terakhir dalam siklus stempel.
Bagi pengguna, ini adalah momen menerima reward. Bagi developer, ini menandai akhir satu siklus dan awal siklus berikutnya.
Setelah memanggil Redeem, panggil Create untuk menjaga keterlibatan pengguna.
Siklus lengkap
Create→ Terbitkan stempelAdd Stamp→ Tambahkan stempelValidate→ Periksa statusRedeem→ Gunakan rewardCreate→ Mulai siklus baru
Token verifikasi di toko (onsiteToken)
v2 tidak menerima kata sandi toko dalam bentuk teks biasa (onsitePwd).
Kirim onsiteToken yang dikembalikan oleh API Validasi tanpa perubahan.
Mengirim onsitePwd saja atau bersama onsiteToken akan ditolak dengan
400 (kode kesalahan 1227).
Idempotency-Key wajib untuk permintaan yang menggunakan token.
Percobaan ulang dengan Idempotency-Key yang sama akan mengembalikan hasil pemrosesan awal.
Menggunakan kembali token yang sama dengan Idempotency-Key berbeda akan ditolak dengan
400 (kode kesalahan 1228).
Toko yang digunakan saat validasi harus sama dengan toko tempat pemrosesan dilakukan.
Jika processStoreIdx ditentukan saat validasi, permintaan ini harus menggunakan toko yang sama.
Token yang divalidasi tanpa toko tidak dapat dikaitkan dengan toko setelahnya.
Token yang kedaluwarsa, dimanipulasi, sudah digunakan, atau tidak cocok dengan pengikatannya semuanya mengembalikan 1228.
Penyebab tersebut sengaja tidak dibedakan agar pihak lain tidak dapat menebak status internal menggunakan token lain.
Token tidak diperlukan untuk sumber daya yang tidak menggunakan verifikasi di toko (onsiteYn = N).
v1 tetap menerima onsitePwd dalam bentuk teks biasa.
Alur otomatis setelah penggunaan
Anda dapat mengotomatisasi proses lanjutan saat reward digunakan.
- Panggil API pembuatan kupon untuk langsung menerbitkan reward
- Buat stempel baru untuk memulai siklus berikutnya
Otomatisasi ini memungkinkan seluruh siklus reward berjalan tanpa intervensi manual.
Poin penting dalam operasional
API ini bukan sekadar fitur, tetapi titik di mana hasil bisnis ditentukan.
- Kesalahan penanganan dapat menyebabkan reward ganda
- Potensi klaim atau komplain dari pengguna
Pastikan alur validasi → penggunaan, kontrol transaksi di sisi server, dan pencatatan audit log diterapkan.