UNPKG

@daimo/pay

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

60 lines (57 loc) 1.78 kB
import { worldchainWLD, worldchainUSDC, assert } from '@daimo/pay-common'; import { getAddress } from 'viem'; import { MiniKit, Tokens } from '@worldcoin/minikit-js'; async function promptWorldcoinPayment(order, trpc) { try { if (!MiniKit.isInstalled()) { console.error( "[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature." ); return null; } const paymentOptions = await trpc.getTokenPaymentOptions.query({ orderId: order.id, tokens: [ { chainId: worldchainWLD.chainId, token: worldchainWLD.token }, { chainId: worldchainUSDC.chainId, token: worldchainUSDC.token } ] }); const wld = paymentOptions.find( (opt) => getAddress(opt.token.token) === getAddress(worldchainWLD.token) ); const usdc = paymentOptions.find( (opt) => getAddress(opt.token.token) === getAddress(worldchainUSDC.token) ); assert(wld != null, "WLD DP token not found"); assert(usdc != null, "USDC DP token not found"); const paymentId = crypto.randomUUID().replace(/-/g, ""); const payload = { reference: paymentId, to: order.intentAddr, tokens: [ { symbol: Tokens.WLD, token_amount: wld.amount }, { symbol: Tokens.USDC, token_amount: usdc.amount } ], description: order.metadata.intent }; const { finalPayload } = await MiniKit.commandsAsync.pay(payload); return { paymentId, finalPayload }; } catch (error) { console.error("[WORLD] Error sending payment", error); return null; } } export { promptWorldcoinPayment }; //# sourceMappingURL=promptWorldPayment.js.map