У меня есть простой лендинг который используется для взаимодействия со смартконтрактом..
Я подключил ММ к сайту, и через кнопку могу логиниться
Но есть проблема з созданием контракта..
Задача такая что бы с помощью инпута вводить нужное значение, и по клику по кнопке випадало окно ММ с подверждением транзакции..
Я написал код, но не работает.. Логи мне не ничего не говорят к сожалению.. Подключение делаю первый раз.. Туторы все пересмотрел.. Но найти ошибки в коде не могу.. Либо я вообще делаю не то.. Кому не сложно подскажите как правильно сделать...Ибо жопка уже хрустит.. Заранее Буду рот ваш целовать
<button class="main_btn btn" id="connectWallet">
<button class="btn" id="buyTkn">Buy Tokens</button>
const { ethers } = require("ethers");
let provider = null;
let web3 = null;
let signer = null;
const contractAddress = "Adress";
const contractABI = 'ABI'
async function connectWallet() {
if (window.ethereum) {
provider = window.ethereum;
try {
await window.ethereum.request({ method: "eth_requestAccounts" });
} catch (e) {
console.error(e);
if (e.code === 4001) return;
}
} else if (window.web3) {
provider.web3.currentProvider;
}
if (provider) {
web3 = new ethers.providers.Web3Provider(provider, "any");
}
}
document
.getElementById("connectWallet")
.addEventListener("click", connectWallet);
async function mint() {
const tokenAmount = document.getElementById("tokenAmount").value;
const paymentOption = document.getElementById("paymentOption").value;
provider = new ethers.providers.JsonRpcProvider(
"https://bsc-dataseed1.binance.org:443"
);
const signer = provider.getSigner();
const contract = new ethers.Contract(contractAddress, contractABI, signer);
console.log(contract);
if (paymentOption === "BNB") {
// Approve BNB spending by contract
await ethers.sendTransaction({
to: contractAddress,
from: signer,
value: ethers.utils.toWei(tokenAmount, "ether"),
});
} else if (paymentOption === "BUSDT") {
// Assume BUSDT token has the approve() function for spending
const busdtTokenAddress = "0x55d398326f99059ff775485246999027b3197955"; // Replace with actual BUSDT token address
const busdtContract = new ethers.Contract(
contractABI,
busdtTokenAddress,
signer
);
const busdtDecimals = await busdtContract.methods.decimals().call();
const busdtAmount = tokenAmount * Math.pow(10, busdtDecimals);
await busdtContract.methods.approve(contractAddress, busdtAmount).send({
from: address,
});
console.log(busdtContract);
}
await contract.methods.transfer(tokenAmount).send({
from: address,
});
alert("Tokens purchased successfully!");
}
document.getElementById("buyTkn").addEventListener("click", mint);