যা পেতে পারো
শুধু নেটিভ TRX। TRON-এর USDT-সহ TRC-20 টোকেন ইনভয়েসের পেমেন্ট পদ্ধতি নয়। সাধারণ নোড সুস্থ হলেই ইনডেক্স করা বা চূড়ান্ত লেনদেনের ইতিহাস আছে প্রমাণ হয় না।
Store সেট করো
- Wholly Crypto install করে project/store বানাও, private wallet backup রাখো।
- Scanner-compatible connection দেখে Store → Payment methods-এ chain আর intended asset চালু করো।
- Confirmation/expiry সেট করো। ছোট invoice পরীক্ষা করে order fulfil-এর আগে settlement verify করো।
Payment কোথায় আসে
চেকআউটের TRON রিসিভিং অ্যাড্রেস ব্যবহার করো। পেমেন্ট শনাক্ত করতে স্ক্যানার-সামঞ্জস্যপূর্ণ ইতিহাস উৎস লাগে; শুধু সুস্থ ব্লক হাইট জানানো নোড যথেষ্ট নয়। স্বাধীন সেবাদাতা কনফিগার রাখো।
অর্থ গ্রহণের গাইডপ্রস্তুত হলে fund সরাও
নেটিভ TRX-এ ম্যানুয়াল সেন্ড আর অটো সুইপ আছে। ট্রান্সফার প্রিভিউতে নেটওয়ার্ক রিসোর্স খরচ আর গন্তব্য চালু করার খরচ থাকলে দেখো। পরিমাণ আর ফির জন্য যথেষ্ট TRX রাখো।
Automatic sweep tutorialএখানে USDT-TRC20 নিতে পারি?
না। এই ইন্টিগ্রেশনে নেটিভ TRX নেওয়া যায়, TRC-20 ইনভয়েস পেমেন্ট নয়। USDT নিতে সমর্থিত যাচাই করা Ethereum বা Solana পদ্ধতি ব্যবহার করো। TRX ইনভয়েস দিতে কখনো TRC-20 টোকেন পাঠিও না।
Payment সমস্যা সমাধান
আগে এই network দেখো
সুস্থ TRON নোডেও স্ক্যানারের দরকারি লেনদেন ইতিহাস না-ও থাকতে পারে। স্ক্যানারের প্রস্তুতি দেখো। এই চেকআউটে TRX নেওয়া যায়, USDT-TRC20 নয়।
Payment missing বা delayed
Network, address, asset আর required reference invoice-এর সঙ্গে মিলাও। Scanner readiness/confirmation progress দেখো। প্রথম transaction না দেখে দ্বিতীয় payment চেয়ো না।
অর্থ গ্রহণের গাইডWallet restore বা একত্র করো
Private backup/derivation detail রাখো। অন্য wallet app সব receiving address নাও দেখাতে পারে। Sending/recovery chain আর wallet format-এর ওপর নির্ভর করে; শুধু recovery word import-এ কোনোটি নিশ্চিত নয়।
ব্যাকআপ ও পুনরুদ্ধারFee আর verification
Default processing fee invoice fiat value-এর 1%, separate credit থেকে। তোমার assigned rate প্রযোজ্য। Network fee/server cost আলাদা।
Public provider outage/rate limit হতে পারে। Submitted transaction বা return redirect payment-এর প্রমাণ নয়। Verified invoice status আর signed notification নাও।
প্রসেসিং ক্রেডিট API, IPN ও ওয়েবহুকরেট ক্যালকুলেটর
একটি পরিমাণ রূপান্তর করো
এটি আনুমানিক হিসাব, পেমেন্ট কোট নয়। নেটওয়ার্ক ফি, এক্সচেঞ্জ ফি ও মার্চেন্টের স্প্রেড ধরা নেই।
রেট কোথা থেকে আসে?
ক্রিপ্টোর অনুমানে ক্যাশ করা পাবলিক Kraken দাম ব্যবহৃত হয়, যেখানে আছে সেখানে Binance-ও। কিছু Binance দামে USD-এর রেফারেন্স হিসেবে USDT ব্যবহৃত হয়। প্রচলিত মুদ্রার রেট Frankfurter থেকে আসে; এগুলো দৈনিক রেফারেন্স, লাইভ ট্রেডিং কোট নয়।
স্ন্যাপশট নিজে থেকে রিফ্রেশ হয়। ফলের নিচে উৎসের তারিখ দেখো। তোমার দেওয়া পরিমাণ ব্রাউজারেই থাকে। অ্যাসেট তালিকায় থাকা পেমেন্ট সমর্থনের নিশ্চয়তা নয়।
Kraken · Binance · Frankfurter · অ্যাসেটের নাম ও আইকন: CoinGecko
API দিয়ে invoice তৈরি
Server-এ example চালাও। API host, project/store ID বদলাও, credential private রাখো। Amount decimal string।
আগে store-এ method চালু করো। Selection enabled method কমায়, asset যোগ করে না। কিছু না মিললে store default। Checkout দেখানোর আগে returned method দেখো।
: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new invoice.
curl --fail-with-body --max-time 30 \
--request POST \
--url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices" \
--header "Authorization: Bearer $WHOLLY_TOKEN" \
--header 'Idempotency-Key: order-1042-attempt-1' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "tron",
"asset_tickers": [
"TRX"
]
}
]
}'// Node.js 18+ · run on your server, never in browser code.
const token = process.env.WHOLLY_TOKEN;
if (!token) throw new Error("Set WHOLLY_TOKEN");
// Keep this key and the exact body for retries; use a new key for each new invoice.
const body = `{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "tron",
"asset_tickers": [
"TRX"
]
}
]
}`;
const response = await fetch("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Idempotency-Key": "order-1042-attempt-1",
"Content-Type": "application/json"
},
body,
redirect: "error",
signal: AbortSignal.timeout(30000)
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());<?php
// PHP 8+ with the cURL extension; run on your server.
$token = getenv('WHOLLY_TOKEN');
if (!$token) { throw new RuntimeException('Set WHOLLY_TOKEN'); }
// Keep this key and the exact body for retries; use a new key for each new invoice.
$body = <<<'JSON'
{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "tron",
"asset_tickers": [
"TRX"
]
}
]
}
JSON;
$ch = curl_init("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token, "Idempotency-Key: order-1042-attempt-1", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => $body,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) { throw new RuntimeException(curl_error($ch)); }
curl_close($ch);
if ($status < 200 || $status >= 300) { throw new RuntimeException("HTTP $status: $response"); }
print_r(json_decode($response, true, 512, JSON_THROW_ON_ERROR));# Python 3 · standard library; run on your server.
import json
import os
from urllib.request import Request, build_opener, HTTPRedirectHandler
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
# Keep this key and the exact body for retries; use a new key for each new invoice.
headers = {
"Idempotency-Key": "order-1042-attempt-1",
"Content-Type": "application/json"
}
headers["Authorization"] = "Bearer " + os.environ["WHOLLY_TOKEN"]
body = """{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "tron",
"asset_tickers": [
"TRX"
]
}
]
}""".encode("utf-8")
request = Request("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices",
method="POST", headers=headers, data=body)
# Non-2xx responses raise HTTPError. Do not retry writes with a new key.
with build_opener(NoRedirect()).open(request, timeout=30) as response:
print(json.load(response))