Chấp nhận thanh toán USDT trên TRON qua API: Hướng dẫn tích hợp người bán — TRON Wiki

Chấp nhận thanh toán USDT trên TRON qua API: Hướng dẫn tích hợp người bán

11 phút đọc · ⌘K tìm kiếm

Việc chấp nhận USDT trên TRON mang lại khả năng thanh toán gần như ngay lập tức và mức phí thấp — hấp dẫn đối với người bán, nền tảng SaaS và bàn OTC. Không giống như thanh toán bằng thẻ, USDT trên chuỗi không có khoản bồi hoàn và không có webhook gốc — bạn xây dựng logic xác nhận dựa trên TronGrid hoặc nút đầy đủ của riêng bạn.

Hướng dẫn này phác thảo kiến ​​trúc sản xuất để chấp nhận thanh toán TRC-20 USDT.

Tổng quan về kiến trúc

Customer → sends USDT to deposit address
                ↓
         TronGrid / event indexer
                ↓
         Your payment service (match txid)
                ↓
         Webhook to app → order fulfilled
                ↓
         Sweep to treasury (optional cron)

Hợp đồng USDT chính thức (chỉ mainnet):

TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

Xác minh: USDT TRC-20 đã giải thích.

Chiến lược địa chỉ

Địa chỉ duy nhất trên mỗi hoá đơn

Được đề xuất. Tạo địa chỉ TRON mới cho mỗi đơn hàng từ ví HD (đường dẫn BIP44 m/44'/195'/0'/0/n — loại xu 195 cho TRON).

Lợi ích:

  • Tự động khớp lệnh theo địa chỉ to
  • Kế toán dễ dàng hơn
  • Giới hạn bán kính vụ nổ nếu chìa khóa bị xâm phạm

Địa chỉ duy nhất + số tiền khớp

Một địa chỉ, khớp chính xác theo số lượng + khoảng thời gian.

Rủi ro:

  • Va chạm thanh toán cùng số tiền
  • Khách hàng gửi sai số tiền
  • Yêu cầu đối chiếu thủ công

Chỉ sử dụng cho khối lượng thấp với sự giám sát của con người.

Phát hiện tiền gửi {# detection}

Tùy chọn A: API giao dịch TRC-20

const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
const url = `https://api.trongrid.io/v1/accounts/${depositAddress}/transactions/trc20?only_confirmed=true&limit=50&contract_address=${USDT}`;

const res = await fetch(url, {
  headers: { 'TRON-PRO-API-KEY': process.env.TRONGRID_KEY }
});
const { data } = await res.json();

for (const tx of data) {
  if (processed.has(tx.transaction_id)) continue;
  const amount = Number(tx.value) / 1e6; // USDT 6 decimals
  await creditOrder(tx.to, amount, tx.transaction_id);
  processed.add(tx.transaction_id);
}

Chi tiết: truy vấn TRC-20 API cân bằng.

Tùy chọn B: Trình xử lý sự kiện

Lọc Transfer(address,address,uint256) trong đó to = địa chỉ gửi tiền. Khả năng mở rộng hơn ở âm lượng.

Trình nghe sự kiện TronWeb.

Tùy chọn C: Hàm băm giao dịch từ khách hàng

Khách hàng gửi txid theo cách thủ công — bạn xác minh một lần:

Xác minh API giao dịch.

Ít tự động nhất; hữu ích như dự phòng.

Quy tắc xác thực

Trước khi đánh dấu đã thanh toán:

  1. Hợp đồng = TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
  2. Kết quả = SUCCESS (thông qua gettransactioninfobyid)
  3. to = địa chỉ gửi tiền dự kiến
  4. Số tiền ≥ tổng đơn hàng (xử lý chính sách thanh toán vượt mức)
  5. txid chưa được xử lý trước đó (idempotency)
  6. Chặn dấu thời gian trong thời hạn hết hạn của đơn hàng

Từ chối các token fake USDT có cùng ký hiệu.

Xác nhận

const info = await tronWeb.trx.getTransactionInfo(txid);
const confirmed = info.blockNumber > 0 && info.receipt?.result === 'SUCCESS';

Ví dụ về chính sách:

Cấp độ rủi roKhối chờ đợi
Hàng hóa kỹ thuật số có giá trị thấp1
Thương mại điện tử chuẩn3–12
Giá trị cao / thủ công19+ hoặc sự chấp thuận của con người

TRON rủi ro tái tổ chức thấp nhưng khác 0 - điều chỉnh theo rủi ro kinh doanh.

Webhooks vào ứng dụng của bạn

Dòng chảy nội bộ sau khi phát hiện:

await fetch('https://yourapp.com/internal/payment-confirmed', {
  method: 'POST',
  headers: { 'X-Signature': hmac },
  body: JSON.stringify({ orderId, txid, amount, asset: 'USDT-TRC20' })
});

Ký webhook với HMAC. Thử lại với thời gian chờ theo cấp số nhân.

Quét và kho bạc

Khóa gửi tiền nóng trực tuyến để tự động hóa - quét định kỳ vào kho lạnh:

// After confirmation
await usdtContract.transfer(treasuryAddress, balance).send();

Tính Năng lượng khi quét txs — đóng băng TRX trên ví nóng hoặc duy trì bộ đệm TRX.

Bảo mật {#bảo mật}

  • Không bao giờ lưu trữ hạt giống chính trên máy chủ ứng dụng mà không được mã hóa — sử dụng HSM hoặc KMS
  • Xác thực địa chỉ bằng TronWeb.isAddress()xác thực địa chỉ
  • Điểm cuối hóa đơn công khai giới hạn tỷ lệ
  • Giám sát các dòng tiền ra ngoài dự kiến (cảnh báo thỏa hiệp)
  • Bảo mật hợp đồng thông minh nếu sử dụng hợp đồng ký quỹ

Đề xuất về trải nghiệm người dùng

  • Hiển thị mã QR kèm địa chỉ + nhãn mạng "TRC-20 USDT"
  • Hiển thị chính xác số tiền dự kiến (6 số thập phân)
  • Đếm ngược thời gian hết hạn hóa đơn
  • Link tới TronScan sau khi thanh toán
  • Cảnh báo: sai mạng sẽ mất tiền — hướng dẫn sai mạng

Xử lý lỗi

Trường hợpHành động
Trả lương thấpChính sách tín dụng hoặc hoàn trả một phần
Trả quá nhiềuTín dụng vượt mức hoặc hoàn trả thủ công
Thanh toán trễĐơn hàng đã hết hạn — hỗ trợ thủ công
đôi txidBình thường bỏ qua
Đang chờ xử lýThăm dò ý kiến ​​cho đến SUCCESS hoặc hết thời gian

Kiểm tra

  1. Triển khai lên mạng thử nghiệm Shasta bằng thử nghiệm USDT
  2. Mô phỏng SUCCESS và REVERT txs
  3. Kiểm tra tải giới hạn tốc độ TronGrid
  4. Kiểm tra hỗn loạn: webhook trùng lặp, hết thời gian chờ API

Hướng dẫn về mạng thử nghiệm Nile.

Danh sách kiểm tra khắc phục sự cố

Nếu có sự cố xảy ra trên TRON, hãy xử lý nó như một vấn đề gỡ lỗi có cấu trúc: xác nhận txid chính xác trên chuỗi, xác minh địa chỉ hợp đồng mục tiêu và chỉ sau đó mới quyết định xem liệu lỗi có thể phục hồi được hay không. Trên TRON, nhiều vấn đề “bí ẩn” chỉ đơn giản là một trong số: mạng sai (mainnet so với testnet), hợp đồng mã thông báo sai (USDT giả / mã thông báo có tên tương tự), không đủ tài nguyên (OUT_OF_ENERGY / băng thông) hoặc độ trễ giao diện người dùng/trình lập chỉ mục giữa ví và trình khám phá.

Bắt đầu với các bước kiểm tra dựa trên chuỗi sau:- Luôn sao chép toàn bộ txid/hash từ ví hoặc explorer của bạn.

  • Xác nhận trạng thái kết quả tx trên TronScan (SUCCESS, REVERT, OUT_OF_ENERGY hoặc vẫn đang chờ xử lý).
  • Kiểm tra xem địa chỉ người nhận/hợp đồng có khớp với nội dung bạn định gửi hay không.
  • Nếu đó là lệnh gọi hợp đồng, hãy xác nhận rằng bộ chọn chức năng và các tham số phù hợp với tiêu chuẩn mã thông báo mà bạn cho rằng mình đang sử dụng (TRC-20 so với TRC-10 so với BEP-20 trên BSC).

Sau đó áp dụng đường dẫn sửa lỗi cho danh mục của bạn:

  • Xác nhận trạng thái và thông số giao dịch.
  • Xác minh địa chỉ (hợp đồng mã thông báo, người nhận, bộ định tuyến/người chi tiêu).
  • Thêm hoặc ủy quyền tài nguyên (Năng lượng/Băng thông) khi lỗi do tài nguyên.

###Những lỗi thường gặp

Các mẫu này gây ra hầu hết các lỗi ở cấp độ người dùng:

  • Sử dụng địa chỉ mainnet trên testnet (hoặc ngược lại).
  • Sao chép ký hiệu mã thông báo thay vì địa chỉ hợp đồng TRC-20 thực tế.
  • Ký sai địa chỉ phê duyệt/chi tiêu do liên kết UI độc hại hoặc lỗi thời.
  • Thử lại mà không thay đổi đầu vào bị lỗi (ví dụ: REVERT tiếp tục hoàn nguyên cho đến khi bạn sửa được tham số).

Nếu bạn không chắc chắn, đừng “gửi lại”. Thực hiện một thay đổi có kiểm soát, xác minh trên TronScan rồi tiếp tục.

##Câu hỏi thường gặp

Làm cách nào để biết liệu giao dịch có thực sự được xác nhận hay không?

Sử dụng TronScan và kiểm tra trạng thái kết quả tx. Nhãn “đang chờ xử lý” của ví có thể bị trễ; trạng thái dây chuyền là nguồn gốc của sự thật. Sao chép txid và xác minh SUCCESS/REVERT/OUT_OF_ENERGY, không chỉ văn bản giao diện người dùng.

Tại sao giao diện người dùng khác với TronScan?

Một số ví và dApp sử dụng các bộ chỉ mục hoặc lớp bộ đệm khác nhau. Độ trễ ngắn giữa phát sóng và lập chỉ mục là bình thường; so sánh txid và đợi chuỗi ổn định trước khi kết luận thất bại.

Tôi nên làm gì sau REVERT?

Dừng và giải mã cuộc gọi thất bại. Hầu hết REVERT đều do tham số không hợp lệ, địa chỉ hợp đồng sai, thiếu phê duyệt hoặc không khớp giữa tiêu chuẩn và phương thức mã thông báo. Khắc phục nguyên nhân rồi ký lại.

Ký phê duyệt không giới hạn có an toàn không?

Phê duyệt không giới hạn chỉ an toàn đối với các địa chỉ chi tiêu đáng tin cậy mà bạn đã xác minh (nguồn đã xác minh, bộ định tuyến chính xác và hợp đồng mã thông báo dự kiến). Để thử nghiệm, hãy ưu tiên phê duyệt có giới hạn và thu hồi sau khi bạn hoàn thành.

TRON yêu cầu những tài nguyên gì cho cuộc gọi hợp đồng?

Việc thực thi hợp đồng thông minh chủ yếu tiêu thụ Năng lượng, trong khi byte giao dịch tiêu thụ Băng thông. Nếu bạn nhận được OUT_OF_ENERGY, hãy thêm/đóng băng/ủy thác Năng lượng. Nếu băng thông cạn kiệt, hãy tập trung vào việc giữ đủ chất lỏng TRX để phân bổ byte và tài nguyên.

Làm cách nào để giảm phiếu hỗ trợ?

Hiển thị cho người dùng thông báo rõ ràng về “điều gì đã xảy ra” dựa trên trạng thái chuỗi và liên kết trực tiếp đến hướng dẫn có liên quan (đang chờ xử lý, không thành công, hết năng lượng hoặc xác minh). Lưu trữ txid để bạn có thể hòa giải nhanh chóng.

Hướng dẫn liên quan {#có liên quan}

Câu hỏi thường gặp

Hợp đồng USDT chính thức trên TRON để thanh toán là gì?

TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t — lọc tất cả phát hiện theo hợp đồng này.

Người bán phải đợi bao nhiêu lần xác nhận?

Hầu hết tín dụng sau một khối (~3 giây). Giá trị cao có thể chờ lâu hơn.

Đối với kinh doanh thủ công thì có. Thanh toán tự động yêu cầu tích hợp API.

Khách hàng có cần TRX thanh toán cho tôi USDT không?

Người gửi thanh toán phí Năng lượng/TRX — không phải người bán. Người bán trả phí quét.

USDT trên TRON có thể đảo ngược được không?

Không có khoản bồi hoàn. Việc hoàn tiền yêu cầu gửi lại USDT theo cách thủ công.