简体   繁体   English

METAMASK - 注入 - 用户如何使用 metamask API 支付自定义价值的 ETH?

[英]METAMASK - injection - How user can pay custom value of ETH with metamask API?

  1. I want to give user possibility to choose his own value of Ether.我想给用户选择他自己的以太币价值的可能性。 How to do this?这个怎么做?
  2. How efficiently change the network when pressing connect to metamask (for example when user will press this button metamask should change network to binance smart chain (ID 56)按下连接到元掩码时更改网络的效率如何(例如,当用户按下此按钮时元掩码应将网络更改为币安智能链(ID 56)

here is my code.这是我的代码。

        <!DOCTYPE html>
        <html>
        <head>
        <script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
        </head>
        <body>
        <div>
        <button class="enableEthereumButton btn">Enable Ethereum</button>
        <button class="sendEthButton btn">Send Eth</button>
        <div id="status"></div>
        </div>
        <script type="text/javascript">

        // Running on the page, in the browser
        if (typeof window.ethereum !== 'undefined') {
          console.log('MetaMask is installed!');
        }   
        if (!ethereum || !ethereum.isMetaMask) {
          throw new Error('Please install MetaMask.')
        }   
        /*********************************************************/
        /* Handle chain (network) and chainChanged, per EIP 1193 */
        /*********************************************************/

        // Do this:
        ethereum.on('chainChanged', (chainId) => {
          /* handle the chainId */
        });
        const ethereumButton = document.querySelector('.enableEthereumButton');
        const sendEthButton = document.querySelector('.sendEthButton');

        let accounts = [];

        //Sending Ethereum to an address
        sendEthButton.addEventListener('click', () => {
          ethereum
            .request({
              method: 'eth_sendTransaction',
              params: [
                {
                  from: accounts[0],
                  to: '0x6adress.................',
                  value: '0x00',
                  gasPrice: '0x0000001F6EA08600',
                  gas: '0x0001ADB0',
                },
              ],
            })
            .then((txHash) => console.log(txHash))
            .catch((error) => console.error);
        });

        ethereumButton.addEventListener('click', () => {
          getAccount();
        });

        async function getAccount() {
          accounts = await ethereum.request({ method: 'eth_requestAccounts' });
        }
        </script>
        </body>
        </html>

Metamask screenshot元掩码截图

Add an input field for the value and pass it in to your params.为该值添加一个输入字段并将其传递给您的参数。 This is basic html form + javascript interactions, not specific to web3, so for more info on how to do that I would look here https://www.w3schools.com/html/html_forms.asp这是基本的 html 表单 + javascript 交互,不特定于 web3,因此有关如何执行此操作的更多信息,我会在这里查看https://www.w3schools.com。

To read the network the user is connecting with in your app you can listen for a chain change event: https://docs.metamask.io/guide/ethereum-provider.html#events要在您的应用程序中读取用户正在连接的网络,您可以监听链更改事件: https://docs.metamask.io/guide/ethereum-provider.html#events

Then if they are not connected to a network your app supports you should show the user a notice.然后,如果他们没有连接到您的应用支持的网络,您应该向用户显示通知。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM