91 lines
2.0 KiB
JavaScript
91 lines
2.0 KiB
JavaScript
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');
|
|
|
|
async function buy(session) {
|
|
try {
|
|
const account = bcutils.toNormalAddress(session.request('account', ''));
|
|
const netId = session.request('net_id');
|
|
const price = session.request('price');
|
|
const bc = serviceFactory.create('BlockChain');
|
|
{
|
|
const ret = await bc.init(netId);
|
|
if (!ret) {
|
|
session.rspErr(500, 'net_id error');
|
|
return;
|
|
}
|
|
}
|
|
{
|
|
if (!bc.isValidAddress(account)) {
|
|
session.rspErr(500, 'account error');
|
|
return;
|
|
}
|
|
}
|
|
|
|
const currency = metaFactory.getContractByName('CEG')['address'];
|
|
const userAddress = bc.getUserAddress();
|
|
|
|
const transModel = session.createModel('Transaction');
|
|
const usedTokenIdModel = session.createModel('UsedTokenId');
|
|
|
|
const {err, seqId} = await transModel.add(account, session.requestToJson(), netId);
|
|
if (err) {
|
|
session.rspErr(500, 'server internal error');
|
|
return;
|
|
}
|
|
|
|
const nowTime = utils.getUtcTime();
|
|
const transId = bcutils.genTransId
|
|
(
|
|
bcconst.BC_FUNC_COMMON,
|
|
nowTime,
|
|
seqId,
|
|
[
|
|
]
|
|
);
|
|
await transModel.update
|
|
(
|
|
seqId,
|
|
[
|
|
['trans_id', transId]
|
|
]);
|
|
const nonce = transId;
|
|
const orderId = transId;
|
|
const signature = await bc.soliditySha3Sign(
|
|
account,
|
|
orderId,
|
|
currency,
|
|
price,
|
|
nowTime,
|
|
nonce
|
|
);
|
|
|
|
const rspParams = [
|
|
orderId,
|
|
currency,
|
|
price,
|
|
nowTime,
|
|
nonce,
|
|
signature
|
|
];
|
|
utils.arrayToStrings(rspParams);
|
|
|
|
session.rspData({
|
|
'trans_id' : transId,
|
|
'order_id': orderId,
|
|
'params': rspParams
|
|
});
|
|
} catch (e) {
|
|
session.rspErr(1, 1);
|
|
console.log(e);
|
|
}
|
|
}
|
|
|
|
function init() {
|
|
app.registerHandler('GameItemMall', 'buy', buy);
|
|
}
|
|
|
|
exports.init = init;
|