Интеграция с Transak
Transak — on/off-ramp инфраструктура с акцентом на Web3 и DeFi-интеграции. Поддерживает 160+ стран, 130+ криптовалют включая токены на нестандартных сетях (Polygon, Arbitrum, Optimism, Avalanche), что делает его популярным выбором для DeFi-приложений и NFT-маркетплейсов.
SDK интеграция
import Transak from '@transak/transak-sdk';
const transak = new Transak({
apiKey: process.env.TRANSAK_API_KEY,
environment: 'PRODUCTION', // или 'STAGING'
defaultCryptoCurrency: 'MATIC',
network: 'polygon',
walletAddress: userWalletAddress,
disableWalletAddressForm: true, // запрещаем изменение адреса
fiatCurrency: 'USD',
fiatAmount: 50,
email: user.email,
partnerCustomerId: user.id.toString(),
// Кастомизация UI
themeColor: '0066FF',
hideMenu: true,
isFeeCalculationHidden: false,
});
transak.init();
// События
Transak.on(Transak.EVENTS.TRANSAK_ORDER_CREATED, (orderData) => {
console.log('Order created:', orderData);
});
Transak.on(Transak.EVENTS.TRANSAK_ORDER_SUCCESSFUL, (orderData) => {
// Транзакция успешно завершена
handleSuccessfulPurchase(orderData);
transak.close();
});
Transak.on(Transak.EVENTS.TRANSAK_WIDGET_CLOSE, () => {
transak.close();
});
Server-side API
Для более глубокой интеграции используем прямой API:
import httpx
class TransakClient:
BASE_URL = "https://api.transak.com/api/v2"
def __init__(self, api_key: str, api_secret: str):
self.api_key = api_key
self.api_secret = api_secret
self.session = httpx.AsyncClient()
async def get_order_status(self, order_id: str) -> dict:
resp = await self.session.get(
f"{self.BASE_URL}/partners/order/{order_id}",
headers={"api-secret": self.api_secret}
)
resp.raise_for_status()
return resp.json()["data"]
async def get_available_currencies(self, fiat: str = "USD") -> list:
resp = await self.session.get(
f"{self.BASE_URL}/currencies",
params={"apiKey": self.api_key, "fiatCurrency": fiat}
)
return resp.json()["response"]
Webhook обработка
import hmac, hashlib, json
def verify_transak_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)
@app.post("/webhooks/transak")
async def handle_transak_webhook(request: Request):
body = await request.body()
sig = request.headers.get("X-Transak-Signature", "")
if not verify_transak_webhook(body, sig, TRANSAK_WEBHOOK_SECRET):
raise HTTPException(403)
event = json.loads(body)
order = event["data"]
if order["status"] == "COMPLETED":
await credit_user(
user_id=order["partnerCustomerId"],
crypto_amount=order["cryptoAmount"],
currency=order["cryptoCurrency"],
tx_hash=order["transactionHash"]
)
Особенности Transak: поддержка local payment methods (UPI в Индии, PIX в Бразилии, IMPS/NEFT), встроенный KYC flow с biometric verification, поддержка ERC-20 токенов по кастомным контрактным адресам. Комиссии: 0.99–5.5% в зависимости от метода оплаты и региона. Для Web3-проектов с фокусом на L2 сети — один из лучших вариантов из-за широкой поддержки EVM-совместимых сетей.







