Event dan payload webhook

Event mencatat perubahan pada resource. Valcentra mengirim event ke endpoint webhook yang sesuai. Untuk integrasi pembayaran pertama, mulai dengan event payment.paid dan tetap tangani event berulang dengan aman.

Envelope event

FieldTipeFungsi
idStringID event stabil untuk deduplikasi penerimaan.
typeStringJenis perubahan, seperti payment.paid.
created_atString waktu UTCWaktu event dibuat, bukan waktu request webhook ditandatangani.
livemodeBooleanfalse untuk TEST.
data.objectObjekSnapshot resource yang terkait dengan event.

Contoh JSON lengkap ada pada panduan webhook. Verifikasi signature sebelum menggunakan field apa pun.

Snapshot menggambarkan resource saat event dicatat; bukan jaminan bahwa itulah keadaan terbaru saat receiver menerima request. Jika perlu memastikan kondisi sekarang, ambil payment melalui API dari backend.

Event pembayaran

Tipe eventPerubahanTindakan integrasi yang lazim
payment.createdPayment dibuat.Hubungkan dengan pesanan, tetapi jangan tandai lunas.
payment.pendingPembayaran menunggu hasil.Tampilkan kondisi menunggu tanpa menurunkan status akhir yang sudah tersimpan.
payment.paidPembayaran berhasil.Cocokkan data dan proses pemenuhan pesanan sekali.
payment.failedPembayaran gagal.Jangan penuhi pesanan; tampilkan hasil gagal.
payment.expiredPembayaran kedaluwarsa.Jangan gunakan payment sebagai pembayaran aktif.
payment.cancelledPembayaran dibatalkan.Hentikan alur pembayaran untuk payment tersebut.

Untuk event payment, data.object memiliki id, amount, currency, merchant_reference, status, livemode, created_at, dan updated_at. channel, expires_at, dan paid_at bersifat opsional dalam schema. amount berupa string; checkout_url tidak termasuk snapshot event.

Event refund

Event refund memakai nama refund.requested, bukan refund.created.

EventStatus resource
refund.requestedpending
refund.completedcompleted
refund.rejectedrejected
refund.failedfailed

Snapshot refund memiliki id, payment_id, amount, currency, status, created_at, dan updated_at. Refund berbeda dari pembatalan payment; event ini tidak mengubah status payment menjadi cancelled.

Event withdrawal

Event withdrawal memakai nama withdrawal.requested, bukan withdrawal.created.

EventStatus resource
withdrawal.requestedpending
withdrawal.approvedapproved
withdrawal.rejectedrejected
withdrawal.completedcompleted
withdrawal.failedfailed

Snapshot withdrawal memiliki id, amount, currency, status, created_at, dan updated_at. Withdrawal adalah penarikan dana, bukan pembayaran pelanggan atau refund.

Event bukan daftar endpoint

Adanya event refund dan withdrawal dalam kontrak tidak berarti API publik menyediakan endpoint untuk membuatnya. Ikuti hanya endpoint yang tercantum dalam API Reference dan alur aplikasi yang tersedia. Produksi tetap dinonaktifkan.

Event, resource, dan delivery berbeda

  • Payment ID: satu pembayaran.
  • Event ID: satu perubahan. Beberapa event dapat menunjuk payment yang sama.
  • Delivery: pengiriman event ke satu endpoint, termasuk percobaan dan hasil pengirimannya.

Gunakan event.id dari body terverifikasi untuk deduplikasi, bukan eventKey internal atau ID delivery dashboard. Pengiriman ulang mempertahankan ID dan snapshot event yang sama.

Urutan penerimaan tidak dijamin. Jangan menentukan urutan bisnis hanya dari urutan request masuk. Simpan status akhir dengan aman dan baca kondisi payment terbaru jika ada pertentangan.

Lanjutkan ke: webhook untuk pola receiver, atau API Reference ↗ untuk schema event lengkap.

On this page