KiPaydocs
Dokumentasi/Panduan

PANDUAN

Jaga status checkout dan order tetap sinkron

Webhook menggerakkan backend. Polling membantu checkout menampilkan perubahan tanpa menjadikan browser sebagai sumber kebenaran.

POLLING DAN WEBHOOKPolling memperbarui layar. Webhook menjaga keputusan backend tetap benar.
Polling dan webhook sebagai dua clockTimeline browser melakukan polling untuk memperbarui tampilan. Timeline backend menerima webhook ketika jaringan mengonfirmasi pembayaran, memverifikasi status, dan memenuhi order satu kali.Clock browsermemperbarui tampilan pelangganpendingpendingpendingpendingpaidGET status berkala selama checkout terbukaClock backendmengendalikan pekerjaan finaltransaksi disimpanwebhook diterimaAPI terverifikasiPENUHI SEKALIstatus paid yang samaAturan keputusanHanya verifikasi backend yang mengizinkan pemenuhan order.webhook adalah sinyal, bukan bukti
01

Endpoint

GET/api/pay/{apiKey}/transactions/{trxId}

Endpoint ini mengembalikan detail transaksi terbaru. Hosted payment page KiPay saat ini melakukan polling setiap 3 detik hingga status tidak lagi pending.

02

Polling untuk pengalaman checkout

poll-status.ts
TypeScript
const interval = window.setInterval(async () => {
  const response = await fetch(statusUrl);
  const transaction = await response.json();

  renderStatus(transaction.status);
  if (transaction.status !== 'pending') {
    window.clearInterval(interval);
  }
}, 3000);
Polling bukan sinyal untuk memenuhi order

Browser dapat ditutup, dimanipulasi, atau kehilangan koneksi. Backend tetap harus menunggu webhook dan memverifikasi status secara server-to-server sebelum memenuhi order.

03

Verifikasi dari backend

verify-payment.ts
TypeScript
const transaction = await kipay.getTransaction(transactionId);

if (transaction.status === 'paid') {
  await fulfillOrderOnce(orderId, transaction.trx_id);
}
04

Tangani 404 tanpa membocorkan data

Response 404 digunakan ketika project tidak ditemukan atau transaksi bukan milik project tersebut. Tampilkan pesan umum kepada pelanggan, dan simpan detail diagnosis hanya di log backend yang aman.