Pendahuluan
Modul Diskon memungkinkan Anda mengelola dan menerapkan diskon pada produk dan pesanan
Informasi lebih lanjut tentang antarmuka pengguna modul ini https://doc.oneentry.cloud/docs/category/discounts
🎯 Apa yang dilakukan modul ini?
Modul Diskon memungkinkan Anda mengambil diskon dan memvalidasi kode kupon — pengurangan persentase atau jumlah tetap, akumulasi poin bonus, dan diskon pribadi. Anda mendefinisikan aturan diskon di panel admin OneEntry; modul ini mengambilnya, memvalidasi kupon saat checkout, dan membaca saldo bonus dan riwayat pengguna saat ini.
SDK bersifat hanya baca: diskon dibuat dan dikonfigurasi di panel admin.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { Discounts } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Validasi kode kupon saat checkout dan baca hasilnya:
// Validate a coupon code entered by the customer.
const result = await Discounts.validateDiscountsCoupon("SUMMER20");
if (result.valid) {
console.log("Coupon applied:", result.coupon);
} else {
console.log("Invalid coupon:", result.error);
}
✨ Konsep Utama
Apa itu Diskon?
Diskon (IDiscountsEntity) adalah aturan harga yang mengurangi biaya produk atau pesanan:
type—DISCOUNT,BONUS, atauPERSONAL_DISCOUNTdiscountValue— bagaimana pengurangan dihitung:discountType(PERCENTatauFIXED_AMOUNT), nilai numerikvalue,applicability(TO_PRODUCTatauTO_ORDER), danmaxAmountopsionalidentifier— penanda unik untuk penyaringan dan referensistartDate/endDate— periode validitas opsionalconditions— aturan yang memutuskan kapan diskon berlaku (berdasarkan produk, kategori, jumlah keranjang, pengguna, …)
Struktur Diskon
{
id: 1,
identifier: 'summer_sale',
localizeInfos: {
title: 'Summer Sale'
},
type: 'DISCOUNT',
startDate: '2025-06-01T00:00:00.000Z',
endDate: '2025-08-31T23:59:59.999Z',
discountValue: {
applicability: 'TO_ORDER',
discountType: 'PERCENT',
value: 20,
maxAmount: 100
},
conditionLogic: 'AND',
conditions: [
{ type: 'MIN_CART_AMOUNT', value: '50' }
]
}
Jenis Diskon
Bidang type mengklasifikasikan diskon:
type | Deskripsi |
|---|---|
| DISCOUNT | Diskon standar yang diterapkan pada produk/pesanan |
| BONUS | Akumulasi poin bonus (loyalitas) |
| PERSONAL_DISCOUNT | Diskon yang ditargetkan pada pengguna atau kelompok tertentu |
Cara pengurangan dihitung terdapat di discountValue.discountType:
discountValue.discountType | Deskripsi | Contoh |
|---|---|---|
| PERCENT | Mengurangi harga dengan persentase | 20% diskon untuk semua barang musim panas |
| FIXED_AMOUNT | Mengurangi harga dengan jumlah tetap | $10 diskon untuk pesanan di atas $50 |
📋 Apa yang Perlu Anda Ketahui
Diskon dibuat di panel admin
Anda tidak dapat membuat diskon melalui SDK — diskon dibuat di panel admin OneEntry. Saat membuat satu, Anda memberikan Nama, Penanda (identifier), tipe (DISCOUNT, BONUS, atau PERSONAL_DISCOUNT), discountValue (PERCENT atau FIXED_AMOUNT ditambah nilai numerik value), periode validitas opsional (startDate / endDate), dan kondisi opsional.
Apa yang dilakukan modul ini
- ✅ Mengambil semua diskon —
getAllDiscounts() - ✅ Mengambil diskon tertentu berdasarkan penanda —
getDiscountByMarker() - ✅ Memvalidasi kode kupon saat checkout —
validateDiscountsCoupon() - ✅ Membaca saldo bonus dan riwayat pengguna saat ini
- ❌ Tidak membuat atau memodifikasi diskon (gunakan panel admin)
📊 Tabel Referensi Cepat
| Metode | Deskripsi |
|---|---|
| getAllDiscounts() | Mengambil semua diskon |
| getDiscountByMarker() | Mengambil satu diskon berdasarkan penanda |
| validateDiscountsCoupon() | Memvalidasi kode kupon diskon |
| getBonusBalance() | Mengambil saldo bonus pengguna saat ini |
| getBonusHistory() | Mengambil riwayat transaksi bonus pengguna saat ini |
❓ Pertanyaan Umum (FAQ)
Bagaimana cara menerapkan diskon saat checkout?
Ambil diskon dengan getDiscountByMarker() atau validasi kupon dengan validateDiscountsCoupon(), lalu gunakan nilai diskon yang dikembalikan untuk menghitung harga yang dikurangi.
Apakah diskon dapat memiliki tanggal kedaluwarsa?
Ya. Diskon dapat memiliki bidang startDate dan endDate opsional — periksa sebelum menampilkan diskon untuk memastikan diskon tersebut aktif saat ini.
Bagaimana cara menampilkan lencana diskon pada produk?
Ambil semua diskon dengan getAllDiscounts(), sesuaikan dengan produk berdasarkan logika bisnis Anda, dan render lencana dari localizeInfos.title dan discountValue.value.
Apa yang terjadi jika kode kupon tidak valid?
validateDiscountsCoupon() mengembalikan ICouponValidationResult — { valid: boolean; coupon?; error? }. Ketika kupon tidak ada atau telah kedaluwarsa, valid adalah false dan pesan error disediakan. Periksa result.valid dan tampilkan pesan yang sesuai.
🎓 Praktik Terbaik
- Cache diskon saat dimuat — mereka jarang berubah; hindari panggilan API berulang.
- Validasi kupon sebelum menerapkan — selalu panggil
validateDiscountsCoupon()sebelum menentukan harga pesanan. - Tangani diskon yang kedaluwarsa — periksa
endDatesebelum menampilkan diskon. - Gunakan penanda yang deskriptif —
summer_sale_2025, bukandiscount1. - Lokalize nama diskon — gunakan
localizeInfosuntuk dukungan multi-bahasa.
🔗 Dokumentasi Terkait
- Modul Produk - Mengelola produk yang diterapkan diskon
- Modul Pesanan - Prabaca dan buat pesanan dengan diskon diterapkan
- Modul Pembayaran - Proses pembayaran untuk pesanan yang didiskon
- Modul Lokalisasi - Nama diskon multi-bahasa