Truy vấn lịch sử giao dịch
API này dùng để truy vấn lịch sử giao dịch của khách hàng theo thời gian hoặc phân trang.
Sử dụng khi đối tác muốn truy vấn và đồng bộ lịch sử giao dịch trên tài khoản của khách hàng đã đăng ký dịch vụ Direct Debit.
GET
URLhttps://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions
Lấy danh sách các giao dịch thanh toán đã thực hiện, hỗ trợ lọc theo thời gian và phân trang.
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) |
Query Parameter
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
subscriptionId | string | ✓ | ID tài khoản ngân hàng đã liên kết (UUID). |
tokenRef | string | ✓ | Mã tham chiếu tới tài khoản khách hàng. |
startTime | string | ✕ | Thời gian bắt đầu (yyyy-MM-dd HH:mm:ss). |
endTime | string | ✕ | Thời gian kết thúc (yyyy-MM-dd HH:mm:ss). |
skipCount | number | ✕ | Số giao dịch bỏ qua (mặc định: 0). |
maxResultCount | number | ✕ | Số giao dịch cần lấy (mặc định: 10). |
Ví dụ mã nguồn
- cURL
- NestJS
- C#
- Java
- PHP
curl --location --request GET 'https://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions?subscriptionId=89188e53-eba3-40fa-9323-04422ced3637&tokenRef=TKN-12345678&startTime=2025-12-16%2012%3A20%3A49&endTime=2026-01-15%2012%3A20%3A49&skipCount=0&maxResultCount=10' \
--header 'accept: application/json' \
--header 'x-signature: YOUR_SIGNATURE' \
--header 'x-request-timestamp: 20251110175110111' \
--header 'x-client-id: YOUR_CLIENT_ID' \
--header 'Content-Type: application/json'
import axios from "axios";
import { createHmac } from "crypto";
import { format } from 'date-fns';
async function getPagingTransactions() {
const body = {}; // Empty body for GET request signature
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 params = {
subscriptionId: '89188e53-eba3-40fa-9323-04422ced3637',
tokenRef: 'TKN-12345678',
startTime: '2025-12-16 12:20:49',
endTime: '2026-01-15 12:20:49',
skipCount: 0,
maxResultCount: 10,
};
const res = await axios.get(
"https://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions",
{
params,
headers: {
"x-client-id": "YOUR_CLIENT_ID",
"x-request-timestamp": timestamp,
"x-signature": signature,
"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 GetPagingTransactionsExample
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main()
{
var body = new {};
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 url = "https://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions" +
"?subscriptionId=89188e53-eba3-40fa-9323-04422ced3637" +
"&tokenRef=TKN-12345678" +
"&startTime=2025-12-16 12:20:49" +
"&endTime=2026-01-15 12:20:49" +
"&skipCount=0" +
"&maxResultCount=10";
var request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Add("x-signature", signature);
request.Headers.Add("x-request-timestamp", timestamp);
request.Headers.Add("x-client-id", "YOUR_CLIENT_ID");
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 GetPagingTransactions {
public static void main(String[] args) throws Exception {
String bodyJson = "{}";
String secretKey = "YOUR_SECRET_KEY";
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
String message = timestamp + ":" + bodyJson;
String signature = hmacSha512(secretKey, message);
String url = "https://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions" +
"?subscriptionId=89188e53-eba3-40fa-9323-04422ced3637" +
"&tokenRef=TKN-12345678" +
"&startTime=2025-12-16 12:20:49" +
"&endTime=2026-01-15 12:20:49" +
"&skipCount=0" +
"&maxResultCount=10";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("accept", "application/json")
.header("x-signature", signature)
.header("x-request-timestamp", timestamp)
.header("x-client-id", "YOUR_CLIENT_ID")
.header("Content-Type", "application/json")
.GET()
.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 getPagingTransactions() {
$body = (object)[];
$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);
$baseUrl = "https://uat-open-api.tingee.vn/v1/direct-debit/get-paging-transactions";
$queryParams = http_build_query([
"subscriptionId" => "89188e53-eba3-40fa-9323-04422ced3637",
"tokenRef" => "TKN-12345678",
"startTime" => "2025-12-16 12:20:49",
"endTime" => "2026-01-15 12:20:49",
"skipCount" => 0,
"maxResultCount" => 10
]);
$url = $baseUrl . "?" . $queryParams;
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"x-client-id: YOUR_CLIENT_ID",
"x-request-timestamp: " . $timestamp,
"x-signature: " . $signature
]
]);
$response = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
}
Response mẫu
{
"code": "00",
"message": "Success",
"data": {
"totalCount": 2,
"items": [
{
"transactionId": "550760e0-1cc2-44b9-85ba-eb318e228b4f",
"code": "FT123372233",
"bankName": "VCB",
"amount": 150000,
"content": "Thanh toan don hang #12345",
"status": "Success"
}
]
}
}
| Trường | Kiểu | Mô tả |
|---|---|---|
code | string | Mã phản hồi (00 là thành công). |
message | string | Thông báo chi tiết. |
data.totalCount | number | Tổng số giao dịch tìm thấy. |
data.items | array | Danh sách chi tiết các giao dịch. |
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. |