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.