Lấy danh sách cấu hình ngân hàng
API này cho phép lấy danh sách cấu hình ngân hàng đã thiết lập cho Merchant, hỗ trợ lọc theo ngân hàng và phân trang.
POST
URLhttps://uat-open-api.tingee.vn/v1/merchant/get-paging-config
Truy vấn danh sách cấu hình kết nối ngân hàng của Merchant theo điều kiện lọc.
Header Request
| Header | Bắt buộc | Mô tả |
|---|---|---|
Content-Type | ✓ | application/json |
x-client-id | ✓ | Mã định danh của đối tác do TINGEE cung cấp. |
x-signature | ✓ | Chữ ký xác thực HMAC SHA512. Xem thêm tại Cách sinh chữ ký. |
x-request-timestamp | ✓ | Thời gian gửi request (format: yyyyMMddHHmmssSSS, múi giờ UTC+7) |
Body Parameter
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
merchantId | number | ✕ | ID của Merchant (Bắt buộc nếu kết nối bằng tài khoản Master Merchant). |
bankBin | string | ✕ | Mã BIN ngân hàng để lọc kết quả. |
skipCount | number | ✓ | Số bản ghi bỏ qua (Phân trang). |
maxResultCount | number | ✓ | Số bản ghi tối đa mỗi trang (Mặc định: 10). |
Ví dụ mã nguồn
- cURL
- NestJS
- C#
- Java
- PHP
curl --location --request POST 'https://uat-open-api.tingee.vn/v1/merchant/get-paging-config' \
--header 'x-signature: YOUR_SIGNATURE' \
--header 'x-request-timestamp: 20251209103911111' \
--header 'x-client-id: YOUR_CLIENT_ID' \
--header 'Content-Type: application/json' \
--data '{
"bankBin": "970416",
"skipCount": 0,
"maxResultCount": 10
}'
import axios from "axios";
import { createHmac } from "crypto";
import { format } from 'date-fns';
async function getPagingConfig() {
const body = {
bankBin: "970416",
skipCount: 0,
maxResultCount: 10,
};
const timestamp = format(new Date(), "yyyyMMddHHmmssSSS");
const secretKey = "YOUR_SECRET_KEY";
const message = `${timestamp}:${JSON.stringify(body)}`;
const signature = createHmac('sha512', secretKey).update(message).digest('hex');
const res = await axios.post('https://uat-open-api.tingee.vn/v1/merchant/get-paging-config', body, {
headers: {
'x-signature': signature,
'x-request-timestamp': timestamp,
'x-client-id': 'YOUR_CLIENT_ID',
'Content-Type': 'application/json',
},
});
console.log(res.data);
}
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Security.Cryptography;
using System.Threading.Tasks;
public class GetPagingConfigExample
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main()
{
var body = new {
bankBin = "970416",
skipCount = 0,
maxResultCount = 10
};
var timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
var secretKey = "YOUR_SECRET_KEY";
var bodyJson = JsonSerializer.Serialize(body);
var message = $"{timestamp}:{bodyJson}";
var signature = CreateHmacSha512(secretKey, message);
var request = new HttpRequestMessage(HttpMethod.Post, "https://uat-open-api.tingee.vn/v1/merchant/get-paging-config");
request.Headers.Add("x-signature", signature);
request.Headers.Add("x-request-timestamp", timestamp);
request.Headers.Add("x-client-id", "YOUR_CLIENT_ID");
request.Content = new StringContent(bodyJson, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
private static string CreateHmacSha512(string key, string message)
{
using var hmac = new HMACSHA512(Encoding.UTF8.GetBytes(key));
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}
}
import java.net.http.*;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class GetPagingConfig {
public static void main(String[] args) throws Exception {
String bodyJson = "{"bankBin":"970416","skipCount":0,"maxResultCount":10}";
String secretKey = "YOUR_SECRET_KEY";
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
String message = timestamp + ":" + bodyJson;
String signature = hmacSha512(secretKey, message);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://uat-open-api.tingee.vn/v1/merchant/get-paging-config"))
.header("x-signature", signature)
.header("x-request-timestamp", timestamp)
.header("x-client-id", "YOUR_CLIENT_ID")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(bodyJson))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
private static String hmacSha512(String key, String data) throws Exception {
Mac mac = Mac.getInstance("HmacSHA512");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA512");
mac.init(secretKeySpec);
byte[] hash = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
return toHex(hash);
}
private static String toHex(byte[] bytes) {
StringBuilder hex = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
hex.append(String.format("%02x", b));
}
return hex.toString();
}
}
function getPagingConfig() {
$body = [
"bankBin" => "970416",
"skipCount" => 0,
"maxResultCount" => 10
];
$jsonBody = json_encode($body);
$timestamp = date("YmdHis") . substr((string)microtime(true), -3);
$secretKey = "YOUR_SECRET_KEY";
$message = $timestamp . ":" . $jsonBody;
$signature = hash_hmac("sha512", $message, $secretKey);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://uat-open-api.tingee.vn/v1/merchant/get-paging-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $jsonBody,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-client-id: YOUR_CLIENT_ID",
"x-request-timestamp: " . $timestamp,
"x-signature: " . $signature
]
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
}
Response mẫu
{
"code": "00",
"message": "Success",
"data": {
"totalCount": 1,
"items": [
{
"id": 1,
"merchantId": 10001,
"bankBin": "970416",
"bankName": "ACB",
"accountType": "BUSINESS",
"configDto": {
"mobile": "0843226139",
"identity": "0110649911",
"accountName": "CONG TY TNHH BAT DONG SAN HOMMIT",
"accountNumber": "698988999"
},
"isActive": true
}
]
}
}
| Trường | Kiểu | Mô tả |
|---|---|---|
code | string | Mã kết quả (00 = Thành công). |
message | string | Thông điệp phản hồi. |
data.totalCount | number | Tổng số cấu hình thỏa mãn điều kiện. |
data.items | array | Danh sách chi tiết các cấu hình ngân hàng. |
data.items[].id | number | ID của bản ghi cấu hình. |
data.items[].merchantId | number | ID của Merchant. |
data.items[].bankBin | string | Mã BIN ngân hàng (ví dụ: 970416 = ACB). |
data.items[].bankName | string | Tên ngân hàng (ví dụ: ACB, VCB). |
data.items[].accountType | string | Loại tài khoản ngân hàng (ví dụ: BUSINESS). |
data.items[].configDto | object | Thông tin cấu hình chi tiết của ngân hàng. |
data.items[].configDto.mobile | string | Số điện thoại đăng ký tài khoản ngân hàng. |
data.items[].configDto.identity | string | Mã số thuế / CCCD của doanh nghiệp. |
data.items[].configDto.accountName | string | Tên chủ tài khoản ngân hàng. |
data.items[].configDto.accountNumber | string | Số tài khoản ngân hàng doanh nghiệp. |
data.items[].isActive | boolean | Trạng thái kích hoạt của cấu hình. |
Mã lỗi thường gặp
| Code | Mô tả | Hướng xử lý |
|---|---|---|
90 | Sai format timestamp | Kiểm tra format yyyyMMddHHmmssSSS. |
91 | Request quá hạn | Kiểm tra thời gian gửi request. |
97 | Sai chữ ký | Kiểm tra lại Secret Key và logic tạo Signature. |
Others | Lỗi khác | Xem Danh sách mã lỗi. |