sPayment
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
}