Appearance
🔐 Authentication / Xác thực đối tác
🧭 Giới thiệu
Hệ thống Pay2S OneQR sử dụng cơ chế xác thực hai tầng để đảm bảo an toàn cho các kết nối từ phía người dùng.
- Bước 1: Đối tác đăng nhập vào Pay2S.vn để lấy Access Key và Secret Key.
- Bước 2: Sử dụng cặp khóa này để thực hiện Basic Authentication, lấy về Bearer Token tạm thời.
- Bước 3: Dùng Bearer Token này để gọi các API như
/api/vcb/v1/qr/create,api/vcb/v1/qr/cancel, v.v.
🧩 Luồng xác thực tổng quan
mermaid
sequenceDiagram
participant C as Client (Partner)
participant G as Pay2S Partner Gateway
participant A as Auth Service
participant API as Protected API
C->>G: POST /api/auth/token (Basic Auth)
G->>A: Xác minh Access Key / Secret Key
A-->>G: Trả về Bearer Token (hiệu lực 3600s)
G-->>C: 200 OK + token
C->>API: Authorization: Bearer {token}
API-->>C: Trả về dữ liệu (banks, webhooks,...)🧾 Thông tin chi tiết
Endpoint
POST http://api.pay2s.vn/api/auth/token
Headers
| Tên header | Giá trị mẫu | Mô tả |
|---|---|---|
Authorization | Basic base64(access_key:secret_key) | Dạng xác thực cơ bản |
Content-Type | application/json | Bắt buộc |
Ví dụ Base64
Giả sử:
access_key = e222c2c10059cca0e27bf43d0438bba37
secret_key = 83f84c5a1d94ad4a1d3810292ad55a0d→ Ghép chuỗi:e222c2c10059cca0e27bf43d0438bba372:83f84c5a1d94ad4a1d3810292ad55a0d
→ Mã hoá Base64 thành:ZT222c2c10059cca0e27bf43d0438bba372OjgzZjg0YzVhMWQ5NGFkNGExZDM4MTAyOTJhZDU1YTBk
→ Header:
Authorization: Basic ZT222c2c10059cca0e27bf43d0438bba372OjgzZjg0YzVhMWQ5NGFkNGExZDM4MTAyOTJhZDU1YTBk🧠 Phản hồi mẫu
✅ Thành công
json
{
"success": true,
"data": {
"token_type": "Bearer",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....",
"expires_in": 3600
}
}❌ Lỗi xác thực
json
{
"success": false,
"message": "Authentication failed",
"data": null,
"error": "Request failed with status code 401"
}🧩 Gọi API bằng Token
Sau khi nhận được Bearer Token, bạn có thể gọi các endpoint bảo mật khác như sau:
Ví dụ:
POST http://api.pay2s.vn/api/vcb/v1/qr/cancel HTTP/1.1
Host: api.pay2s.vn
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Kết quả:
json
{
"success": true,
"message": "QR transaction cancelled successfully",
"data": {
"transactionId": "0e907bd2-74d0-4c49-96ba-e64660736a2a",
"orderId": "123456",
"status": "cancelled",
"cancelResponse": {
"code": "00",
"message": "Succeed",
"data": {
"subCode": "00",
"subMessage": "Succeed",
"requestId": "0368e7f9-902c-4bd3-adb6-c5766e328856",
"checksum": "3E808EBC44F716562EE1290FF9C2A5F0",
"vcbResponse": {
"code": "00",
"message": "Succeed",
"requestId": "0368e7f9-902c-4bd3-adb6-c5766e328856",
"subCode": "00",
"subMessage": "Succeed",
"serverTime": "15:46:33 08/06/2026",
"nodeOut": "10.1.60.186",
"nodeIn": "",
"operation": "CancelInvoice",
"success": true,
"idQrCode": "31928425",
"checksum": "25B3AFCB0ABA8EF2DADE66255156653C"
},
"success": true
}
}
}
}🔑 Gợi ý
- Token có hiệu lực 3600 giây (1 giờ). Sau khi hết hạn, cần gọi lại
/api/auth/tokenđể lấy token mới. - Hỗ trợ xác thực Basic Auth → Bearer Token (không cần tạo chữ ký HMAC thủ công).
