Эх сурвалжийг харах

tokenpocket钱包调试对接完成

sys 3 жил өмнө
parent
commit
6885d7029a

+ 24 - 10
common/router/router.js

@@ -3,6 +3,7 @@ import { RouterMount, createRouter } from 'uni-simple-router';
 import tools from '@/common/js/tools'
 import store from '@/store/index'
 import { getPlatform } from '@/common/js/utils'
+import tokenpocketBnb from "@/common/wallet/tokenpocket-wallet/tokenpocket-bnb";
 const router = createRouter({
     platform: process.env.VUE_APP_PLATFORM,
     routes: [...ROUTES]
@@ -11,18 +12,31 @@ const router = createRouter({
 const whiteList = ['/','/pages/index/error','/pages/login/register','/pages/login/index']
 
 router.beforeEach((to, from, next) => {
-    let token = to.query.token;
-    if (token) {
-        uni.setStorageSync('token',token);
-    }
-    const userToken = uni.getStorageSync('token')
-    if(!userToken  ){
-        if(whiteList.indexOf(to.path)<0){
-            next('/pages/login/index');
+    let isWallet= tokenpocketBnb.isInstall()
+    console.log('isWallet:'+isWallet)
+    if(isWallet){
+        let token = to.query.token;
+        if (token) {
+            uni.setStorageSync('token',token);
+        }
+        const userToken = uni.getStorageSync('token')
+        if(!userToken  ){
+            if(whiteList.indexOf(to.path)<0){
+                next('/pages/login/index');
+            }
         }
+        console.log('前置守卫to----------', to)
+        next();
+    }else {
+        console.log(to.path)
+        if(to.path!=='/pages/index/error'){
+            // next('/pages/index/error');
+        }
+        console.log('验证失败执行到错误页面')
+        //
+        next();
     }
-    console.log('前置守卫to----------', to)
-    next();
+
 
 });
 // 全局路由后置守卫

+ 187 - 0
common/wallet/tokenpocket-wallet/tokenpocket-bnb.js

@@ -0,0 +1,187 @@
+/**
+ * bitkeep钱包的tron
+ * @type {{}}
+ */
+import tools from "@/common/js/tools";
+
+let tokenpocketBnb = {}
+
+let contractArr=[
+    'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'
+];
+/**
+ * 钱包初始校验
+ * @returns {*}
+ */
+tokenpocketBnb.isInstall=function (){
+    console.log('---------------------------')
+    console.log(window.ethereum)
+    if(!window.ethereum){
+        return false
+    }
+    console.log(window.ethereum.isTokenPocket)
+    return typeof window.ethereum.isTokenPocket !== 'undefined';
+
+}
+/**
+ * 获取我登陆的地址
+ * @returns {any}
+ */
+tokenpocketBnb.getMyAddress=function () {
+   return  uni.getStorageSync('myAddress')
+}
+
+/**
+ * 获取基本账户地址
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getAccounts=async function (){
+    return new Promise( (resolve, reject) => {
+        try {
+        window.ethereum.request({ method: 'eth_requestAccounts'})
+            .then((address)=>{
+                if(address.length>0){
+                    uni.setStorageSync('myAddress',address[0])
+                    resolve(address[0])
+                }else {
+                    resolve(false)
+                }
+            })
+            .catch((e)=>{
+                console.log(e)
+            })
+        }catch (e) {
+            reject(e)
+        }
+    })
+}
+
+/**
+ * 获取我的余额
+ * @param selectedAddress
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getBalance=async function (selectedAddress) {
+    if(!selectedAddress){
+        selectedAddress=bitkeepTron.getMyAddress();
+    }
+    let balance = await tronWeb.trx.getBalance(selectedAddress);
+    balance=balance/1000000;
+    return  balance
+}
+
+/**
+ * 获取合约数量
+ * @param selectedAddress
+ * @param contractType
+ * @returns {Promise<number>}
+ */
+tokenpocketBnb.getTokenBalance=async function (selectedAddress,contractType) {
+    if(!selectedAddress){
+        selectedAddress=tokenpocketBnb.getMyAddress();
+    }
+    let tokenBalance = await tronWeb.transactionBuilder.triggerConstantContract(
+        contractArr[contractType],
+        "balanceOf(address)",
+        {},
+        [{ type: 'address', value: selectedAddress }],
+        tronWeb.defaultAddress.base58,
+    );
+    let balance = tokenBalance.constant_result[0];
+    balance= parseInt(balance, 16);
+    balance=balance/1000000;
+    return balance;
+}
+
+/**
+ * 获取合约信息
+ * @param contractType
+ * @returns {Promise<boolean|*>}
+ */
+tokenpocketBnb.getContract=async function (contractType) {
+    let contractData = await tronWeb.trx.getContract(contractArr[contractType])
+    if(contractData.abi){
+        return contractData.abi
+    }else {
+        return false
+    }
+}
+
+
+/**
+ * 合约转账
+ * @param to
+ * @param money
+ * @param contractType
+ */
+tokenpocketBnb.getContractData=function (to,money,contractType){
+    let data={};
+    data.contract=contractArr[contractType];
+    data.to=to;
+    data.from=tokenpocketBnb.getMyAddress();
+    if(tools.isDevelopment()){
+        money=0.001;
+    }
+    data.value=money;
+    return data;
+}
+
+/**
+ * 转账接口
+ * @param to
+ * @param money
+ * @returns {{}}
+ */
+tokenpocketBnb.getTransactionData=function (to,money){
+    let data={};
+    data.to=to;
+    data.from=tokenpocketBnb.getMyAddress();
+    if(tools.isDevelopment()){
+        money=0.001;
+    }
+    data.value=money;
+    return data;
+}
+
+/**
+ * 转账
+ * @param data
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.sendTransaction=function (data){
+    return new Promise(async (resolve, reject) => {
+        try {
+            let broastTx={};
+            if (data.contract) {
+                let decimal = 18
+                let Contract = await tronWeb.contract().at(data.contract)
+                const decimalCall = Contract.decimals || Contract.DECIMALS;
+                if (decimalCall) {
+                    decimal = await decimalCall().call()
+                }
+               let txid = await Contract.transfer(
+                    data.to,
+                    tronWeb.toHex(data.value * Math.pow(10, decimal))
+                ).send()
+                if(txid){
+                    broastTx.txid=txid
+                }
+            } else {
+                let tx = await tronWeb.transactionBuilder.sendTrx(data.to, data.value * Math.pow(10, 6), data.from);
+                // sign 签名
+                let signedTx = await tronWeb.trx.sign(tx);
+                //  broadcast  广播
+                 broastTx = await tronWeb.trx.sendRawTransaction(signedTx);
+            }
+            if(broastTx.txid){
+                resolve(broastTx.txid)
+            }else {
+                reject(false)
+            }
+         }catch (e) {
+           reject(false)
+        }
+    })
+}
+
+export default tokenpocketBnb

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 936 - 269
package-lock.json


+ 3 - 0
package.json

@@ -1,5 +1,8 @@
 {
   "dependencies": {
+    "@web3-onboard/core": "^2.10.0",
+    "@web3-onboard/injected-wallets": "^2.3.0",
+    "ethers": "^5.7.2",
     "jquery": "^3.6.1",
     "tronweb": "^4.4.0",
     "uni-read-pages": "^1.0.5",

+ 5 - 3
pages/login/index.vue

@@ -5,9 +5,9 @@
 </template>
 <script>
   import EnLoading from "../../components/en-utils/en-loading/en-loading";
-  import bitkeepTron from "../../common/wallet/bitkeep-wallet/bitkeep-tron";
   import tools from "../../common/js/tools";
   import {login} from "@/api/member";
+  import tokenpocketBnb from "@/common/wallet/tokenpocket-wallet/tokenpocket-bnb";
   export default {
     components: {
       EnLoading
@@ -25,9 +25,11 @@
     },
     methods: {
       getAccount(){
-        bitkeepTron.getAccounts().then((Address)=>{
+        console.log('--------------dssadsa')
+        tokenpocketBnb.getAccounts().then((Address)=>{
           if(Address){
-            this.login(Address)
+            console.log(Address)
+            // this.login(Address)
           }else {
             tools.toError('信息获取失败!')
           }

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно