PAYWISE
id
← Semua artikel

Developer

Menangani pembayaran kedaluwarsa dan status pending yang terlalu lama

Berapa lama pembayaran QRIS dan USDT terbuka, apa yang dilakukan saat kedaluwarsa, kenapa percobaan ulang butuh merchant_reference baru, dan cara menangani pembayaran yang terlambat.

Terbit 11 Oktober 2026 3 menit baca

Tersedia juga dalam: English, 简体中文

Menangani pembayaran kedaluwarsa dan status pending yang terlalu lama

Setiap pembayaran PAYWISE dimulai dengan status pending dan berakhir di satu status akhir: paid, expired, atau failed. Biasanya ini berlangsung cepat. Tapi pelanggan bisa terdistraksi, baterai HP habis, dan jaringan lambat. Panduan ini menjelaskan apa yang perlu dilakukan saat pembayaran kedaluwarsa, atau terlihat pending terlalu lama.

Setiap pembayaran dimulai dari pending dan berakhir paid, expired, atau failed, masing-masing dengan webhook-nya

Berapa lama pembayaran terbuka

Metode Bisa dibayar selama Diatur dengan
QRIS 20 menit (bawaan) expires_in: 60 sampai 1.200 detik
USDT (BEP20) 60 menit tetap

Waktu pastinya ada di expires_at pada respons API. Tampilkan hitungan mundur di halaman Anda (halaman pembayaran PAYWISE sudah melakukannya), supaya pelanggan tahu sisa waktunya.

Setelah waktu itu habis, PAYWISE mengecek pembayaran sekali lagi lalu menandainya expired. Anda menerima webhook payment.expired kalau Anda berlangganan event itu.

"Pending" lama: mana yang wajar?

  • QRIS: pembayaran yang masih pending beberapa menit setelah pelanggan bilang sudah bayar itu tidak biasa. Buka di dashboard lalu tekan Cek status sekarang: PAYWISE menanyakan langsung ke penyedia pembayaran.
  • USDT: pembayaran blockchain butuh konfirmasi, jadi jeda beberapa menit antara mengirim dan paid itu wajar.

Kalau server Anda mengecek berkala, pakai GET /api/v1/transactions/{reference}, tapi jangan setiap detik: API membatasi 60 request per menit per key. Menunggu webhook adalah cara yang lebih baik. Lihat callback vs redirect.

Saat pembayaran kedaluwarsa

  1. Jangan kirim barang. Tidak ada uang yang masuk.
  2. Simpan pesanannya, tandai sebagai "pembayaran kedaluwarsa", jangan dihapus.
  3. Tawarkan pembayaran baru dengan tombol yang jelas seperti "Bayar lagi".

Percobaan ulang butuh merchant_reference baru

merchant_reference juga berfungsi sebagai idempotency key. Kalau Anda membuat pembayaran lagi dengan referensi dan nominal yang sama, PAYWISE mengembalikan pembayaran yang lama, yang sudah kedaluwarsa. Untuk percobaan baru, pakai referensi baru:

$attempt = $order->payment_attempts + 1;

$payment = $paywise->createTransaction([
    'merchant_reference' => 'ORDER-' . $order->id . '-' . $attempt, // ORDER-1042-2
    'amount'             => $order->total,
    'payment_method'     => 'QRIS',
    'customer_id'        => (string) $order->user_id,
]);

Simpan setiap reference PAYWISE dari pesanan itu, supaya webhook dari percobaan mana pun tetap menemukan pesanan yang benar. Baca juga tentang idempotency.

Pembayaran terlambat: saat "expired" berubah jadi "paid"

Kadang pelanggan membayar di detik terakhir, atau konfirmasi dari jaringan pembayaran datang terlambat. Kalau penyedia memastikan pelanggan benar-benar sudah membayar, PAYWISE menandai pembayaran itu paid, walaupun sebelumnya sudah expired, lalu mengirim payment.paid. Untuk USDT, deposit yang datang setelah 60 menit tetap dikonfirmasi.

Jadi toko Anda harus siap menerima payment.paid untuk pesanan yang sudah dianggap kedaluwarsa:

  • Kalau pesanan masih bisa dipenuhi, proses pesanannya.
  • Kalau tidak bisa (misalnya pelanggan sudah membayar lagi lewat percobaan baru, atau barangnya habis), tandai untuk refund yang Anda lakukan sendiri. Lihat refund dan komplain pelanggan.

Pembayaran USDT yang kurang dari nominal pasti tidak ditandai paid. Kalau pelanggan bilang sudah mengirim USDT tapi pembayarannya kedaluwarsa, buka tiket di menu Bantuan dengan nomor referensi PAYWISE.

Checklist

  • Tampilkan hitungan mundur, dan tombol "Bayar lagi" setelah kedaluwarsa.
  • Pakai merchant_reference baru untuk setiap percobaan baru.
  • Tangani payment.expired dan payment.failed, bukan hanya payment.paid.
  • Terima payment.paid yang datang setelah kedaluwarsa, lalu putuskan: proses atau refund.
  • Untuk pembayaran yang lama pending, pakai Cek status sekarang sebelum menghubungi pelanggan.
  • Uji ketiga hasil di sandbox.

Artikel lainnya

Mulai dengan key sandbox hari ini.

Daftar, buat key sandbox, dan kirim transaksi pertama dari playground dalam beberapa menit.