diff --git a/server/web3sign/controllers/factory.js b/server/web3sign/controllers/factory.js index 5d88699..c804d8f 100644 --- a/server/web3sign/controllers/factory.js +++ b/server/web3sign/controllers/factory.js @@ -10,6 +10,7 @@ async function init() { add('nftunlock'); add('minthero'); add('erc'); + add('recharge'); } exports.init = init; diff --git a/server/web3sign/controllers/recharge.js b/server/web3sign/controllers/recharge.js new file mode 100644 index 0000000..ab16dc9 --- /dev/null +++ b/server/web3sign/controllers/recharge.js @@ -0,0 +1,75 @@ +const app = require('j7/app'); +const utils = require('j7/utils'); +const bcutils = require('j7/bcutils'); +const bcconst = require('common/bcconst'); +const metaFactory = require('../metadata/factory'); +const serviceFactory = require('../services/factory'); + +async function recharge(session) { + try { + const accountAddress = bcutils.toNormalAddress(session.request('account_address')); + const netId = session.request('net_id'); + const spender = bcutils.toNormalAddress(session.request('spender')); + const value = session.request('value'); + const currencyName = session.request('currency_name'); + const orderId = session.request('orderId'); + const bc = serviceFactory.create('BlockChain'); + { + const ret = await bc.init(netId); + if (!ret) { + session.rspErr(500, 'net_id error'); + return; + } + } + { + if (!bc.isValidAddress(accountAddress)) { + session.rspErr(500, 'account_address error'); + return; + } + } + { + if (!bc.isValidAddress(spender)) { + session.rspErr(500, 'spender error'); + return; + } + } + const contractMeta = bc.getContractByName(currencyName); + if (!contractMeta) { + session.rspErr(500, 'currency meta not found'); + return; + } + console.log(contractMeta); + if (contractMeta['type'] != 'erc20') { + session.rspErr(500, 'currency meta type error'); + return; + } + + const calls = []; + { + const instance = bc.getInstanceByName(currencyName); + if (!instance) { + session.rspErr(500, 'currency error'); + return; + } + let data = instance.methods.approve + ( + spender, + value).encodeABI(); + + } + + session.rspData({ + 'calls' : calls, + }); + } catch (e) { + session.rspErr(1, 1); + utils.safeDumpErrStack(e); + console.log(e); + } +} + +function init() { + app.registerHandler('BcService', 'recharge', recharge); +} + +exports.init = init;