Lewati ke konten utama

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:

  • typeDISCOUNT, BONUS, atau PERSONAL_DISCOUNT
  • discountValue — bagaimana pengurangan dihitung: discountType (PERCENT atau FIXED_AMOUNT), nilai numerik value, applicability (TO_PRODUCT atau TO_ORDER), dan maxAmount opsional
  • identifier — penanda unik untuk penyaringan dan referensi
  • startDate / endDate — periode validitas opsional
  • conditions — 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:

typeDeskripsi
DISCOUNTDiskon standar yang diterapkan pada produk/pesanan
BONUSAkumulasi poin bonus (loyalitas)
PERSONAL_DISCOUNTDiskon yang ditargetkan pada pengguna atau kelompok tertentu

Cara pengurangan dihitung terdapat di discountValue.discountType:

discountValue.discountTypeDeskripsiContoh
PERCENTMengurangi harga dengan persentase20% diskon untuk semua barang musim panas
FIXED_AMOUNTMengurangi 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

MetodeDeskripsi
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 endDate sebelum menampilkan diskon.
  • Gunakan penanda yang deskriptifsummer_sale_2025, bukan discount1.
  • Lokalize nama diskon — gunakan localizeInfos untuk dukungan multi-bahasa.

🔗 Dokumentasi Terkait