/service/@id/tinopay/sapo-integrationsTạo tích hợp Sapo
Khách chuyển khoản với nội dung chứa mã đơn (tiền tố + số đơn Sapo, ví dụ TNG1002 ứng với đơn #1002): đủ hoặc dư tiền thì TinoPay ghi nhận đơn đã thanh toán trên Sapo. Body: name (≤ 100 ký tự), store_url (tên miền .mysapo.net của cửa hàng, không nhận tên miền riêng), api_key, api_secret (ứng dụng riêng trên Sapo, quyền đọc và ghi đơn hàng, giao dịch), bank_account_id, virtual_account (bắt buộc với BIDV), order_prefix (2–5 chữ hoặc số; chưa có trong cấu trúc mã thanh toán thì TinoPay tự thêm mẫu hậu tố 1–12 chữ số), transaction (kind, source_name, status), status. TinoPay thử kết nối Sapo trước khi lưu; không được thì 422 SAPO_CONNECTION_FAILED, không tạo gì. Dán snippet trả về vào Sapo Admin → Cấu hình → Trang thanh toán → Nội dung thông báo thêm.
Route của dịch vụ TinoPay: gọi bằng token đăng nhập của chủ dịch vụ; gateway /v1 (token ứng dụng, token cá nhân) chưa mở TinoPay. Xem Bắt đầu với TinoPay.
Xác thực
Gửi token trong header Authorization:
Authorization: Bearer <token>
Token gọi được: token đăng nhập của chủ dịch vụ TinoPay (token khu vực khách hàng tino.vn).
Tham số
Tham số đường dẫn
| Tên | Kiểu | Yêu cầu | Mô tả |
|---|---|---|---|
id | int | Bắt buộc | ID dịch vụ TinoPay |
Body (JSON)
| Tên | Kiểu | Yêu cầu | Mô tả |
|---|---|---|---|
name | string | Bắt buộc | ≤ 100 |
store_url | string | Bắt buộc | <tên-cửa-hàng>.mysapo.net (tên miền riêng không nhận) |
api_key | string | Bắt buộc | — |
api_secret | string | Bắt buộc | — |
bank_account_id | string | Bắt buộc | — |
virtual_account | string | — | Bắt buộc với BIDV |
order_prefix | string | Bắt buộc | 2–5 chữ/số |
transaction | array | — | — |
status | string | — | active | inactive |
Phản hồi
Mẫu dựng theo tài liệu TinoPay API v1 (Tino chuyển tiếp nguyên dữ liệu TinoPay), giá trị là ví dụ.
Mã lỗi
| Mã lỗi | Mô tả |
|---|---|
404 · service_not_found, invalid method | Dịch vụ không phải của tài khoản đang đăng nhập, hoặc không phải TinoPay. |
403 · service_not_active | Dịch vụ không ở trạng thái Active hoặc Suspended. |
403 · MERCHANT_SUSPENDED | Merchant đang tạm ngưng: chặn thao tác ghi, GET vẫn dùng được. |
404 · RESOURCE_NOT_FOUND | Tài nguyên không có hoặc không thuộc merchant. |
422 · VALIDATION_FAILED | Dữ liệu sai; details liệt kê theo trường. |
502 · NETWORK_ERROR…, 504 | Kết nối giữa Tino và đối tác gián đoạn (504: body HTML, request quá lâu): lỗi phía Tino, không phải lỗi token. Đừng xoá token, thử lại sau. |
Lỗi có dạng {"error": ["<CODE>"], "message", "details", "request_id"}; mọi mã lỗi ở Bắt đầu với TinoPay.