擷取某個賬号(錢包位址)的最新餘額
以下代碼就是擷取制定賬戶餘額的方法,擷取到的餘額是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從以太坊交易中讀取交易回執資訊。
編輯切換為居中
添加圖檔注釋,不超過 140 字(可選)
回執:
編輯切換為居中
添加圖檔注釋,不超過 140 字(可選)
實際操作
在交易送出傳回到Transaction Hash時,說明交易成功,可以在這個時候将Transaction Hash及其他交易資訊,一并送出至資料庫。至于擷取訂單回執,随時可以通過錢包位址及Transaction Hash擷取。