Tài liệu nhà phát triển

Gửi lại thông báo thanh toán đã xác nhận

Gửi lại cho CONFIRMED / COMPLETED sau khi sửa bên nhận. Vào hàng đợi chưa phải đã gửi đến.

POST /api/v1/webhooks/resend

Yêu cầu xác thực

Bao gồm X-Bolt-Key, X-Bolt-Timestamp và X-Bolt-Signature. Sử dụng timestamp mili giây hiện tại và ký nó cùng với nội dung yêu cầu chính xác.

Thời điểm gửi lại

Sử dụng điểm cuối này khi hệ thống của bạn cần một thông báo khác về khoản thanh toán đã được xác nhận. Việc gửi lại không thu tiền thanh toán, điều chỉnh chuyển khoản hoặc tạo đơn hàng.

Chỉ có thể gửi lại các đơn đặt hàng CONFIRMED hoặc COMPLETED của riêng bạn. PENDING, PAID và các tiểu bang khác không đủ điều kiện.

Cần có cấu hình Webhook khả dụng, đang hoạt động. Nếu không có tác vụ phân phối nào được tiếp tục, điểm cuối sẽ trả về lỗi thay vì QUEUED.

01. Tham số yêu cầu

application/json
externalOrderIdBắt buộc
String

Gửi cho người bán externalOrderId được cung cấp khi tạo đơn hàng, không phải orderToken. Bạn chỉ có thể gửi lại thông báo cho các đơn hàng thuộc khóa API hiện tại.

Giá trị mẫu

{"externalOrderId": "INV-20260209-99281"}

Chuỗi bắt buộc, 6–64 ký tự. Cho phép sử dụng chữ cái, chữ số, dấu gạch dưới (_) và dấu gạch ngang (-).

Body

02. Các trường phản hồi (data)

application/json
notifyUrlString
Địa chỉ gọi lại được ghi trên đơn hàng; có thể là null. Việc giao hàng ưu tiên địa chỉ này và quay lại cấu hình Webhook được liên kết cho các đơn hàng cũ không có địa chỉ.
externalOrderIdString
Đơn đặt hàng ID của người bán được liên kết với lần gửi lại này, khớp với yêu cầu externalOrderId.
triggerTypeEnum
Luôn luôn có MANUAL trong phản hồi của điểm cuối này, biểu thị việc gửi lại do người bán yêu cầu. Đây không phải là loại hình thanh toán.
statusEnum
Gửi lại trạng thái yêu cầu. QUEUED có nghĩa là tác vụ đã được duy trì; đó không phải là trạng thái thanh toán hay bằng chứng giao hàng.

QUEUED nghĩa là tác vụ đã được lưu để gửi bất đồng bộ, không có nghĩa thông báo đã đến nơi. Kiểm tra nhật ký gửi trong bảng điều khiển người bán và phản hồi HTTP 2xx từ bên nhận.

🚀
Xử lý người nhận

Xác minh X-Bolt-Webhook-Timestamp và X-Bolt-Webhook-Signature, sau đó loại bỏ trùng lặp bằng eventId hoặc đơn đặt hàng của người bán ID trước khi thực hiện. Trả về HTTP 2xx cho các thông báo trùng lặp đã được xử lý thành công.

  • triggerType: MANUAL xuất hiện trong bản ghi phản hồi gửi lại và bản ghi gửi trang tổng quan. Nội dung yêu cầu Webhook hiện tại không chứa triggerType; không phụ thuộc vào nó để xác định việc gửi lại.
  • Mỗi cuộc gọi thành công sẽ tạo ra một nhiệm vụ phân phối độc lập. Yêu cầu lặp đi lặp lại có thể gửi nhiều thông báo. Kiểm tra nhật ký giao hàng trước khi gửi lại. Các bản phát lại giữ lại eventId logic.
  • Điểm cuối này sử dụng lại đích gọi lại của đơn đặt hàng và không chấp nhận URL mới. Việc thay đổi mặc định của trang tổng quan không thay thế địa chỉ đã được lưu trên đơn hàng.
Safe

Các lỗi thường gặp

Đây là những trường hợp phổ biến. Sử dụng trạng thái HTTP thực tế và mã/thông báo phản hồi để chẩn đoán lỗi. Phản hồi lỗi không phải là kết quả thanh toán.

  • 401: Kiểm tra Khóa API, chữ ký nội dung thô và timestamp mili giây hiện tại (trong vòng 5 phút tính từ đồng hồ máy chủ).
  • 404: Đơn hàng bị thiếu, thuộc về người bán khác hoặc nằm ngoài lịch sử mà gói của bạn cho phép.
  • 400: Đơn hàng không phải là CONFIRMED / COMPLETED hoặc cấu hình Webhook có sẵn và thiếu tác vụ phân phối được lưu trữ thành công.
resend / cURL
# Run against your account only when ready; this sends an API request.
: "${BOLTUTIL_API_KEY:?Set your complete API Key}"
: "${BOLTUTIL_WEBHOOK_SECRET:?Set your Webhook secret}"
timestamp=$(python3 -c 'import time; print(int(time.time()*1000))')
body='{"externalOrderId":"INV-20260209-99281"}'
signature=$(printf '%s.%s' "$timestamp" "$body" | openssl dgst -sha256 -hmac "$BOLTUTIL_WEBHOOK_SECRET" | awk '{print $NF}')

curl --request POST "https://api.boltutil.com/api/v1/webhooks/resend" \
  --header 'Content-Type: application/json' \
  --header "X-Bolt-Key: $BOLTUTIL_API_KEY" \
  --header "X-Bolt-Timestamp: $timestamp" \
  --header "X-Bolt-Signature: $signature" \
  --data-binary "$body"

Địa chỉ, băm giao dịch và đơn đặt hàng là ví dụ. Thay thế chúng bằng bài kiểm tra data của riêng bạn.

Base URL

PROD
https://api.boltutil.com