Skip to main content
Stack Overflow
  1. About
  2. For Teams

Return to Answer

deleted 1 character in body
Source Link
Adeel Nawaz
  • 416
  • 3
  • 10
const swapTokens = async (req, res) => {
 try {
 const inputMint = "So11111111111111111111111111111111111111112"; // SOL
 const outputMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC
 const userPublicKey = new PublicKey("YOUR_WALLET_PUBLIC_KEY"); // Replace
 const amount = 0.000010;
 const solAmount = Math.floor(amount * 1e9);
 const quoteResponse = await (
 await fetch(
 `https://api.jup.ag/swap/v1/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${solAmount}&slippageBps=50`
 )
 ).json();
 console.log("Quote Response:", quoteResponse);
 // **Extract only `quoteResponse.quote`**
 const swapResponse = await (
 await fetch("https://api.jup.ag/swap/v1/swap", {
 method: "POST",
 headers: { "Content-Type": "application/json" },
 body: JSON.stringify({
 quoteResponse: quoteResponse.quote, //  Only pass `quote`
 userPublicKey: userPublicKey.toBase58(),
 }),
 })
 ).json();
 console.log("Swap Response:", swapResponse);
 // Deserialize transaction
 const transactionBase64 = swapResponse.swapTransaction;
 const transaction = VersionedTransaction.deserialize(Buffer.from(transactionBase64, "base64"));
 console.log("Deserialized Transaction:", transaction);
 // Sign with the main wallet
 const mainWallet = Keypair.fromSecretKey(Uint8Array.from(YOUR_SECRET_KEY)); // Replace
 transaction.sign([mainWallet]);
 // Convert to binary
 const transactionBinary = Buffer.from(transaction.serialize());
 // Send transaction
 const signature = await connection.sendRawTransaction(transactionBinary, {
 maxRetries: 2,
 skipPreflight: false, // Ensure preflight checks
 });
 console.log("Transaction Signature:", signature);
 // Confirm transaction
 const confirmation = await connection.confirmTransaction(signature, "confirmed");
 if (confirmation.value.err) {
 console.log(`Transaction failed: https://solscan.io/tx/${signature}`);
 } else {
 console.log(`Transaction successful: https://solscan.io/tx/${signature}`);
 }
 res.status(200).json({ message: "Swap executed successfully", signature });
 } catch (error) {
 console.error("Swap Error:", error);
 res.status(500).json({ message: "Swap failed: " + error.message });
 }
};
const swapTokens = async (req, res) => {
 try {
 const inputMint = "So11111111111111111111111111111111111111112"; // SOL
 const outputMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC
 const userPublicKey = new PublicKey("YOUR_WALLET_PUBLIC_KEY"); // Replace
 const amount = 0.000010;
 const solAmount = Math.floor(amount * 1e9);
 const quoteResponse = await (
 await fetch(
 `https://api.jup.ag/swap/v1/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${solAmount}&slippageBps=50`
 )
 ).json();
 console.log("Quote Response:", quoteResponse);
 // **Extract only `quoteResponse.quote`**
 const swapResponse = await (
 await fetch("https://api.jup.ag/swap/v1/swap", {
 method: "POST",
 headers: { "Content-Type": "application/json" },
 body: JSON.stringify({
 quoteResponse: quoteResponse.quote, //  Only pass `quote`
 userPublicKey: userPublicKey.toBase58(),
 }),
 })
 ).json();
 console.log("Swap Response:", swapResponse);
 // Deserialize transaction
 const transactionBase64 = swapResponse.swapTransaction;
 const transaction = VersionedTransaction.deserialize(Buffer.from(transactionBase64, "base64"));
 console.log("Deserialized Transaction:", transaction);
 // Sign with the main wallet
 const mainWallet = Keypair.fromSecretKey(Uint8Array.from(YOUR_SECRET_KEY)); // Replace
 transaction.sign([mainWallet]);
 // Convert to binary
 const transactionBinary = Buffer.from(transaction.serialize());
 // Send transaction
 const signature = await connection.sendRawTransaction(transactionBinary, {
 maxRetries: 2,
 skipPreflight: false, // Ensure preflight checks
 });
 console.log("Transaction Signature:", signature);
 // Confirm transaction
 const confirmation = await connection.confirmTransaction(signature, "confirmed");
 if (confirmation.value.err) {
 console.log(`Transaction failed: https://solscan.io/tx/${signature}`);
 } else {
 console.log(`Transaction successful: https://solscan.io/tx/${signature}`);
 }
 res.status(200).json({ message: "Swap executed successfully", signature });
 } catch (error) {
 console.error("Swap Error:", error);
 res.status(500).json({ message: "Swap failed: " + error.message });
 }
};
const swapTokens = async (req, res) => {
 try {
 const inputMint = "So11111111111111111111111111111111111111112"; // SOL
 const outputMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC
 const userPublicKey = new PublicKey("YOUR_WALLET_PUBLIC_KEY"); // Replace
 const amount = 0.000010;
 const solAmount = Math.floor(amount * 1e9);
 const quoteResponse = await (
 await fetch(
 `https://api.jup.ag/swap/v1/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${solAmount}&slippageBps=50`
 )
 ).json();
 console.log("Quote Response:", quoteResponse);
 // **Extract only `quoteResponse.quote`**
 const swapResponse = await (
 await fetch("https://api.jup.ag/swap/v1/swap", {
 method: "POST",
 headers: { "Content-Type": "application/json" },
 body: JSON.stringify({
 quoteResponse: quoteResponse.quote, // Only pass `quote`
 userPublicKey: userPublicKey.toBase58(),
 }),
 })
 ).json();
 console.log("Swap Response:", swapResponse);
 // Deserialize transaction
 const transactionBase64 = swapResponse.swapTransaction;
 const transaction = VersionedTransaction.deserialize(Buffer.from(transactionBase64, "base64"));
 console.log("Deserialized Transaction:", transaction);
 // Sign with the main wallet
 const mainWallet = Keypair.fromSecretKey(Uint8Array.from(YOUR_SECRET_KEY)); // Replace
 transaction.sign([mainWallet]);
 // Convert to binary
 const transactionBinary = Buffer.from(transaction.serialize());
 // Send transaction
 const signature = await connection.sendRawTransaction(transactionBinary, {
 maxRetries: 2,
 skipPreflight: false, // Ensure preflight checks
 });
 console.log("Transaction Signature:", signature);
 // Confirm transaction
 const confirmation = await connection.confirmTransaction(signature, "confirmed");
 if (confirmation.value.err) {
 console.log(`Transaction failed: https://solscan.io/tx/${signature}`);
 } else {
 console.log(`Transaction successful: https://solscan.io/tx/${signature}`);
 }
 res.status(200).json({ message: "Swap executed successfully", signature });
 } catch (error) {
 console.error("Swap Error:", error);
 res.status(500).json({ message: "Swap failed: " + error.message });
 }
};
Source Link
Adeel Nawaz
  • 416
  • 3
  • 10

Pass quoteResponse.quote instead of full quoteResponse and Enable preflight to ensure transaction executes properly

const swapTokens = async (req, res) => {
 try {
 const inputMint = "So11111111111111111111111111111111111111112"; // SOL
 const outputMint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC
 const userPublicKey = new PublicKey("YOUR_WALLET_PUBLIC_KEY"); // Replace
 const amount = 0.000010;
 const solAmount = Math.floor(amount * 1e9);
 const quoteResponse = await (
 await fetch(
 `https://api.jup.ag/swap/v1/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${solAmount}&slippageBps=50`
 )
 ).json();
 console.log("Quote Response:", quoteResponse);
 // **Extract only `quoteResponse.quote`**
 const swapResponse = await (
 await fetch("https://api.jup.ag/swap/v1/swap", {
 method: "POST",
 headers: { "Content-Type": "application/json" },
 body: JSON.stringify({
 quoteResponse: quoteResponse.quote, // ✅ Only pass `quote`
 userPublicKey: userPublicKey.toBase58(),
 }),
 })
 ).json();
 console.log("Swap Response:", swapResponse);
 // Deserialize transaction
 const transactionBase64 = swapResponse.swapTransaction;
 const transaction = VersionedTransaction.deserialize(Buffer.from(transactionBase64, "base64"));
 console.log("Deserialized Transaction:", transaction);
 // Sign with the main wallet
 const mainWallet = Keypair.fromSecretKey(Uint8Array.from(YOUR_SECRET_KEY)); // Replace
 transaction.sign([mainWallet]);
 // Convert to binary
 const transactionBinary = Buffer.from(transaction.serialize());
 // Send transaction
 const signature = await connection.sendRawTransaction(transactionBinary, {
 maxRetries: 2,
 skipPreflight: false, // Ensure preflight checks
 });
 console.log("Transaction Signature:", signature);
 // Confirm transaction
 const confirmation = await connection.confirmTransaction(signature, "confirmed");
 if (confirmation.value.err) {
 console.log(`Transaction failed: https://solscan.io/tx/${signature}`);
 } else {
 console.log(`Transaction successful: https://solscan.io/tx/${signature}`);
 }
 res.status(200).json({ message: "Swap executed successfully", signature });
 } catch (error) {
 console.error("Swap Error:", error);
 res.status(500).json({ message: "Swap failed: " + error.message });
 }
};
lang-js

AltStyle によって変換されたページ (->オリジナル) /