คู่มือเชื่อมต่อ ONE Payment บน BSC Testnet
สำหรับลูกค้าและพาร์ทเนอร์ที่ต้องการทดสอบ integration กับระบบรับชำระเงิน USDT ของ ONE Payment ก่อนเชื่อมต่อจริงบน Mainnet — อธิบายเหตุผลที่ต้องใช้ Contract Address เฉพาะ และวิธีตั้งค่ากระเป๋าเงินให้พร้อมทดสอบ
ทำไมต้องใช้ Contract Address บน Testnet?
คำตอบสั้น: BSC Testnet ไม่มี USDT กลางที่ทุกคนใช้ร่วมกัน ต่างจาก Mainnet ที่มี USDT (BEP20) ตัวจริงของ Binance-Peg เพียงตัวเดียว
เหตุผล
- Tether ไม่ deploy บน testnet — บริษัทเจ้าของ USDT ไม่สนใจ deploy contract บน test network เพราะไม่มีมูลค่าจริง
- Binance Faucet ไม่แจก USDT แล้ว — ปัจจุบัน faucet ของ BNB Chain แจกแค่
tBNB(gas token) เท่านั้น - แต่ละโปรเจกต์ deploy mock เอง — PancakeSwap, Venus, Aave บน testnet ต่างมี "USDT" ของตัวเอง คนละ contract address
Mock USDT ของแต่ละโปรเจกต์ ใช้ร่วมกันไม่ได้ เพราะ contract address ไม่ตรงกัน ถ้าคุณมี USDT บน testnet จาก dApp อื่นอยู่แล้ว จะใช้ทดสอบกับ ONE Payment ไม่ได้ และระบบจะมองไม่เห็น balance นั้นเลย ต้องใช้ contract เฉพาะของ ONE Payment เท่านั้น
ข้อมูล Network
เพิ่ม BSC Testnet เข้ากระเป๋าเงิน (MetaMask, Trust Wallet, Rabby ฯลฯ) ด้วยค่าด้านล่างนี้
USDT Contract (Mock) ของระบบ ONE Payment
ONE Payment ใช้ mock USDT contract เฉพาะที่ deploy ไว้บน BSC Testnet สำหรับ sandbox testing ใช้ contract address ด้านล่างเท่านั้น contract USDT จากที่อื่นบน testnet ใช้กับระบบ ONE Payment ไม่ได้
| คุณสมบัติ | ค่า |
|---|---|
| Name | Tether USD (Mock) |
| Symbol | USDT |
| Decimals | 18 (ตรงกับ Binance-Peg USDT บน mainnet) |
| Standard | BEP20 / ERC20-compatible |
| Explorer | ดูบน BscScan Testnet |
วิธีตั้งค่ากระเป๋า (MetaMask)
-
ติดตั้ง MetaMask
ดาวน์โหลด extension หรือแอปจาก metamask.io และสร้างกระเป๋าใหม่ (หรือใช้กระเป๋าเดิมก็ได้ — testnet ใช้ private key เดียวกับ mainnet ได้แต่จะอยู่คนละ network)
-
เพิ่ม BSC Testnet
กด Network selector ด้านบน → Add network → Add a network manually → กรอกค่าจากตาราง Network ด้านบน
-
ขอ tBNB จาก Faucet
เข้า bnbchain.org/en/testnet-faucet วาง wallet address ของคุณ → กดขอ
0.3 tBNB(รอประมาณ 30 วินาที, จำกัด 1 ครั้ง/24 ชั่วโมง/address)tBNB คืออะไร?tBNB = test BNB ใช้จ่าย gas fee บน testnet เท่านั้น ไม่มีมูลค่าจริง ถ้าจะรับ USDT เฉยๆ ไม่ต้องมี tBNB ก็ได้ แต่ถ้าจะ โอน USDT ต่อ ต้องมี tBNB เล็กน้อย (~0.001 ก็พอ)
ทำไม ONE Payment ไม่โอน tBNB ให้เลย?- tBNB เป็น gas token ของ BNB Chain network ไม่ใช่ token ที่ ONE Payment เป็นผู้ออก/ดูแล เปรียบเหมือนค่าไฟฟ้าของ wallet ที่ต้องเติมเอง — มาจากเครือข่าย ไม่ใช่จากผู้ให้บริการ
- Faucet ของ BNB Chain ออกแบบให้ขอเองแบบ self-service และ rate-limit แยกตาม wallet address ผู้ขอ ถ้า ONE Payment โอน tBNB จาก wallet กลางให้ลูกค้าทุกคน wallet นั้นจะถูก limit ทันทีและกระทบลูกค้าทั้งหมดพร้อมกัน
- ขอที่ faucet ใช้เวลาแค่ ~30 วินาที — เร็วกว่ารอทีม support ตอบ
- 0.3 tBNB ต่อ 24 ชั่วโมงเพียงพอสำหรับการทดสอบหลายร้อย transaction (gas fee ต่อ transfer ~0.0001 tBNB)
-
Import USDT Token
ใน MetaMask เลือก network BSC Testnet → เลื่อนลงไปแท็บ Tokens → กด Import tokens → วาง contract address
0x20A797b100416FF3a62158192A2D4a1baa70f23b→ MetaMask จะ auto-fillUSDTและ18 decimalsขั้นตอนนี้สำคัญที่สุดถ้าไม่ import token เข้า wallet จะ มองไม่เห็น balance ทั้งที่จริงๆ token อยู่ที่ wallet แล้ว (on-chain transaction success แล้ว) เพราะ wallet UI ไม่รู้จัก mock contract นี้โดย default
-
Mint test USDT ให้ wallet ตัวเอง
Contract ของ ONE Payment เปิด
mint()แบบ public — คุณสามารถสร้าง test USDT ให้ wallet ตัวเองได้ทันทีผ่าน BscScan ไม่ต้องรอ support และ contract ถูก verify แล้ว ทำให้กรอกผ่าน UI ได้สะดวก- เปิด BscScan Write Contract
- กด Connect to Web3 → เชื่อม MetaMask (ตรวจให้แน่ใจว่าอยู่ใน BSC Testnet, Chain ID 97)
- หาฟังก์ชัน
mintแล้วคลิกขยาย - ช่อง
to (address)→ วาง wallet address ของคุณ - ช่อง
amount (uint256)→ ใส่จำนวนหน่วย wei (ดูตารางด้านล่าง) - กด Write → MetaMask popup ให้ confirm transaction (เสีย gas ~0.0001 tBNB)
- รอ tx success (~3-5 วินาที) → กลับมาที่ MetaMask จะเห็นยอด USDT ขึ้นทันที
ต้องการได้ กรอกในช่อง amount 1 USDT 1000000000000000000100 USDT 1000000000000000000001,000 USDT 100000000000000000000010,000 USDT 10000000000000000000000เคล็ดลับBscScan มีปุ่ม + ด้านขวาช่อง amount — กดแล้วใส่จำนวน USDT ตามด้วยเลข
10^18ระบบจะคูณ decimals ให้อัตโนมัติ ไม่ต้องนับเลขศูนย์เองทางเลือก: ไม่สะดวก mint เอง?ติดต่อทีม ONE Payment Support พร้อมแจ้ง wallet address และจำนวน test USDT ที่ต้องการ ทีมโอนให้ได้
แอปกระเป๋าที่แนะนำ
MetaMask แนะนำ
มาตรฐาน DeFi/EVM ใช้กันแพร่หลายที่สุด เพิ่ม custom network ได้ มี extension และ mobile
metamask.io →Rabby Wallet Dev
โดย DeBank ออกแบบมาเพื่อ multi-chain และ testnet โดยเฉพาะ UI ดีกว่า MetaMask
rabby.io →BscScan Testnet Explorer
ตรวจสอบ transaction และ balance บน testnet ดูได้โดยไม่ต้องล็อกอิน
testnet.bscscan.com →คำถามที่พบบ่อย
โอน USDT แล้วทำไมไม่ขึ้นใน MetaMask?
99% ของกรณีเกิดจากยังไม่ได้ Import token เข้า MetaMask — ทำตามขั้นตอนที่ 4 ด้านบน หรือเข้า BscScan Testnet ดู transaction ว่า status เป็น Success หรือไม่ ถ้า success แต่ wallet ไม่ขึ้น = ปัญหาที่ wallet UI ไม่ใช่ที่ blockchain
มี USDT บน testnet อยู่แล้วจาก dApp อื่น ใช้ทดสอบกับ ONE Payment ได้ไหม?
ไม่ได้ ระบบ ONE Payment ฟัง event เฉพาะ contract 0x20A797...0f23b เท่านั้น USDT จาก PancakeSwap testnet หรือ dApp อื่น = คนละ contract address = คนละ token ระบบจะไม่ detect การรับเงินเลย
โอนผิด network จะทำยังไง?
ตรวจให้แน่ใจว่ากำลังอยู่ใน BSC Testnet (Chain ID 97) ก่อนโอนเสมอ — ถ้าโอนผิดไป mainnet หรือ chain อื่นที่มี contract ที่ address เดียวกัน อาจทำให้สูญเสีย token จริง (mainnet) ได้
tBNB หมด ขอเพิ่มได้ไหม?
Faucet ให้ 0.3 tBNB ต่อ 24 ชั่วโมง/address ถ้าหมดเร็วให้:
- รอครบ 24 ชั่วโมงแล้วขอใหม่ที่ bnbchain.org/en/testnet-faucet
- สร้าง wallet address ใหม่เพื่อขออีกครั้ง (cap แยกตาม address)
- ถามเพื่อนในทีมที่มี tBNB เหลือให้โอนให้
Mock contract นี้มี mint() public ไหม?
มีครับ — และเปิดให้ใครก็เรียกได้ ดูวิธี mint test USDT ให้ wallet ตัวเองที่ขั้นตอนที่ 5 ของ Setup สำหรับ developer ที่อยากเรียกผ่าน Remix หรือ ethers.js: function signature คือ mint(address to, uint256 amount)
สรุปแบบสั้น
- เพิ่ม BSC Testnet ใน wallet (Chain ID
97) - Import USDT contract:
0x20A797b100416FF3a62158192A2D4a1baa70f23b - tBNB จาก faucet สำหรับ gas (จำเป็นเฉพาะตอนต้องการส่งออก ไม่ใช่ตอนรับ)
ONE Payment — BSC Testnet Integration Guide
For customers and partners integrating with the ONE Payment USDT settlement system on BSC Testnet before going live on Mainnet — explains why a specific contract address is required and how to set up your wallet for testing.
Why a specific Contract Address?
Short answer: BSC Testnet has no canonical USDT. Unlike Mainnet, where there is one official Binance-Peg USDT, testnet has no shared standard.
Reasons
- Tether does not deploy on testnets — the company behind USDT has no incentive to deploy contracts on test networks since they hold no real value.
- Binance Faucet no longer issues USDT — the BNB Chain faucet only dispenses
tBNB(gas token) today. - Each project deploys its own mock — PancakeSwap, Venus, Aave on testnet all have their own "USDT" with different contract addresses.
Mock USDTs from different projects are not interchangeable because they have different contract addresses. If you already hold "USDT" on testnet from another dApp, it will not work with ONE Payment — the backend simply won't see that balance. You must use the dedicated ONE Payment contract.
Network Details
Add BSC Testnet to your wallet (MetaMask, Trust Wallet, Rabby, etc.) using the values below.
ONE Payment Mock USDT Contract
ONE Payment uses a dedicated mock USDT contract deployed on BSC Testnet for sandbox testing. Only this contract address is recognized — other "USDT" contracts on testnet will not work with ONE Payment.
| Property | Value |
|---|---|
| Name | Tether USD (Mock) |
| Symbol | USDT |
| Decimals | 18 (matches Binance-Peg USDT on mainnet) |
| Standard | BEP20 / ERC20-compatible |
| Explorer | View on BscScan Testnet |
Wallet Setup (MetaMask)
-
Install MetaMask
Download the extension or app from metamask.io and create a new wallet (or use an existing one — testnet uses the same private key as mainnet but on a different network).
-
Add BSC Testnet
Click the network selector at the top → Add network → Add a network manually → fill in the values from the Network table above.
-
Get tBNB from the faucet
Visit bnbchain.org/en/testnet-faucet, paste your wallet address, and request
0.3 tBNB(~30s wait, limit once per 24h per address).What is tBNB?tBNB = test BNB, used only to pay gas fees on testnet — it has no real value. You don't need tBNB to receive USDT, but you need a tiny amount (~0.001) if you want to send USDT later.
Why doesn't ONE Payment just send you tBNB directly?- tBNB is the BNB Chain network's gas token — it's not issued or managed by ONE Payment. Think of it like the electricity that powers your wallet: it comes from the network, not from your service provider.
- The BNB Chain faucet is designed as a self-service tool and is rate-limited per wallet address. If ONE Payment routed tBNB through a single central wallet to all customers, that wallet would hit the limit instantly and block every customer at once.
- Claiming from the faucet directly takes only ~30 seconds — much faster than waiting for a support reply.
- 0.3 tBNB per 24 hours easily covers hundreds of test transactions (typical gas fee per transfer is ~0.0001 tBNB).
-
Import the USDT token
In MetaMask, switch to BSC Testnet → scroll to the Tokens tab → click Import tokens → paste contract address
0x20A797b100416FF3a62158192A2D4a1baa70f23b→ MetaMask will auto-fillUSDTand18 decimals.This step is criticalIf you don't import the token, your wallet will not show the balance even though the tokens are actually in your wallet (the on-chain transaction succeeded). This is a wallet UI limitation — the wallet doesn't know about this mock contract by default.
-
Mint test USDT to your wallet
The ONE Payment contract exposes a public
mint()function — you can create test USDT for your own wallet on demand via BscScan, no need to wait for support. The contract is already verified, so the BscScan UI is fully functional.- Open BscScan Write Contract
- Click Connect to Web3 → link MetaMask (make sure you're on BSC Testnet, Chain ID 97)
- Find the
mintfunction and click to expand it to (address)field → paste your wallet addressamount (uint256)field → enter the value in wei (see table below)- Click Write → MetaMask will pop up to confirm the transaction (gas ~0.0001 tBNB)
- Wait for tx success (~3-5 seconds) → return to MetaMask, and the USDT balance appears immediately
To receive Enter in amount field 1 USDT 1000000000000000000100 USDT 1000000000000000000001,000 USDT 100000000000000000000010,000 USDT 10000000000000000000000TipBscScan shows a + button to the right of the amount field — click it, enter the USDT count followed by
10^18, and BscScan will multiply the decimals for you so you don't have to count zeros manually.Alternative: prefer not to mint yourself?Contact the ONE Payment Support team with your wallet address and the desired amount of test USDT — the team can transfer it to you.
Recommended Wallets
MetaMask Recommended
The DeFi/EVM standard. Most widely used. Supports custom networks. Available as browser extension and mobile app.
metamask.io →Rabby Wallet Dev
Built by DeBank, designed for multi-chain and testnet workflows. Better UX than MetaMask for power users.
rabby.io →Trust Wallet
Mobile-first wallet by Binance. Has BSC Testnet built-in — no manual RPC setup needed.
trustwallet.com →Frame.sh Desktop
Native macOS/Windows app focused on security and hardware-wallet integration.
frame.sh →BscScan Testnet Explorer
Inspect transactions and balances on testnet without logging in.
testnet.bscscan.com →FAQ
I sent USDT but MetaMask shows nothing — why?
99% of the time, you forgot to Import token in MetaMask — follow Step 4 above. Or check BscScan Testnet to verify the transaction status is Success. If success but the wallet shows nothing → it's a wallet UI issue, not a blockchain issue.
I already have "USDT" on testnet from another dApp — can I use it for testing?
No. ONE Payment only listens for Transfer events on contract 0x20A797...0f23b. USDT from PancakeSwap testnet or any other dApp = different contract address = different token entirely. The system will not detect any incoming payment.
What if I send to the wrong network?
Always confirm you're on BSC Testnet (Chain ID 97) before sending. If you accidentally send to mainnet or another chain that has a contract at the same address, you may lose real tokens (mainnet).
I'm out of tBNB — how do I get more?
The faucet dispenses 0.3 tBNB per address per 24h. If exhausted:
- Wait 24h and request again at bnbchain.org/en/testnet-faucet
- Use a different wallet address (the cap is per-address)
- Ask a teammate to send you some
Does the mock contract have a public mint()?
Yes, and anyone can call it. See Step 5 of the Wallet Setup for full mint instructions. For developers preferring Remix or ethers.js: the function signature is mint(address to, uint256 amount).
TL;DR
- Add BSC Testnet to your wallet (Chain ID
97) - Import USDT contract:
0x20A797b100416FF3a62158192A2D4a1baa70f23b - tBNB from the faucet for gas (only needed to send, not to receive)