Добырй день
Хочу сделать кнопку доната на сайт что бы пользователи могли закнить похвалу в SOL токене
Но получаю ошибку Uncaught (in promise) TypeError: y.pubkey.toBase58 is not a function
Подскажите кто знает в чем проблема
habr и stackoverflow перелопатил но не нашел того что может помочь
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="connectWallet()"> connect wallet</button>
<script src="https://unpkg.com/@solana/web3.js@latest/lib/index.iife.js"></script>
<script>
async function connectWallet() {
let provider = null
if ("solana" in window) {
provider = window.solana;
if (provider.isPhantom) {
console.log('provider', provider)
}
} else {
window.open("https://phantom.app/", "_blank");
}
publicKey = null
if (provider != null) {
try {
const resp = await window.solana.connect();
publicKey = resp.publicKey.toString();
} catch (err) {
// { code: 4001, message: 'User rejected the request.' }
console.log(err)
}
}
if (publicKey != null) {
const message = `Sign below to authenticate`;
const encodedMessage = new TextEncoder().encode(message);
const signedMessage = await window.solana.request({
method: "signMessage",
params: {
message: encodedMessage,
display: "utf-8",
},
});
var recieverWallet = new solanaWeb3.PublicKey("4iSD5Q6AnyhRHu6Uz4u1KAzXh3TwNwwQshEGhZbEXUTw");
const connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl("mainnet-beta"));
var transaction = new solanaWeb3.Transaction().add(
solanaWeb3.SystemProgram.transfer({
fromPubkey: publicKey,
toPubkey: recieverWallet,
lamports: solanaWeb3.LAMPORTS_PER_SOL
}),
);
transaction.feePayer = publicKey;
let blockhashObj = await connection.getRecentBlockhash();
transaction.recentBlockhash = await blockhashObj.blockhash;
if(transaction) {
console.log("Txn created successfully");
}
let signed = await provider.signTransaction(transaction);
let signature = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction(signature);
}
}
</script>
</body>
</html>