fix(admin): resolve incorrect crypto balance calculation fallback displaying fiat amount
This commit is contained in:
75
debug_address.js
Normal file
75
debug_address.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const { Client } = require('pg');
|
||||
const { Connection, PublicKey } = require('@solana/web3.js');
|
||||
|
||||
async function debugSpecificPayment() {
|
||||
const client = new Client({ connectionString: process.env.DATABASE_URL });
|
||||
await client.connect();
|
||||
|
||||
const targetAddress = "DZrWQ3Li3AogniRhgyGjNVmG1b3hLe7rR3tgeaKRcy63";
|
||||
|
||||
// Find the transaction by address
|
||||
const res = await client.query(`
|
||||
SELECT id, source_ref_id, amount, currency, metadata, status, created_at
|
||||
FROM transactions
|
||||
WHERE metadata->'wallets'->'SOLANA'->>'address' = $1
|
||||
`, [targetAddress]);
|
||||
|
||||
if (res.rows.length === 0) {
|
||||
console.log(`❌ No transaction found in DB with Solana address: ${targetAddress}`);
|
||||
await client.end();
|
||||
return;
|
||||
}
|
||||
|
||||
const tx = res.rows[0];
|
||||
console.log(`\n--- Transaction Found: ${tx.id} ---`);
|
||||
console.log(`Source Ref: ${tx.source_ref_id}`);
|
||||
console.log(`Status: ${tx.status}`);
|
||||
console.log(`Created: ${tx.created_at}`);
|
||||
console.log(`Fiat Amount: ${tx.amount} ${tx.currency}`);
|
||||
console.log(`Intent Network/Token: ${tx.metadata?.intent_network} / ${tx.metadata?.intent_token}`);
|
||||
|
||||
// Check Balance on devnet
|
||||
const connection = new Connection('https://api.devnet.solana.com', 'confirmed');
|
||||
|
||||
let actualSol = 0;
|
||||
try {
|
||||
const pubKey = new PublicKey(targetAddress);
|
||||
const balance = await connection.getBalance(pubKey);
|
||||
actualSol = balance / 1e9;
|
||||
console.log(`\nActual Devnet Balance: ${actualSol} SOL`);
|
||||
|
||||
const signatures = await connection.getSignaturesForAddress(pubKey, { limit: 5 });
|
||||
console.log(`Recent Txs: ${signatures.length}`);
|
||||
} catch(e) {
|
||||
console.log("Error fetching balance:", e.message);
|
||||
}
|
||||
|
||||
// Try calculation
|
||||
let expectedSolAmount = 0;
|
||||
try {
|
||||
const tryRes = await fetch(`https://api.binance.com/api/v3/ticker/price?symbol=USDTTRY`);
|
||||
const tryData = await tryRes.json();
|
||||
const usdTryPrice = parseFloat(tryData.price);
|
||||
|
||||
const solRes = await fetch(`https://api.binance.com/api/v3/ticker/price?symbol=SOLUSDT`);
|
||||
const solData = await solRes.json();
|
||||
const solUsdPrice = parseFloat(solData.price);
|
||||
|
||||
const priceInTry = solUsdPrice * usdTryPrice;
|
||||
const rawExpected = parseFloat(tx.amount) / priceInTry;
|
||||
expectedSolAmount = parseFloat((rawExpected * 0.98).toFixed(6));
|
||||
console.log(`\nExpected Amount: ~${expectedSolAmount} SOL (based on current price)`);
|
||||
} catch(e) {
|
||||
console.log("Failed to fetch price");
|
||||
}
|
||||
|
||||
if (actualSol >= expectedSolAmount && expectedSolAmount > 0) {
|
||||
console.log("✅ Balance covers expectation");
|
||||
} else {
|
||||
console.log("❌ Balance is less than expected");
|
||||
}
|
||||
|
||||
await client.end();
|
||||
}
|
||||
|
||||
debugSpecificPayment();
|
||||
Reference in New Issue
Block a user