web3 元掩码支付没有选择正确的资产

web3 metamask payment not selecting the right asset

我想创建一个按钮,人们可以点击该按钮使用 Metamask 进行预设付款。

这是我目前所拥有的。

const contractAddress = '0x08ba0619b1e7a582e0bce5bbe9843322c954c340';
const reciever = '0x6B5e6761A9fa07573aD01aeEBc0B724bD3a2980a';
const ABI = [
    {
        "inputs": [
            { "internalType": "address", "name": "recipient", "type": "address" },
            { "internalType": "uint256", "name": "amount", "type": "uint256" }
        ],
        "name": "transfer",
        "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]

window.addEventListener('load',()=>{
    (async ()=>{
        let web3;
        if(window.ethereum){
            web3 = new Web3(window.ethereum);
            await ethereum.enable();
            if(window.ethereum.chainId == '0x38'){
                const contract = new web3.eth.Contract(ABI, contractAddress);
                const transfer = await contract.methods.transfer(reciever, 10);
                const encodedABI = await transfer.encodeABI();
                web3.eth.sendTransaction({
                    to: reciever,
                    from: ethereum.selectedAddress,
                    data: encodedABI,
                })
            } else {
                ethereum.request({ method: 'wallet_switchEthereumChain', params:[{chainId: '0x38'}]})
            }
        }
    })()
})

不起作用的部分是,我想进行 BMON 付款,但它没有选择 BMON,而是选择了一个随机令牌。

This is what I get

This is what I need

我不明白我做错了什么,我选择了正确的合约地址并使用了BMON的ABI,这里选择BMON代币的部分在哪里?

问题出在 const transfer = await contract.methods.transfer(reciever, 10);

需要 const transfer = await contract.methods.transfer(reciever, 10).call();