This commit is contained in:
aozhiwei 2024-07-26 09:47:02 +08:00
parent f0a4cd7a17
commit 8d8d639990
2 changed files with 76 additions and 0 deletions

View File

@ -10,6 +10,7 @@ async function init() {
add('nftunlock');
add('minthero');
add('erc');
add('recharge');
}
exports.init = init;

View File

@ -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;