Tính ngay trên trình duyệt (Web Crypto) — secret KHÔNG gửi đi đâu. Tự sinh timestamp + nonce mỗi lần bấm. keyId/secret tự điền từ merchant đang đăng nhập (sửa được).
Chuỗi ký (payload)
X-Signature (đầy đủ)
Headers
Lệnh curl
Nguồn nhận webhook
Đăng ký lại chỉ cấu hình URL — KHÔNG sinh webhook. Bấm Gửi webhook test để BE bắn 1 webhook mẫu về (hiện ở "Webhook đã nhận" bên dưới), hoặc đợi giao dịch thật.
BE sẽ verify URL (gọi challenge — server bạn phải public & echo lại nonce). Callback đi thẳng tới server bạn (không hiện ở console này — xem ở log server bạn). Secret trả về chỉ 1 lần để verify chữ ký.
Webhook đã nhận
Tự làm mới 5s. Verify chữ ký + dedupe theo X-Vinx-Delivery-Id. BE bắn webhook ở MỌI status (payment.pending→detected→confirming→success / payout.locked→signing→broadcast→confirming→success, kèm *.failed/expired) — không chỉ trạng thái cuối.