Uji integrasi di sandbox

Sandbox adalah lingkungan TEST untuk membuktikan bahwa aplikasi Anda menangani pembayaran dan kegagalan dengan benar. Jangan berhenti setelah satu simulasi paid berhasil: integrasi juga harus aman saat respons hilang atau event datang berulang.

Siapkan pengujian yang terisolasi

  • Gunakan project dan API key TEST.
  • Gunakan pesanan serta data pelanggan sintetis.
  • Pisahkan penyimpanan pesanan uji dari sistem pemenuhan pesanan nyata.
  • Daftarkan webhook TEST sebelum membuat payment agar event baru punya tujuan pengiriman.
  • Pastikan worker delivery dan receiver yang digunakan pada lingkungan uji berjalan.

Pembayaran produksi dinonaktifkan. Pengujian ini tidak membuktikan provider live, settlement uang nyata, atau kesiapan produksi.

Menjalankan simulator API

Buat payment baru seperti pada Quickstart, lalu pilih skenario:

Contoh skenario gagal, gunakan payment TEST baru
curl --include --request POST \
  "$VALCENTRA_API_URL/v1/test/payments/$PAYMENT_ID/simulate" \
  --header "Authorization: Bearer $TEST_API_KEY" \
  --header "Idempotency-Key: order-book-1002-simulate-failed" \
  --header "Content-Type: application/json" \
  --data '{"scenario":"failed"}'

Gunakan payment baru yang belum memiliki attempt checkout untuk setiap skenario. Misalnya, gunakan order-book-1002 serta key create baru untuk kasus failed. Jangan mencoba memindahkan payment paid kembali ke pending.

Header wajib bukan jaminan deduplikasi

Simulator membutuhkan Idempotency-Key, tetapi tidak mendeduplikasi percobaan. Jangan otomatis mengulang request simulasi setelah timeout. Periksa payment terlebih dahulu.

Skenario yang diterima

scenarioTujuan pengujian
paidHasil berhasil dan pemrosesan pesanan uji sekali.
pendingAplikasi tetap menunggu, tidak memenuhi pesanan.
failedHasil gagal tidak dianggap lunas.
expiredPayment kedaluwarsa tidak diteruskan sebagai pembayaran aktif.
cancelledPembatalan tidak memicu pemenuhan.
delayed_webhookNotifikasi hasil dari simulator tertunda; aplikasi tidak menganggap pending sebagai gagal atau paid.
repeated_webhookNotifikasi simulator berulang tidak menyebabkan efek bisnis ganda.

Untuk skenario tertunda, respons simulasi dapat masih menunjukkan pending. Ambil status setelah notifikasi diproses; jangan menganggap satu respons awal sebagai hasil akhir.

Skenario repeated_webhook menguji notifikasi simulator yang berulang. Sistem dapat mendeduplikasi sebelum membuat delivery merchant; skenario ini tidak menjamin receiver menerima POST yang sama dua kali. Uji deduplikasi receiver Anda juga secara terpisah.

Checklist sebelum integrasi dianggap siap di TEST

PengujianBukti yang perlu Anda lihat
Create berhasilHTTP 201, ID tersimpan, checkout URL tersedia, livemode: false.
Retry create yang samaPayment ID tetap sama ketika API key, body, dan idempotency key sama.
Key sama, body berbedaHTTP 409 idempotency_conflict, tidak membuat payment baru.
CheckoutJumlah benar, key tidak muncul di browser, return tidak otomatis melunasi pesanan.
PaidStatus API paid dan pesanan uji diperbarui tepat sekali.
Pending / failed / expired / cancelledTidak ada pemenuhan pesanan.
Signature salahReceiver menolak tanpa mengubah pesanan.
Timestamp di luar 5 menitReceiver menolak request replay.
Event diterima dua kaliInbox tidak memiliki duplikasi dan efek bisnis hanya terjadi sekali.
Dua event bersamaanConstraint unik/transaksi mencegah pemrosesan ganda.
Event lama datang belakanganStatus akhir tidak diturunkan menjadi pending.
Penyimpanan receiver gagalReceiver tidak membalas 2xx sebelum event tersimpan aman.
Worker merchant gagal setelah penerimaanEvent persisten dapat diproses ulang tanpa pemenuhan ganda.
Receiver timeout / non-2xxDelivery gagal dapat diperiksa dan dipulihkan setelah receiver diperbaiki.

Untuk menguji POST berulang dan event tidak berurutan, buat fixture event sintetis di pengujian receiver Anda. Tandatangani raw bytes dengan secret uji khusus, timestamp saat ini, dan algoritma pada panduan HMAC. Jangan menyimpan request webhook nyata atau credential layanan untuk fixture.

Periksa dari dua sisi

Di Valcentra: lihat status payment, event/delivery yang tersedia, jumlah percobaan, dan hasil pengiriman.

Di aplikasi Anda: lihat inbox event, hasil worker, status pesanan, dan pengenal job pemenuhan. Delivery sukses tidak cukup jika aplikasi Anda kehilangan event setelah membalas 2xx.

Catat ID fixture, status yang diharapkan, dan hasil yang Anda lihat. Jangan memasukkan key, signature lengkap, atau payload provider ke laporan pengujian.

Lanjutkan ke: retry webhook untuk pemulihan, atau error API untuk masalah request.

On this page