From ba5ce34620f61913e02d095039fdfa5795bab311 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Thu, 12 Mar 2026 12:12:31 -0700 Subject: [PATCH] feat(transak): pre-fill fiat amount and currency in widget Pass fiatAmount, defaultFiatAmount, fiatCurrency, and defaultFiatCurrency to the Transak widget URL so users see the transaction total immediately without manual entry. Applied to both rcart payment sessions and rflows onramp adapter. Co-Authored-By: Claude Opus 4.6 --- modules/rcart/mod.ts | 16 ++++++++++++++-- modules/rflows/lib/transak-onramp.ts | 8 ++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/rcart/mod.ts b/modules/rcart/mod.ts index 560dd6b..5f39ced 100644 --- a/modules/rcart/mod.ts +++ b/modules/rcart/mod.ts @@ -1370,7 +1370,7 @@ routes.post("/api/payments/:id/transak-session", async (c) => { const host = new URL(c.req.url).hostname; - const widgetUrl = createTransakWidgetUrl({ + const widgetParams: Record = { apiKey: transakApiKey, referrerDomain: extractRootDomain(host), cryptoCurrencyCode: p.token, @@ -1383,7 +1383,19 @@ routes.post("/api/payments/:id/transak-session", async (c) => { email, themeColor: '6366f1', hideMenu: 'true', - }); + }; + + // Pre-fill fiat amount/currency so user sees the total immediately + if (p.fiatAmount) { + widgetParams.fiatAmount = p.fiatAmount; + widgetParams.defaultFiatAmount = p.fiatAmount; + } + if (p.fiatCurrency) { + widgetParams.fiatCurrency = p.fiatCurrency; + widgetParams.defaultFiatCurrency = p.fiatCurrency; + } + + const widgetUrl = createTransakWidgetUrl(widgetParams); return c.json({ widgetUrl }); }); diff --git a/modules/rflows/lib/transak-onramp.ts b/modules/rflows/lib/transak-onramp.ts index 6cfeb68..4c344a1 100644 --- a/modules/rflows/lib/transak-onramp.ts +++ b/modules/rflows/lib/transak-onramp.ts @@ -30,6 +30,14 @@ export class TransakOnrampAdapter implements OnrampProvider { themeColor: '6366f1', hideMenu: 'true', }; + if (req.fiatAmount > 0) { + widgetParams.fiatAmount = String(req.fiatAmount); + widgetParams.defaultFiatAmount = String(req.fiatAmount); + } + if (req.fiatCurrency) { + widgetParams.fiatCurrency = req.fiatCurrency; + widgetParams.defaultFiatCurrency = req.fiatCurrency; + } if (req.returnUrl) widgetParams.redirectURL = req.returnUrl; const widgetUrl = createTransakWidgetUrl(widgetParams);