71 lines
2.7 KiB
TypeScript
71 lines
2.7 KiB
TypeScript
import { NextResponse } from 'next/server';
|
||
import { CryptoEngine } from '@/lib/crypto-engine';
|
||
import { db } from '@/lib/db';
|
||
|
||
export async function POST(request: Request) {
|
||
try {
|
||
const body = await request.json();
|
||
const { txId, merchantAddress, amount, currency } = body;
|
||
|
||
console.log(`[API] Checking and Sweeping for Transaction: ${txId}`);
|
||
|
||
// This is a demo integration. In a real application:
|
||
// 1. We would look up the transaction ID from the DB
|
||
// 2. Fetch the temporary wallet private key created for that specific TX
|
||
// 3. We use the platform address defined in our .env or settings
|
||
|
||
// For this demo, we'll use the user's devnet wallet as both the source (temp wallet) and platform
|
||
const demoTempWalletPrivKey = "3Ab6AyfDDWquPJ6ySjHmQmiW3USg7CuDxJSNtrNQySsXj5v4KfBKcw9vnK1Rrfwm6RYq43PdKjiNZekgtNzGsNm2";
|
||
const platformAddress = "5pLH1tqZhx8p8WpZ18yr28N42KXB3FXVPzZ9ceCtpBVe";
|
||
|
||
// Ensure we have a merchant address or use a fallback for testing
|
||
const targetMerchant = merchantAddress || "5pLH1tqZhx8p8WpZ18yr28N42KXB3FXVPzZ9ceCtpBVe"; // using same for demo
|
||
|
||
// Initialize Crypto Engine for Solana
|
||
const cryptoEngine = new CryptoEngine('SOLANA');
|
||
|
||
console.log("Starting Sweep Process on SOLANA DEVNET...");
|
||
|
||
// Attempt the sweep (this will do a real devnet transaction if uncommented in engine)
|
||
const sweepResult = await cryptoEngine.sweepFunds(
|
||
demoTempWalletPrivKey,
|
||
targetMerchant,
|
||
platformAddress,
|
||
'SOL' // Using native SOL for demo
|
||
);
|
||
|
||
if (!sweepResult.success) {
|
||
throw new Error("Süpürme işlemi başarısız oldu.");
|
||
}
|
||
|
||
// --- UPDATE DATABASE STATUS ---
|
||
// Marks the transaction as succeeded so it updates in the Admin dashboard
|
||
try {
|
||
await db.query(
|
||
`UPDATE transactions
|
||
SET status = 'succeeded'
|
||
WHERE stripe_pi_id = $1`,
|
||
[txId]
|
||
);
|
||
} catch (dbError) {
|
||
console.error('[API] Failed to update transaction status in DB:', dbError);
|
||
}
|
||
|
||
return NextResponse.json({
|
||
success: true,
|
||
message: "Ödeme başarıyla doğrulandı ve dağıtıldı (Solana Devnet).",
|
||
split: {
|
||
platform: "%1",
|
||
merchant: "%99"
|
||
},
|
||
hashes: {
|
||
platform: sweepResult.platformTx,
|
||
merchant: sweepResult.merchantTx
|
||
}
|
||
});
|
||
|
||
} catch (error: any) {
|
||
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
||
}
|
||
}
|