最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

No swapTransaction found in response. Error: No swapTransaction found in response. Solana - Stack Overflow

programmeradmin2浏览0评论

This is my code, how can I solve the swap problem?

import requests
import base64
from base58 import b58decode
from solana.rpc.api import Client
from solana.transaction import Transaction
from solders.keypair import Keypair
import json

# Solana Configuration
solana_client = Client("/?api-key=API")  # You may use a different endpoint if needed
private_key_base58 = "KEY"  # Private Key
private_key_bytes = b58decode(private_key_base58)  # Base58

# Jupiter API Configuration
JUPITER_API_URL = ";
SWAP_API_URL = ";

# Slippage
slippage = 0.1  # 10%

# Private Key 64 bytes
if len(private_key_bytes) == 64:
    payer = Keypair.from_bytes(private_key_bytes)
    print(f"Public Key: {payer.pubkey()}")
else:
    print("Error: Private key length is invalid. It should be 64 bytes.")

amount_to_swap = 0.01  # SOL

# ========== FUNCTIONALITY ==========

# Contract Address
def extract_contract_address(message):
    pattern = r'\b[1-9A-HJ-NP-Za-km-z]{32,44}\b'
    match = re.search(pattern, message)
    if match:
        return match.group(0)
    return None

# quote from Jupiter API
def get_quote(input_mint, output_mint, amount, slippage):
    params = {
        'inputMint': input_mint,
        'outputMint': output_mint,
        'amount': str(int(amount * 10**9)),  # Convert to lamports
        'slippageBps': str(int(slippage * 10000))  # slippage in bps
    }

    response = requests.get(JUPITER_API_URL, params=params)
    if response.status_code == 200:
        data = response.json()
        print("Quote Data:", json.dumps(data, indent=2))  # ดูข้อมูลตอบกลับทั้งหมด
        if 'swapTransaction' in data:
            print("Swap Transaction:", data['swapTransaction'])
        else:
            print("No swapTransaction found in response.")
        return data
    else:
        print(f"Error fetching quote: {response.status_code}")
        return None

#  swap to Jupiter API
def swap_sol_to_token(input_amount, input_token_mint, output_token_mint):
    print(f"Swapping {input_amount} SOL for Token at Contract Address: {output_token_mint}...")

    try:
        #  Quote from Jupiter API
        quote_data = get_quote(input_token_mint, output_token_mint, input_amount, slippage)
        
        if not quote_data:
            print("Error: No valid data received from the quote API.")
            return

        # Check swapTransaction
        if 'swapTransaction' not in quote_data or not quote_data['swapTransaction']:
            print("Error: No swapTransaction found in response.")
            print("Quote Response Data:", json.dumps(quote_data, indent=2))
            return

        swap_transaction = quote_data['swapTransaction']
        print(f"Swap transaction data: {swap_transaction}")

        # Step 1: swap to Jupiter API
        swap_payload = {
            'quoteResponse': quote_data,
            'userPublicKey': str(payer.pubkey())
        }

        swap_response = requests.post(SWAP_API_URL, json=swap_payload)
        swap_response_data = swap_response.json()

        if swap_response.status_code == 200 and swap_response_data.get('swapTransaction'):
            swap_transaction = swap_response_data['swapTransaction']
            print(f"Swap Transaction: {swap_transaction}")

            # Step 2: Sendtx to Solana Blockchain
            raw_transaction = base64.b64decode(swap_transaction)
            transaction = Transaction.deserialize(raw_transaction)
            transaction.sign([payer])

            # blockhash
            bh_info = solana_client.get_latest_blockhash()
            transaction.recent_blockhash = bh_info['result']['value']['blockhash']

            # send
            result = solana_client.send_raw_transaction(transaction.serialize())
            print(f"Transaction sent: /{result}")

        else:
            print(f"Error: {swap_response_data}")

    except Exception as e:
        print(f"Error during swap: {e}")

# Call Swap
swap_sol_to_token(amount_to_swap, "So11111111111111111111111111111111111111112", "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump")

I running this code and got a problem. I don't know how to fix it.

No swapTransaction found in response.
Error: No swapTransaction found in response.
Quote Response Data: {
  "inputMint": "So11111111111111111111111111111111111111112",
  "inAmount": "10000000",
  "outputMint": "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump",
  "outAmount": "44969051989",
  "otherAmountThreshold": "40472146791",
  "swapMode": "ExactIn",
  "slippageBps": 1000,
  "platformFee": null,
  "priceImpactPct": "0",
  "routePlan": [
    {
      "swapInfo": {
        "ammKey": "Dgt4UcEBzuR5f7VE2NrCyyQthEuWNzxsqf7pszSod1Sc",
        "label": "Raydium",
        "inputMint": "So11111111111111111111111111111111111111112",
        "outputMint": "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump",
        "inAmount": "10000000",
        "outAmount": "44969051989",
        "feeAmount": "25000",
        "feeMint": "So11111111111111111111111111111111111111112"
      },
      "percent": 100
    }
  ],
  "scoreReport": null,
  "contextSlot": 304109036,
  "timeTaken": 0.000388887
}

Ignore it:

It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.

This is my code, how can I solve the swap problem?

import requests
import base64
from base58 import b58decode
from solana.rpc.api import Client
from solana.transaction import Transaction
from solders.keypair import Keypair
import json

# Solana Configuration
solana_client = Client("https://mainnet.helius-rpc/?api-key=API")  # You may use a different endpoint if needed
private_key_base58 = "KEY"  # Private Key
private_key_bytes = b58decode(private_key_base58)  # Base58

# Jupiter API Configuration
JUPITER_API_URL = "https://quote-api.jup.ag/v6/quote"
SWAP_API_URL = "https://quote-api.jup.ag/v6/swap"

# Slippage
slippage = 0.1  # 10%

# Private Key 64 bytes
if len(private_key_bytes) == 64:
    payer = Keypair.from_bytes(private_key_bytes)
    print(f"Public Key: {payer.pubkey()}")
else:
    print("Error: Private key length is invalid. It should be 64 bytes.")

amount_to_swap = 0.01  # SOL

# ========== FUNCTIONALITY ==========

# Contract Address
def extract_contract_address(message):
    pattern = r'\b[1-9A-HJ-NP-Za-km-z]{32,44}\b'
    match = re.search(pattern, message)
    if match:
        return match.group(0)
    return None

# quote from Jupiter API
def get_quote(input_mint, output_mint, amount, slippage):
    params = {
        'inputMint': input_mint,
        'outputMint': output_mint,
        'amount': str(int(amount * 10**9)),  # Convert to lamports
        'slippageBps': str(int(slippage * 10000))  # slippage in bps
    }

    response = requests.get(JUPITER_API_URL, params=params)
    if response.status_code == 200:
        data = response.json()
        print("Quote Data:", json.dumps(data, indent=2))  # ดูข้อมูลตอบกลับทั้งหมด
        if 'swapTransaction' in data:
            print("Swap Transaction:", data['swapTransaction'])
        else:
            print("No swapTransaction found in response.")
        return data
    else:
        print(f"Error fetching quote: {response.status_code}")
        return None

#  swap to Jupiter API
def swap_sol_to_token(input_amount, input_token_mint, output_token_mint):
    print(f"Swapping {input_amount} SOL for Token at Contract Address: {output_token_mint}...")

    try:
        #  Quote from Jupiter API
        quote_data = get_quote(input_token_mint, output_token_mint, input_amount, slippage)
        
        if not quote_data:
            print("Error: No valid data received from the quote API.")
            return

        # Check swapTransaction
        if 'swapTransaction' not in quote_data or not quote_data['swapTransaction']:
            print("Error: No swapTransaction found in response.")
            print("Quote Response Data:", json.dumps(quote_data, indent=2))
            return

        swap_transaction = quote_data['swapTransaction']
        print(f"Swap transaction data: {swap_transaction}")

        # Step 1: swap to Jupiter API
        swap_payload = {
            'quoteResponse': quote_data,
            'userPublicKey': str(payer.pubkey())
        }

        swap_response = requests.post(SWAP_API_URL, json=swap_payload)
        swap_response_data = swap_response.json()

        if swap_response.status_code == 200 and swap_response_data.get('swapTransaction'):
            swap_transaction = swap_response_data['swapTransaction']
            print(f"Swap Transaction: {swap_transaction}")

            # Step 2: Sendtx to Solana Blockchain
            raw_transaction = base64.b64decode(swap_transaction)
            transaction = Transaction.deserialize(raw_transaction)
            transaction.sign([payer])

            # blockhash
            bh_info = solana_client.get_latest_blockhash()
            transaction.recent_blockhash = bh_info['result']['value']['blockhash']

            # send
            result = solana_client.send_raw_transaction(transaction.serialize())
            print(f"Transaction sent: https://explorer.solana/tx/{result}")

        else:
            print(f"Error: {swap_response_data}")

    except Exception as e:
        print(f"Error during swap: {e}")

# Call Swap
swap_sol_to_token(amount_to_swap, "So11111111111111111111111111111111111111112", "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump")

I running this code and got a problem. I don't know how to fix it.

No swapTransaction found in response.
Error: No swapTransaction found in response.
Quote Response Data: {
  "inputMint": "So11111111111111111111111111111111111111112",
  "inAmount": "10000000",
  "outputMint": "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump",
  "outAmount": "44969051989",
  "otherAmountThreshold": "40472146791",
  "swapMode": "ExactIn",
  "slippageBps": 1000,
  "platformFee": null,
  "priceImpactPct": "0",
  "routePlan": [
    {
      "swapInfo": {
        "ammKey": "Dgt4UcEBzuR5f7VE2NrCyyQthEuWNzxsqf7pszSod1Sc",
        "label": "Raydium",
        "inputMint": "So11111111111111111111111111111111111111112",
        "outputMint": "3Buxeks8WjH9ermFa7a6AUrJcXX6EZ4Bb6xDUNzipump",
        "inAmount": "10000000",
        "outAmount": "44969051989",
        "feeAmount": "25000",
        "feeMint": "So11111111111111111111111111111111111111112"
      },
      "percent": 100
    }
  ],
  "scoreReport": null,
  "contextSlot": 304109036,
  "timeTaken": 0.000388887
}

Ignore it:

It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.It looks like your post is mostly code; please add some more details.

Share Improve this question asked Nov 28, 2024 at 10:08 Narakorn BoonrasriNarakorn Boonrasri 1
Add a comment  | 

1 Answer 1

Reset to default 1

You are trying to get swapTransaction prop from quote response. Quote response does not contain prepared transaction. You need pass entire quote response object to /swap endpoint and then you will get swapTransaction. Official Jupiter documentation is here.

发布评论

评论列表(0)

  1. 暂无评论