diff --git a/app/admin/transactions/page.tsx b/app/admin/transactions/page.tsx
index 8a3655a..143fe35 100644
--- a/app/admin/transactions/page.tsx
+++ b/app/admin/transactions/page.tsx
@@ -12,6 +12,7 @@ import { tr } from 'date-fns/locale';
import TransactionSearch from '@/components/admin/TransactionSearch';
import TransactionStatusFilter from '@/components/admin/TransactionStatusFilter';
import SyncPaymentsButton from '@/components/admin/SyncPaymentsButton';
+import TransactionWallets from '@/components/admin/TransactionWallets';
async function getTransactions(filters: { merchant_id?: string; q?: string; status?: string }) {
let sql = `
@@ -118,6 +119,8 @@ export default async function TransactionsPage(props: {
) : (
{t.callback_url || 'Geri dönüş yok'}
)}
+ {/* Render generated crypto wallets below the info */}
+
diff --git a/components/admin/TransactionWallets.tsx b/components/admin/TransactionWallets.tsx
new file mode 100644
index 0000000..b730dd6
--- /dev/null
+++ b/components/admin/TransactionWallets.tsx
@@ -0,0 +1,70 @@
+'use client';
+
+import React from 'react';
+import { ExternalLink, Copy, Check } from 'lucide-react';
+
+interface TransactionWalletsProps {
+ metadata: any;
+}
+
+export default function TransactionWallets({ metadata }: TransactionWalletsProps) {
+ const [copied, setCopied] = React.useState(null);
+
+ if (!metadata || !metadata.wallets) return null;
+
+ const wallets = metadata.wallets;
+ const networks = Object.keys(wallets);
+
+ if (networks.length === 0) return null;
+
+ const handleCopy = (e: React.MouseEvent, text: string) => {
+ e.stopPropagation();
+ navigator.clipboard.writeText(text);
+ setCopied(text);
+ setTimeout(() => setCopied(null), 2000);
+ };
+
+ const getExplorerUrl = (network: string, address: string) => {
+ if (network === 'SOLANA') return `https://explorer.solana.com/address/${address}?cluster=devnet`;
+ if (network === 'POLYGON') return `https://polygonscan.com/address/${address}`;
+ if (network === 'TRON') return `https://tronscan.org/#/address/${address}`;
+ if (network === 'EVM') return `https://etherscan.io/address/${address}`;
+ return '#';
+ };
+
+ return (
+
+ {networks.map(network => {
+ const walletData = wallets[network];
+ const address = typeof walletData === 'string' ? walletData : walletData?.address;
+
+ if (!address) return null;
+
+ const shortAddress = `${address.substring(0, 5)}...${address.substring(address.length - 4)}`;
+
+ return (
+
+ {network}:
+
+ {shortAddress}
+
+
+
+
+ );
+ })}
+
+ );
+}
|