天天看點

Web3.0-使用metamask擷取某個賬号(錢包位址)的餘額、交易回執

擷取某個賬号(錢包位址)的最新餘額

以下代碼就是擷取制定賬戶餘額的方法,擷取到的餘額是16進制的wei,在擷取餘額成功後我已經做了轉換,params中兩個參數,第1個是你要查詢的賬戶(錢包位址),第2個是固定參數,表示最新餘額。

//擷取餘額
    ethereum.request({
            method: 'eth_getBalance',
            params: [
               '0xBcFf5a3c1970D795777d7471F2792832BAF5679d' ,
                'latest'
            ]
        })
        .then((result) => {
            console.log("擷取餘額success--->" + result)
            let formartEther = ethers.utils.formatEther(result); //16進制的wei
            console.log(formartEther)
        })
        .catch((error) => {
            console.log("擷取餘額error--->" + error.code)
        });           

或者:

// 連接配接賬号
function connect() {
    console.log('Calling connect()')
    ethereum
    .request({ method: 'eth_requestAccounts' })
    .then(handleAccountsChanged)
    .catch((err) => {
    if (err.code === 4001) {
        // EIP-1193 userRejectedRequest error
        // If this happens, the user rejected the connection request.賬号拒絕登入metamask
        console.log('Please connect to MetaMask.');
        $('#status').html('You refused to connect Metamask')
    } else {
        console.error(err);
    }
    });
}           

擷取交易回執

//發出支付請求
    ethereum
        .request({
            method: 'eth_sendTransaction',
            params: [
                {
                    from: fromAddress,
                    to: toAddress,
                    value: value,
                }
            ]
        })
        .then((result) => {
            console.log(result)
            //'0xec9026d3a9d4cd4d44ac7cd49186a05c8a2db4d697a05207d8e804d2a245455a'
            if (result != null || result != undefined){
                console.log("開始計時")
                let paramsStr = [];  //對應查詢時的參數params,清單
                paramsStr[0] = result;
                //需要等待十秒 才能收到回執單資訊 傳回回執代碼串 和 回執單不是同時的 是以有時候能直接通過回執代碼串擷取到回執單 有時候擷取不到 可能跟網速有關系 是以在擷取到
                //回執代碼串之後 延時十秒再擷取回執單即可
                setTimeout(function () {
                    getReceipt(paramsStr) // 10秒後執行下面的函數,擷取交易回執
                },10000);
            }


        })
        .catch((error) => {

        });
 

 //擷取回執單的方法
    function getReceipt(paramsStr) {
        ethereum.request({
            method: 'eth_getTransactionReceipt',
            params: paramsStr
        })
            .then((result) => {
                console.log(result)
            })
            .catch((error) => {
                console.log("error--->" + error.message)
                // If the request fails, the Promise will reject with an error.
            });

    }


           

//發出支付請求之10秒後,通過傳回值paramsStr,即Transaction Hash從以太坊交易中讀取交易回執資訊。

Web3.0-使用metamask擷取某個賬号(錢包位址)的餘額、交易回執

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

回執:

Web3.0-使用metamask擷取某個賬号(錢包位址)的餘額、交易回執

編輯切換為居中

添加圖檔注釋,不超過 140 字(可選)

實際操作

在交易送出傳回到Transaction Hash時,說明交易成功,可以在這個時候将Transaction Hash及其他交易資訊,一并送出至資料庫。至于擷取訂單回執,随時可以通過錢包位址及Transaction Hash擷取。

繼續閱讀