@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
JavaScript
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