Merchant API: POST /api/rechargews (MD5 Sign) REST API: Bearer USER_TOKEN Webhook Callback & Tự động hoàn tiền
Tài Liệu Đấu Nối API Chung Sức Liên Quân
Hỗ trợ đồng thời 2 chuẩn kết nối: Merchant API Rechargews / NapVip (/api/rechargews) ký MD5 chuẩn hóa cho các shop nạp game tự động và RESTful Bearer API (/api/v1/chungsuc/*). Tự động áp dụng chiết khấu cấp bậc & tài khoản thời gian thực.
Tạo đơn bơm vé Chung Sức Liên Quân tự động. Truyền mã mời hoặc nguyên văn tin nhắn chia sẻ Garena vào account (hoặc uid / event_code). Chọn gói qua package_code (khuyến nghị: goi-38 .. goi-10000), hoặc truyền mệnh giá gốc vào amount (2000, 5000, 10000, 15000, 25000, 75000, 150000), hoặc số vé lẻ vào tickets.
Truyền callback_url trực tiếp trong lệnh topup hoặc cài mặc định tại Hồ sơ tài khoản. Chữ ký kiểm tra: callback_sign = md5(partner_key + request_id + order_code + status) (xem bảng giải thích chi tiết từng trường ở khung bên dưới).
3 cách truyền khóa xác thực USER_TOKEN cực kỳ linh hoạt:
Cách 1 (Khuyên dùng): Header Authorization: Bearer YOUR_USER_TOKEN
Cách 2: Header X-API-Key: YOUR_USER_TOKEN
Cách 3 (Tiện test nhanh / PHP): Truyền trực tiếp "api_key": "YOUR_USER_TOKEN" trong JSON Body hoặc Query ?api_key=YOUR_USER_TOKEN.
GET/api/v1/me(hoặc /api/v1/chungsuc/balance)
Kiểm tra số dư khả dụng (balance), cấp bậc hiện tại và phần trăm chiết khấu giảm giá (discount_percent) đang áp dụng trên tài khoản.
Lấy danh sách gói vé đang mở bán và cấu hình vé lẻ theo thời gian thực. Nếu truyền kèm USER_TOKEN, API trả sẵn giá thực trừ sau chiết khấu (effective_price).
Tạo 1 đơn hoặc hàng loạt đơn Chung Sức cùng lúc, trừ tiền nguyên tử theo giá đã chiết khấu và đẩy thẳng sang máy chủ bơm vé. Tự động bóc mã mời sạch dù khách dán nguyên câu chia sẻ từ game Garena (VD: ... --AbCdEf1234-- ...).
Tham số
Kiểu
Bắt buộc
Ý nghĩa & Cách dùng dễ nhất
code hoặc codes
string | string[]
Bắt buộc
Truyền "code": "AbCdEf1234" cho 1 đơn lẻ (chấp nhận cả invite_code, event_code, account), hoặc "codes": ["Ma1", "Ma2"] để tạo nhiều đơn cùng lúc.
package_code
string
1 trong 3
Cách 1 (Khuyên dùng): Mã gói chuẩn trong bảng phía trên (goi-38, goi-152, goi-320, goi-500, goi-1000, goi-5000, goi-10000).
amount
integer
1 trong 3
Cách 2: Chọn gói theo mệnh giá gốc niêm yết (2000, 5000, 10000, 15000, 25000, 75000, 150000).
tickets
integer
1 trong 3
Cách 3: Đặt số vé lẻ tùy chỉnh (VD: 200 vé), tùy chọn kèm "use_vip_pool": true.
qty
integer
Tùy chọn
Hệ số nhân số lượng gói trên mỗi mã mời (mặc định 1, tối đa 50).
request_id
string
Tùy chọn
Mã đơn hàng bên Shop của bạn — chống tạo trùng đơn nếu gọi lại và trả nguyên vẹn về trong Webhook Callback.
callback_url
string (URL)
Tùy chọn
URL nhận thông báo tự động khi đơn hoàn tất / lỗi / hoàn tiền (bỏ trống sẽ tự dùng URL cài trong Hồ sơ). Hỗ trợ thêm callback_type (POST/GET) và callback_post_type (Json/Form).
{
"status": "success",
"ok": true,
"msg": "Tạo thành công 1 đơn Chung Sức Liên Quân!",
"data": {
"idempotent_replay": false,
"created_count": 1,
"discount_percent": 0,
"total_charged": 4500,
"balance_remaining": 495500,
"order": {
"order_code": "CS-261030-A1B2C3",
"request_id": "SHOP_ORDER_1001",
"package_code": "goi-152",
"package_name": "Rương SS",
"event_code": "AbCdEf1234",
"invite_code": "AbCdEf1234",
"qty": 1,
"target_tickets": 152,
"done_tickets": 0,
"remain_tickets": 152,
"progress_percent": 0,
"unit_price": 5000,
"discount_percent": 0,
"total_price": 4500,
"pay_amount": 4500,
"status": "pending",
"callback_url": "https://shopcuaban.vn/api/callback/chungsuc",
"created_at": "2026-10-30T12:00:00.000Z"
},
"orders": [ /* Danh sách toàn bộ đơn được tạo trong lần gọi này */ ]
}
}
GET/api/v1/chungsuc/orders/:orderCode(nhận cả order_code lẫn request_id)
Tra cứu tiến độ vé thực tế thời gian thực theo order_code (VD: CS-261030-A1B2C3) hoặc chính request_id của shop bạn (VD: SHOP_ORDER_1001), hoặc gọi GET /api/v1/chungsuc/status?request_id=SHOP_ORDER_1001. Để lấy danh sách nhiều đơn phân trang: GET /api/v1/chungsuc/orders?page=1&limit=20&status=running.
Trạng thái (status)
Trạng thái Callback
Ý nghĩa
pending
—
Đơn vừa khởi tạo, đang xếp hàng chuẩn bị bơm vé.
running
—
Đang bơm vé tự động (cập nhật done_tickets mỗi 5 giây).
completed
completed
Đã bơm đủ 100% số vé mục tiêu — bắn Callback thành công.
failed
failed
Đơn dừng giữa chừng / thiếu vé (phần vé thiếu được hoàn tiền vào refund_amount) — bắn Callback.
refunded / cancelled
canceled
Mã mời sai/hết lượt hoặc khách hủy đơn chờ, đã hoàn tiền 100% — bắn Callback.
POST/api/v1/chungsuc/orders/:orderCode/cancel(hoặc POST /api/v1/chungsuc/cancel)
Hủy đơn đang chờ (chưa phát sinh vé done_tickets = 0) và hoàn lại 100% số tiền đã trừ vào ví ngay lập tức, đồng thời bắn Webhook Callback trạng thái canceled.
{
"status": "success",
"ok": true,
"msg": "Hủy đơn và hoàn tiền thành công!",
"data": {
"order": {
"order_code": "CS-261030-A1B2C3",
"status": "cancelled",
"refunded": true,
"refund_amount": 4500
},
"balance_remaining": 500000
}
}
WEBHOOKĐơn tạo qua REST API v1 cũng tự động bắn Webhook Callback giống hệt cổng Merchant! Xem đầy đủ bảng 19 trường dữ liệu và code mẫu nhận Callback ngay bên dưới.
Cơ chế gửi, Retry & Xác thực chữ ký chống giả mạo:
Thời điểm bắn Callback: Tự động kích hoạt khi đơn chuyển sang 1 trong 3 trạng thái kết thúc: completed (hoàn thành đủ vé), failed (lỗi / hoàn tiền phần vé thiếu), hoặc canceled (mã lỗi / hủy đơn hoàn tiền 100%).
Headers đi kèm:X-Rechargews-Event: order_callback và X-Rechargews-Sign: <callback_sign>.
Công thức kiểm tra chữ ký MD5:callback_sign = md5(partner_key + request_id + order_code + status) — trong đó partner_key lấy ở cột bên phải; nếu lúc tạo đơn không truyền request_id thì request_id chính bằng order_code.
Quy tắc phản hồi & Retry: Server của bạn chỉ cần trả HTTP Status 200 (hoặc 201 / 204). Nếu timeout hoặc trả mã lỗi khác, hệ thống tự động gửi lại tối đa 3 lần và lưu lịch sử đối soát.
1. Bảng giải thích đầy đủ các trường dữ liệu Callback bắn về
Tên trường
Kiểu
Ý nghĩa chi tiết & Giá trị mẫu
status
string
Trạng thái kết thúc chuẩn của đơn: "completed" (đủ vé), "failed" (thiếu vé / lỗi một phần) hoặc "canceled" (đã hủy / hoàn tiền 100%).
message
string
Mô tả kết quả tiếng Việt rõ ràng (VD: "Hoàn thành 152/152 vé Chung Sức" hoặc lý do lỗi/hoàn tiền).
request_id
string
Mã tham chiếu đơn hàng bên Shop của đối tác gửi lên lúc tạo đơn (nếu không truyền sẽ bằng order_code).
order_code
string
Mã đơn hàng duy nhất trên hệ thống (VD: "CS-261030-A1B2C3").