45 lines
1.5 KiB
TypeScript
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}
|
|
}
|
|
}
|