增加一些日志

This commit is contained in:
CounterFire2023 2023-06-16 18:34:26 +08:00
parent 8fb2500443
commit f38f5f5fd1
4 changed files with 25 additions and 9 deletions

View File

@ -84,8 +84,8 @@ class AlchemyController extends BaseController {
setImmediate(() => {
reportPayResult(record)
})
throw new ZError(payRes.returnCode, payRes.returnMsg)
}
return { url: payRes.data.payUrl }
}
@router('post /pay/alchemy/buypage')

View File

@ -2,13 +2,14 @@ import logger from 'logger/logger'
import BaseController, { ROLE_ANON } from 'common/base.controller'
import { ZError } from 'common/ZError'
import { role, router } from 'decorators/router'
import { checkPayResultSign, checkSimpleSign } from 'service/alchemy.svr'
import { checkPayResultSign, checkSha1Sign, checkSimpleSign } from 'service/alchemy.svr'
import { PayRecord, PayStatus } from 'modules/PayRecord'
import { TransferQueue } from 'queue/transfer.queue'
import { TransferRecord } from 'modules/TransferRecord'
import { reportPayResult } from 'service/game.svr'
let errorRes = function (msg: string) {
logger.info(`error res: ${msg}`)
return {
direct: 1,
data: null,
@ -25,6 +26,7 @@ class AlchemyOutController extends BaseController {
@router('post /pay/out/alchemy/buycb')
async alchemyCallback(req, res) {
let { orderNo, status, crypto, network, merchantOrderNo } = req.params
logger.info(`alchemy callback: ${orderNo}, ${status}, ${crypto}, ${network}, ${merchantOrderNo}`)
if (!merchantOrderNo) {
logger.info(`alchemy callback merchantOrderNo not found`)
throw new ZError(11, 'alchemy callback merchantOrderNo not found')
@ -75,7 +77,9 @@ class AlchemyOutController extends BaseController {
@router('get /pay/out/alchemy/queryprice')
async queryToken(req, res) {
const { crypto } = req.params
logger.info(`alchemy query price: ${crypto}`)
let { appId, appid, timestamp, sign } = req.headers
logger.info(`alchemy query price headers: ${appid}, ${timestamp}, ${sign}`)
if (!crypto) {
return errorRes('params mismatch')
}
@ -83,7 +87,7 @@ class AlchemyOutController extends BaseController {
if (!appId || !timestamp || !sign) {
return errorRes('headers mismatch')
}
if (!checkSimpleSign(req.headers, { crypto })) {
if (!checkSha1Sign(req.headers)) {
return errorRes('sign error')
}
let result = {
@ -92,7 +96,7 @@ class AlchemyOutController extends BaseController {
price: '1.0',
networkList: [
{
network: 'ETH',
network: 'AGOR',
networkFee: '0.037',
},
],
@ -106,22 +110,25 @@ class AlchemyOutController extends BaseController {
/**
*
* TODO::test
*/
@role(ROLE_ANON)
@router('post /pay/out/alchemy/distribute')
async distributeToken(req, res) {
const { orderNo, crypto, network, address, cryptoAmount, cryptoPrice, usdtAmount } = req.params
logger.info(
`alchemy distributeToken: orderNo: ${orderNo}, crypto: ${crypto}, network: ${network}, address: ${address}, cryptoAmount: ${cryptoAmount}, cryptoPrice: ${cryptoPrice}, usdtAmount: ${usdtAmount}`,
)
let { appId, appid, timestamp, sign } = req.headers
logger.info(`alchemy distributeToken: appId: ${appId || appid}, timestamp: ${timestamp}, sign: ${sign}`)
if (!orderNo || !crypto || !network || !address || !cryptoAmount || !cryptoPrice || !usdtAmount) {
return errorRes('params mismatch')
}
appId = appId || appid
if (!appId || !timestamp || !sign) {
if (!timestamp || !sign) {
return errorRes('headers mismatch')
}
let signData = { orderNo, crypto, network, address, cryptoAmount, cryptoPrice, usdtAmount }
if (!checkSimpleSign(req.headers, signData)) {
// let signData = { orderNo, crypto, network, address, cryptoAmount, cryptoPrice, usdtAmount }
if (!checkSha1Sign(req.headers)) {
return errorRes('sign error')
}

View File

@ -12,6 +12,7 @@ export enum PlatEnum {
TWITTER = 4,
TELEGRAM = 5,
EMAIL = 6,
DISCORD = 7,
}
/**

View File

@ -2,6 +2,7 @@ import axios from 'axios'
import { hmacsha256, sha1 } from 'utils/security.util'
import crypto from 'crypto'
import { generateKVStr } from 'utils/net.util'
import logger from 'logger/logger'
export function createSimpleSign(data: any) {
let timestamp = Date.now()
@ -40,7 +41,7 @@ export function createSha1Sign() {
*/
export function checkPayResultSign(data: any) {
const { appId, orderNo, crypto, network, address, signature } = data
const sign = hmacsha256(appId + orderNo + crypto + network + address, process.env.ALCHEMY_APP_SECRET)
const sign = sha1(appId + process.env.ALCHEMY_APP_SECRET + appId + orderNo + crypto + network + address)
return sign === signature
}
@ -55,6 +56,7 @@ export function checkSimpleSign(headers: any, data: any) {
.map(key => `${key}=${signData[key]}`)
.join('&')
const expectedSign = hmacsha256(signStr, process.env.ALCHEMY_APP_SECRET)
logger.info('compare sign: ', sign, expectedSign)
// const expectedSign = sha1(appIdToCheck + process.env.ALCHEMY_APP_SECRET + timestamp)
return sign === expectedSign
}
@ -83,6 +85,12 @@ export function createPageSign(plainText: string) {
return null
}
export function checkSha1Sign(headers: any) {
const { appid, appId, timestamp, sign } = headers
let appIdToCheck = appId || appid || process.env.ALCHEMY_APPID
const expectedSign = sha1(appIdToCheck + process.env.ALCHEMY_APP_SECRET + timestamp)
return sign === expectedSign
}
/**
* Refresh token
* https://alchemycn.readme.io/docs/获取token