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
}