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 });
}
};
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