CODE API
import requests
headers = {
'Content-Type': 'application/json',
}
json_data = {
'MerchantCode': '479795237',
'MerchantKey': '3eba4f22-eb44-4b94-b76e-70f190e08aae',
'Address': 'TMqDrZa5kEebg5wi3W3wusVZ6ZF2w6JczH',
'name': 'Hóa đơn test',
'description': 'Thanh toán dịch vụ',
'amount': '10000',
'success_url': 'http://example.com/success',
'cancel_url': 'http://example.com/cancel',
'callback_url': 'http://example.com/callback',
}
response = requests.post('https://spayment.net/api/AddInvoice', headers=headers, json=json_data)
print(response.json())
Response
{
"success": true,
"message": "Thêm hóa đơn thành công",
"data": {
"username": "kienit2005uy1",
"Name": "Hóa đơn test",
"NameHoaDon": "Hóa đơn test",
"MerchantID": "479795237",
"MerchantKey": "3eba4f22-eb44-4b94-b76e-70f190e08aae",
"MerchantSecret": "6ea38599-29c4-459b-9db0-5f7555a3b432",
"MerchantCode": "479795237",
"Address": "TMqDrZa5kEebg5wi3W3wusVZ6ZF2w6JczH",
"Network": "TRC20",
"Amount": "10000.002",
"Amount_Real": "10000",
"Total_Phi": "100",
"OrderId": "SPAYMENT40868320127687",
"hash_OrderId": "5eb099dc5e9d3ea5f03eb3eb31688a38cc84738df72267d139fef8315f8cf323",
"type": "deposit",
"Token": "USDT",
"description": "Thanh toán dịch vụ",
"callback_url": "http://example.com/callback",
"success_url": "http://example.com/success",
"cancel_url": "http://example.com/cancel",
"time_update": "1744415760403441",
"time_create": "1744415760403457",
"status": "waiting",
"_id": "67f4a730db3ff58b839b76e2",
"createdAt": "2025-04-08T04:33:52.034Z",
"updatedAt": "2025-04-08T04:33:52.034Z",
"__v": 0
}
}
URL API
// Nhận request từ callback
$request_data = $_GET;
// Lọc chuỗi để tránh SQL Injection và XSS
function sanitize_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
return $data;
}
// Kiểm tra các tham số callback nhận được
if (!isset($request_data['MerchantID'], $request_data['MerchantKey'], $request_data['Amount'], $request_data['OrderId'], $request_data['status'])) {
http_response_code(400);
echo json_encode([
'status' => 'error',
'message' => 'Thiếu tham số callback.'
]);
exit;
}
$merchant_id = sanitize_input($request_data['MerchantID']); // ID cửa hàng tạo hóa đơn (Không được để lộ ra ngoài)
$api_key = sanitize_input($request_data['MerchantKey']); // API KEY của cửa hàng tạo hóa đơn (Không được để lộ ra ngoài)
$amount = sanitize_input($request_data['Amount']); // Số lượng USDT lúc bạn tạo hóa đơn
$received = sanitize_input($request_data['OrderId']); // Số lượng USDT thực nhận được
$status = sanitize_input($request_data['status']); // Trạng thái giao dịch bao gồm: waiting, expired, completed
$Sender = isset($request_data['Sender']) ? sanitize_input($request_data['Sender']) : null; // Địa chỉ USDT gửi tiền trong trường hợp hóa đơn completed
$TxnHash = isset($request_data['TxnHash']) ? sanitize_input($request_data['TxnHash']) : null; // Mã giao dịch trong blockchain trong trường hợp hóa đơn completed
$Receiver = isset($request_data['Receiver']) ? sanitize_input($request_data['Receiver']) : null; // Địa chỉ USDT nhận tiền trong trường hợp hóa đơn completed
$Blockno = isset($request_data['Blockno']) ? sanitize_input($request_data['Blockno']) : null; // Block number trong blockchain trong trường hợp hóa đơn completed
$DateTime = isset($request_data['DateTime']) ? sanitize_input($request_data['DateTime']) : null; // Thời gian giao dịch trong blockchain trong trường hợp hóa đơn completed
// Xác minh tính hợp lệ của callback tránh giả mạo callback
$expected_merchant_id = 'YOUR_MERCHANT_ID'; // Thay bằng Merchant ID của bạn
$expected_api_key = 'YOUR_API_KEY'; // Thay bằng API Key của bạn
if ($merchant_id !== $expected_merchant_id || $api_key !== $expected_api_key) {
http_response_code(403);
echo json_encode([
'status' => 'error',
'message' => 'Merchant ID hoặc API Key không hợp lệ.'
]);
exit;
}
// Xử lý trạng thái giao dịch
switch ($status) {
case 'waiting':
// Giao dịch đang chờ thực hiện
// Thêm code để xử lý trạng thái đang chờ
break;
case 'expired':
// Giao dịch đã hết hạn
// Thêm code để xử lý khi giao dịch hết hạn
break;
case 'completed':
// Giao dịch đã hoàn tất
// Thêm code để cập nhật trạng thái giao dịch hoặc ghi nhận giao dịch
break;
default:
http_response_code(400);
echo json_encode([
'status' => 'error',
'message' => 'Trạng thái giao dịch không hợp lệ.'
]);
exit;
}
// Phản hồi callback thành công
http_response_code(200);
echo json_encode([
'status' => 'success',
'message' => 'Callback đã được xử lý thành công.'
]);
Response
const callbackData = {
MerchantID: 'your_merchant_id',
MerchantKey: 'your_merchant_key',
Amount: '100',
OrderId: 'ORD123456',
status: 'completed',
Sender: 'TUSSenderAddressHere',
TxnHash: '0x1234567890abcdef',
Receiver: 'TUSReceiverAddressHere',
Blockno: '12345678',
DateTime: '2025-04-08T12:34:56Z'
};
URL API
import requests
params = {
'orderId': 'SPAYMENT40910558013601', // ma giao dich tra ve khi tao hoa don
}
response = requests.get('https://spayment.net/api/bill/status', params=params)
print(response.json())
Response
{
"success": false,
"status": "waiting",
"msg": "Đang Chờ Xác Nhận Từ Blockchain",
"redect": false
}
// dang cho xac nhan tu blockchain
// da xac nhan tu blockchain
{
message: 'Giao dịch thành công',
success: true,
status: 'complate',
data: {
TxnHash: transactionHash,
Blockno: blockNumber,
Amount: amount,
Token: tokenSymbol,
Sender: fromAddress,
Receiver: toAddress,
DateTime: moment.unix(timeStamp).format('YYYY-MM-DD HH:mm:ss'),
},
success_url: check.success_url,
cancel_url: check.cancel_url
}
URL API
import requests
response = requests.get('https://spayment.net/api/block-network', params=params)
print(response.json())
Response
{
"status": "success",
"message": "Danh sách các API Block",
"data": [
{
"name": "TRC20",
"description": "API cho mạng TRON"
},
{
"name": "ERC20",
"description": "API cho mạng Ethereum"
},
{
"name": "BEP20",
"description": "API cho mạng Binance Smart Chain"
},
{
"name": "APTOS",
"description": "API cho mạng APTOS"
},
{
"name": "POS",
"description": "API cho mạng POS"
}
]
}
URL API
import requests
headers = {
'Content-Type': 'application/json
}
params = {
'type': 'BEP20',
'token': '288A129F-7263-40D6-B50C-13E49B76B9E2', // lay tai : https://spayment.net/auth/account
'address': '0x19b8959B6ad1F50C65560C16B260b980e58f3Cc9',
}
response = requests.get('http://127.0.0.1:5000/api/block', headers=headers, params=params)
print(response.json())
Response
"success": true,
"status": "success",
"msg": "Lấy dữ liệu thành công",
"data": [
{
"Blockno": "56259422",
"TxnHash": "0xaa51566088dca4651db6fef8944d7d219e39831509a8e6c5ea2b6f3363a412f3",
"Amount": "1.52",
"Token": "BSC-USD",
"Sender": "0x0dfaab7cda3bca3d51cee52efe37edc7a27d418b",
"Receiver": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"DateTime": "2025-08-03T03:43:18.000Z",
"microtime": "1754192598",
"Type": "IN",
"gas_fee": 0.0000034862
},
{
"Blockno": "56227809",
"TxnHash": "0x49b350f20450ba763d2ec2fb0c41e55d8bd19d3666d7e6ba5e7bfc1126708006",
"Amount": "46123.00",
"Token": "FIG",
"Sender": "0x45e3a3ea33a2529de82b7e64cbcfc84850679b1d",
"Receiver": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"DateTime": "2025-08-02T21:08:08.000Z",
"microtime": "1754168888",
"Type": "IN",
"gas_fee": 0.000364093
},
{
"Blockno": "56182204",
"TxnHash": "0x30943726fb459d5b1edb927af7ca117879764fbd6da27986acd6694aca72e7d5",
"Amount": "6.00",
"Token": "BSC-USD",
"Sender": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"Receiver": "0x4c887816bd3dba549fe5744bcffff5ed20cb78dc",
"DateTime": "2025-08-02T11:38:03.000Z",
"microtime": "1754134683",
"Type": "OUT",
"gas_fee": 0
},
{
"Blockno": "56163861",
"TxnHash": "0x0896c891ee24f9745d46dc252817c5be0cbad30fde57f6ecf577de3181144249",
"Amount": "0.29",
"Token": "BSC-USD",
"Sender": "0x7fa8b97ef89a751f150fdda98a71088dbae64bbc",
"Receiver": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"DateTime": "2025-08-02T07:48:45.000Z",
"microtime": "1754120925",
"Type": "IN",
"gas_fee": 0.000081
},
{
"Blockno": "56151047",
"TxnHash": "0x63b9816ae164c4613001a5e02a423366944e0429969412a5d3aa7480d9c588ce",
"Amount": "3.00",
"Token": "BSC-USD",
"Sender": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"Receiver": "0xe61be38c0b55b1acbd124975964378f1fb227ab3",
"DateTime": "2025-08-02T05:08:35.000Z",
"microtime": "1754111315",
"Type": "OUT",
"gas_fee": 0
},
{
"Blockno": "56151047",
"TxnHash": "0x63b9816ae164c4613001a5e02a423366944e0429969412a5d3aa7480d9c588ce",
"Amount": "3.00",
"Token": "BSC-USD",
"Sender": "0x19b8959b6ad1f50c65560c16b260b980e58f3cc9",
"Receiver": "0xe61be38c0b55b1acbd124975964378f1fb227ab3",
"DateTime": "2025-08-02T05:08:35.000Z",
"microtime": "1754111315",
"Type": "OUT",
"gas_fee": 0
}
]