Skip to content

yeheskieltame/x402-sample-project

Repository files navigation

buat dulu .env dengan isi

GEMINI_API_KEY=api_gemini
PAY_TO_ADDRESS=wallet_tujuan_penerimaan pembayaran

lalu jalankan

pnpm install
pnpm install wagmi viem @tanstack/react-query @x402/fetch @x402/next @x402/core @x402/evm @google/generative-ai

lalu jalankan

pnpm dev

tambahkan di bawa route(nanti):

export const POST = withX402(handler, routeConfig, server);

di page nanti tambahkan :

      if (walletClient.chain.id !== X402_CONFIG.CHAIN_ID) {
        setError(`Please switch wallet to Base Sepolia (Chain ID: ${X402_CONFIG.CHAIN_ID})`);
        setLoading(false);
        return;
      }

      const signer = {
        address: walletClient.account.address,
        signTypedData: async (params: {
          domain: Record<string, unknown>;
          types: Record<string, unknown>;
          primaryType: string;
          message: Record<string, unknown>;
        }) => {
          return walletClient.signTypedData({
            domain: params.domain as Parameters<typeof walletClient.signTypedData>[0]["domain"],
            types: params.types as Parameters<typeof walletClient.signTypedData>[0]["types"],
            primaryType: params.primaryType,
            message: params.message,
          });
        },
      };

      const client = new x402Client()
        .register(X402_CONFIG.NETWORK_ID, new ExactEvmScheme(signer));

      const httpClient = new x402HTTPClient(client);
      const x402Fetch = wrapFetchWithPayment(fetch, httpClient);

      const res = await x402Fetch("/api/chat", {
        lanjut kek nerima format biasa di awal
      });

terus buat file untuk variable:

export const NETWORK_ID = "eip155:84532" as const;
export const CHAIN_ID = 84532;
export const PRICE = "$0.001";
export const TOKEN_ADDRESS = "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
export const FACILITATOR_URL = "https://x402.org/facilitator";
export const RESOURCE_DESCRIPTION = "AI Chat powered by Gemini";

export const X402_CONFIG = {
    NETWORK_ID,
    CHAIN_ID,
    PRICE,
    TOKEN_ADDRESS,
    FACILITATOR_URL,
    RESOURCE_DESCRIPTION,
} as const;

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors