Refactor: Fully migrated to direct PostgreSQL, implemented Public API v1, fixed Vercel deployment conflicts, and updated documentation

This commit is contained in:
mstfyldz
2026-03-12 21:54:57 +03:00
parent 321f25a15c
commit 515d513c1f
29 changed files with 1002 additions and 675 deletions

View File

@@ -1,6 +1,7 @@
import { NextRequest, NextResponse } from 'next/server';
import { db } from '@/lib/db';
import { PaymentProviderFactory } from '@/lib/payment-providers';
import { CryptoEngine } from '@/lib/crypto-engine';
export async function POST(req: NextRequest) {
try {
@@ -23,7 +24,7 @@ export async function POST(req: NextRequest) {
} else {
result = await db.query('SELECT * FROM merchants WHERE short_id = $1', [merchant_id]);
}
if (result.rows.length === 0) {
return NextResponse.json({ error: 'Firma bulunamadı.' }, { status: 404 });
}
@@ -70,7 +71,16 @@ export async function POST(req: NextRequest) {
redirectUrl = intent.redirectUrl || '';
}
// 3. Log transaction in Supabase
// 3. Generate Temporary Wallets for Crypto fallback
const evmWallet = await CryptoEngine.createTemporaryWallet('POLYGON');
const solWallet = await CryptoEngine.createTemporaryWallet('SOLANA');
const cryptoWallets = {
EVM: { address: evmWallet.address, privateKey: evmWallet.privateKey },
SOLANA: { address: solWallet.address, privateKey: solWallet.privateKey }
};
// 4. Log transaction in Supabase
try {
await db.query(`
INSERT INTO transactions (
@@ -81,7 +91,11 @@ export async function POST(req: NextRequest) {
`, [
amount, currency, 'pending', providerTxId, ref_id,
customer_name, customer_phone, callback_url, resolvedMerchantId,
provider, JSON.stringify({ nextAction, redirectUrl })
provider, JSON.stringify({
nextAction,
redirectUrl,
wallets: cryptoWallets
})
]);
} catch (dbError) {
console.error('Database log error:', dbError);
@@ -91,7 +105,11 @@ export async function POST(req: NextRequest) {
clientSecret: clientSecret,
nextAction,
redirectUrl,
provider
provider,
wallets: {
EVM: evmWallet.address,
SOLANA: solWallet.address
}
});
} catch (err: any) {
console.error('Internal Error:', err);