/service/@id/tinopay/sapo-integrationsCreate a Sapo integration
The buyer transfers with content holding the order code (prefix + Sapo order number, e.g. TNG1002 for order #1002): when the amount is enough or more, TinoPay marks the order paid on Sapo. Body: name (≤ 100 characters), store_url (the store's .mysapo.net domain; custom domains are not accepted), api_key, api_secret (private app on Sapo with read and write access to orders and transactions), bank_account_id, virtual_account (required for BIDV), order_prefix (2–5 letters or digits; when missing from the payment code patterns, TinoPay adds a pattern with a 1–12 digit suffix), transaction (kind, source_name, status), status. TinoPay tests the Sapo connection before saving; on failure 422 SAPO_CONNECTION_FAILED and nothing is created. Paste the returned snippet into Sapo Admin → Cấu hình → Trang thanh toán (Settings → Checkout), the additional message field.
A TinoPay service route: call it with the service owner's sign-in token; the /v1 gateway (app tokens, personal tokens) does not expose TinoPay yet. See Getting started with TinoPay.
Authentication
Send the token in the header Authorization:
Authorization: Bearer <token>
Tokens that can call it: the TinoPay service owner's sign-in token (the tino.vn client area token).
Parameters
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | int | Required | TinoPay service ID |
Body (JSON)
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | ≤ 100 |
store_url | string | Required | <tên-cửa-hàng>.mysapo.net (tên miền riêng không nhận) |
api_key | string | Required | — |
api_secret | string | Required | — |
bank_account_id | string | Required | — |
virtual_account | string | — | Bắt buộc với BIDV |
order_prefix | string | Required | 2–5 chữ/số |
transaction | array | — | — |
status | string | — | active | inactive |
Response
Sample built from the TinoPay API v1 documentation (Tino relays TinoPay data as is); values are examples.
Error codes
| Error code | Description |
|---|---|
404 · service_not_found, invalid method | The service does not belong to the signed-in account, or is not TinoPay. |
403 · service_not_active | The service is neither Active nor Suspended. |
403 · MERCHANT_SUSPENDED | The merchant is suspended: writes are blocked, GET still works. |
404 · RESOURCE_NOT_FOUND | The resource does not exist or does not belong to the merchant. |
422 · VALIDATION_FAILED | Invalid data; details lists the fields. |
502 · NETWORK_ERROR…, 504 | The connection between Tino and the partner is interrupted (504: HTML body, request took too long): a Tino-side error, not a token problem. Keep the token, retry later. |
Errors look like {"error": ["<CODE>"], "message", "details", "request_id"}; every code is in Getting started with TinoPay.