wallet-svr/src/controllers/alchemy.controller.ts
2023-03-17 19:22:23 +08:00

45 lines
1.5 KiB
TypeScript

import logger from 'logger/logger'
import BaseController from 'common/base.controller'
import {ZError} from 'common/ZError'
import { router } from 'decorators/router'
import {createPageSign, refreshToken} from 'service/alchemy.svr'
import {generateKVStr} from 'utils/net.util'
class AlchemyController extends BaseController {
@router('post /pay/alchemy/buy')
async beginPay(req, res) {
const user = req.user
const {chain, currency, address} = req.params
const tokenResult = await refreshToken(user.emailReal)
console.log(tokenResult)
if (!tokenResult.success) {
logger.info(`fetch pay token error::code: ${tokenResult.returnCode} msg: ${tokenResult.returnMsg}`)
throw new ZError(10, 'fetch pay token error')
}
const { id, email, accessToken } = tokenResult.data
const redirectUrl = ''
const callbackUrl = ''
const merchantOrderNo = ''
let dataOrign:any = {
token: accessToken,
email,
id,
showTable: 'buy',
}
if (chain) dataOrign.network=chain
if (currency) dataOrign.crypto=currency
let dataSign = {
appId: process.env.ALCHEMY_APPID,
address
}
let signStr = generateKVStr({data: dataSign, sort: true})
let sign = createPageSign(signStr)
dataOrign.sign = sign
Object.assign(dataOrign, dataSign)
const urlBase = process.env.ALCHEMY_PAGE_BASE
let url = `${urlBase}/`
url = generateKVStr({data: dataOrign, encode: true, uri: url})
return {url}
}
}