diff --git a/public/assets/wallet.js b/public/assets/wallet.js
index ab982b6..4b2cafc 100644
--- a/public/assets/wallet.js
+++ b/public/assets/wallet.js
@@ -17,7 +17,15 @@ window.IAPWallet = (function () {
const mod = await import(APPKIT_URL);
const { createAppKit, WagmiAdapter, networks } = mod;
const netMap = { 80002: networks.polygonAmoy, 137: networks.polygon };
- const net = netMap[Number(c.chainId)] || networks.polygonAmoy;
+ const base = netMap[Number(c.chainId)] || networks.polygonAmoy;
+ // Override the chain's RPC with our clean public endpoint. AppKit's built-in
+ // networks advertise the WalletConnect RPC proxy
+ // (rpc.walletconnect.org/v1/?chainId=…&projectId=…) as the chain RPC, and
+ // wallets reject that query-string URL as "Invalid URL" when adding/switching
+ // the network — the cause of Trust's "Invalid URL", MetaMask's switch loop,
+ // and the failed mobile buy (the chain switch never completed).
+ const rpc = String(c.rpc || '').trim();
+ const net = rpc ? Object.assign({}, base, { rpcUrls: { default: { http: [rpc] }, public: { http: [rpc] } } }) : base;
const projectId = String(c.walletConnectProjectId || '').trim();
const wagmiAdapter = new WagmiAdapter({ networks: [net], projectId });
modal = createAppKit({
diff --git a/public/index.html b/public/index.html
index d4e9802..1368b15 100644
--- a/public/index.html
+++ b/public/index.html
@@ -439,7 +439,7 @@
-
+