wroking
This commit is contained in:
parent
01d95feb48
commit
9a2857bffd
@ -21,10 +21,28 @@ interface GenerationState {
|
||||
error: string | null
|
||||
}
|
||||
|
||||
// Solflare wallet type definition
|
||||
interface SolflareWallet {
|
||||
connect(): Promise<void>
|
||||
disconnect(): Promise<void>
|
||||
signAndSendTransaction(
|
||||
transaction: Transaction | VersionedTransaction,
|
||||
options?: { skipPreflight?: boolean }
|
||||
): Promise<{ signature: string; publicKey: string }>
|
||||
publicKey: PublicKey
|
||||
connected: boolean
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
solflare?: SolflareWallet
|
||||
}
|
||||
}
|
||||
|
||||
// Replace these with your actual addresses
|
||||
const MTM_TOKEN_MINT: string = '97RggLo3zV5kFGYW4yoQTxr4Xkz4Vg2WPHzNYXXWpump'
|
||||
const PAYMENT_RECEIVER_ADDRESS: string = 'JB8YCqKBKNtS4ZHcGPJXSJokcvdgdeeyWRxGqgyX5EwP'
|
||||
const REQUIRED_PAYMENT_AMOUNT: number = 1
|
||||
const REQUIRED_PAYMENT_AMOUNT: number = 2
|
||||
const SOLANA_NETWORK: string = 'mainnet'
|
||||
const SOLANA_RPC_URL: string = 'https://young-radial-orb.solana-mainnet.quiknode.pro/67612b364664616c29514e551bf5de38447ca3d4'
|
||||
const SOLANA_WEBSOCKET_URL: string = 'wss://young-radial-orb.solana-mainnet.quiknode.pro/67612b364664616c29514e551bf5de38447ca3d4'
|
||||
@ -81,7 +99,7 @@ const Page: React.FC = (): React.ReactElement => {
|
||||
}
|
||||
|
||||
const processPayment = async (): Promise<void> => {
|
||||
if (!walletState.connected || !walletState.publicKey) {
|
||||
if (!walletState.connected || !walletState.publicKey || !window.solflare) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -108,10 +126,10 @@ const Page: React.FC = (): React.ReactElement => {
|
||||
senderATA,
|
||||
receiverATA,
|
||||
senderPublicKey,
|
||||
BigInt(REQUIRED_PAYMENT_AMOUNT * (10 ** 9)) // Convert to proper format
|
||||
BigInt(REQUIRED_PAYMENT_AMOUNT * (10 ** 6)) // Convert to proper format
|
||||
)
|
||||
|
||||
const latestBlockhash = await connection.getLatestBlockhash()
|
||||
const latestBlockhash = await connection.getLatestBlockhash('confirmed')
|
||||
|
||||
// Create transaction
|
||||
const transaction = new Transaction()
|
||||
@ -120,16 +138,21 @@ const Page: React.FC = (): React.ReactElement => {
|
||||
transaction.feePayer = senderPublicKey
|
||||
|
||||
try {
|
||||
// Request signature and send transaction
|
||||
const signedTransaction = await window.solflare.signAndSendTransaction(transaction)
|
||||
const signature = await connection.sendRawTransaction(signedTransaction.serialize())
|
||||
// Sign and send transaction with preflight disabled
|
||||
const { signature } = await window.solflare.signAndSendTransaction(transaction, {
|
||||
skipPreflight: true
|
||||
})
|
||||
|
||||
// Wait for confirmation
|
||||
console.log('Transaction sent:', signature)
|
||||
|
||||
// Wait for confirmation with WebSocket support
|
||||
const confirmation = await connection.confirmTransaction({
|
||||
signature,
|
||||
blockhash: latestBlockhash.blockhash,
|
||||
lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
|
||||
})
|
||||
}, 'confirmed')
|
||||
|
||||
console.log('Transaction confirmed:', confirmation)
|
||||
|
||||
if (confirmation.value.err) {
|
||||
throw new Error('Transaction failed to confirm')
|
||||
@ -141,14 +164,15 @@ const Page: React.FC = (): React.ReactElement => {
|
||||
error: null,
|
||||
})
|
||||
} catch (error) {
|
||||
throw new Error('Failed to sign or send transaction')
|
||||
console.error('Transaction error:', error)
|
||||
throw new Error(`Failed to sign or send transaction: ${error instanceof Error ? error.message : 'Unknown error'}`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Payment error:', error)
|
||||
setPaymentStatus({
|
||||
...paymentStatus,
|
||||
processing: false,
|
||||
error: 'Payment failed. Please try again.',
|
||||
error: error instanceof Error ? error.message : 'Payment failed. Please try again.',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
export interface SolflareWallet {
|
||||
connect(): Promise<void>
|
||||
disconnect(): Promise<void>
|
||||
signAndSendTransaction(transaction: any): Promise<any>
|
||||
publicKey: {
|
||||
toString(): string
|
||||
}
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
solflare?: SolflareWallet
|
||||
}
|
||||
}
|
||||
|
||||
export {}
|
Loading…
Reference in New Issue
Block a user