增加eth转账

This commit is contained in:
zhl 2023-06-08 18:08:28 +08:00
parent 92af300adb
commit 72783bd183
6 changed files with 42 additions and 16 deletions

View File

@ -28,20 +28,18 @@ CHAIN_CLIENT_URL=http://127.0.0.1:3006
CRYPTOCOMPARE_API_KEY=d1ec8cd68228095debc9db2dca45771b905ce1f27f522ebfef025c236f4aef3b CRYPTOCOMPARE_API_KEY=d1ec8cd68228095debc9db2dca45771b905ce1f27f522ebfef025c236f4aef3b
# alchemy 相关配置 # alchemy 相关配置
AVAILABLE_NETWORK=arbitrum|bsc AVAILABLE_NETWORK=agor
AVAILABLE_TOKENS=cec|ceg AVAILABLE_TOKENS=cec|ceg
ARBITRUM_CHAIN_ID=421163 AGOR_CHAIN_ID=421163
ARBITRUM_CEC_ADDRESS='0x8dd1439E0C3254b4543d6D68b3C0C891E5Bd2eCE' AGOR_DEV_CEC_ADDRESS='0x8dd1439E0C3254b4543d6D68b3C0C891E5Bd2eCE'
ARBITRUM_CEG_ADDRESS='0x2C7221588D4FBac2585D71618CD540e74c7413B8' AGOR_DEV_CEG_ADDRESS='0x2C7221588D4FBac2585D71618CD540e74c7413B8'
ARBITRUM_WALLET='0x50A8e60041A206AcaA5F844a1104896224be6F39' AGOR_RELEASE_CEC_ADDRESS='0x2C7221588D4FBac2585D71618CD540e74c7413B8'
BSC_CHAIN_ID=97 AGOR_RELEASE_CEG_ADDRESS='0x2C7221588D4FBac2585D71618CD540e74c7413B8'
BSC_CEC_ADDRESS='0xaa34B79A0Ab433eaC900fB3CB9f191F5Cd27501D' AGOR_WALLET='0x50A8e60041A206AcaA5F844a1104896224be6F39'
BSC_CEG_ADDRESS='0xaa34B79A0Ab433eaC900fB3CB9f191F5Cd27501D'
BSC_WALLET='0x50A8e60041A206AcaA5F844a1104896224be6F39'
# 链端转账回调地址 # 链端转账回调地址
PAY_TRANSFER_CB_URL='http://127.0.0.1:3007/api/internal/update_task' PAY_TRANSFER_CB_URL='http://127.0.0.1:3007/api/internal/update_task'
# 链端回调hash的ket # 链端回调hash的ket
HASH_SALT='iG4Rpsa)6U31$H#^T85$^^3' HASH_SALT='iG4Rpsa)6U31$H#^T85$^^3'
# 游戏服, 支付上报地址 # 游戏服, 支付上报地址
GAME_PAY_CB_URL='https://game2006api-test.kingsome.cn/webapp/index.php?c=Shop&a=buyGoodsDirect GAME_PAY_CB_URL=https://game2006api-test.kingsome.cn/webapp/index.php?c=Shop&a=buyGoodsDirect

View File

@ -38,7 +38,8 @@ for (let network of networks) {
data.chainId = parseInt(process.env[`${network.toUpperCase()}_CHAIN_ID`]) data.chainId = parseInt(process.env[`${network.toUpperCase()}_CHAIN_ID`])
data.wallet = process.env[`${network.toUpperCase()}_WALLET`] data.wallet = process.env[`${network.toUpperCase()}_WALLET`]
for (let sub of tokenList) { for (let sub of tokenList) {
data.tokens[sub] = process.env[`${network.toUpperCase()}_${sub.toUpperCase()}_ADDRESS`] data.tokens[`${sub}_dev`] = process.env[`${network.toUpperCase()}_DEV_${sub.toUpperCase()}_ADDRESS`]
data.tokens[`${sub}_release`] = process.env[`${network.toUpperCase()}_RELEASE_${sub.toUpperCase()}_ADDRESS`]
} }
chainCfgs[network] = data chainCfgs[network] = data
} }

View File

@ -13,7 +13,8 @@ class AlchemyController extends BaseController {
@router('post /pay/alchemy/buy') @router('post /pay/alchemy/buy')
async beginApiPay(req, res) { async beginApiPay(req, res) {
const user = req.user const user = req.user
const { network, crypto, address, fiat, fiatAmount, payWayCode, country, accountId, orderId } = req.params const { network, crypto, address, fiat, fiatAmount, payWayCode, country, accountId, orderId, env } = req.params
let envStr = env || 'dev'
if (fiat || fiatAmount || country) { if (fiat || fiatAmount || country) {
if (!fiat || !fiatAmount || !country || !payWayCode) { if (!fiat || !fiatAmount || !country || !payWayCode) {
throw new ZError(11, 'fiat, fiatAmount payWayCode and country must be provided') throw new ZError(11, 'fiat, fiatAmount payWayCode and country must be provided')
@ -36,6 +37,7 @@ class AlchemyController extends BaseController {
address, address,
network, network,
crypto, crypto,
env: envStr,
gameAccountId: accountId, gameAccountId: accountId,
gameOrderId: orderId, gameOrderId: orderId,
}) })
@ -134,10 +136,13 @@ class AlchemyController extends BaseController {
if (!token || !chain) { if (!token || !chain) {
throw new ZError(11, 'token or network not found') throw new ZError(11, 'token or network not found')
} }
if (chain.toLowerCase() === 'agor' && (token.toLowerCase() === 'ceg' || token.toLowerCase() === 'cec')) { if (
(chain.toLowerCase() === 'agor' || chain.toLowerCase() === 'eth') &&
(token.toLowerCase() === 'ceg' || token.toLowerCase() === 'cec')
) {
return { price: 1 } return { price: 1 }
} }
if (chain.toLowerCase() === 'agor' && token.toLowerCase() === 'agor') { if ((chain.toLowerCase() === 'agor' || chain.toLowerCase() === 'eth') && token.toLowerCase() === 'agor') {
token = 'ETH' token = 'ETH'
chain = 'ETH' chain = 'ETH'
} }

View File

@ -132,7 +132,7 @@ class AlchemyOutController extends BaseController {
if (record.crypto != crypto || record.network != network || record.address != address) { if (record.crypto != crypto || record.network != network || record.address != address) {
return errorRes('params mismatch') return errorRes('params mismatch')
} }
record.cryptoAmount = cryptoAmount record.cryptoAmount = record.network.toLowerCase() === 'agor' ? '0.001' : cryptoAmount
record.cryptoPrice = cryptoPrice record.cryptoPrice = cryptoPrice
record.usdtAdmount = usdtAmount record.usdtAdmount = usdtAmount
record.status = PayStatus.TRANSFERING record.status = PayStatus.TRANSFERING

View File

@ -45,6 +45,9 @@ export class PayRecordClass extends BaseModule {
@prop() @prop()
public crypto?: string public crypto?: string
@prop()
public env?: string
// 法币 // 法币
@prop() @prop()
public fiat?: string public fiat?: string

View File

@ -40,7 +40,15 @@ export class TransferQueue {
assert(chainCfg, `chain config not found: ${task.network}`) assert(chainCfg, `chain config not found: ${task.network}`)
let chainId = chainCfg.chainId let chainId = chainCfg.chainId
let wallet = chainCfg.wallet let wallet = chainCfg.wallet
let address = chainCfg.tokens[task.crypto.toLowerCase()] let token = task.crypto.toLowerCase()
let address
if (token === 'agor') {
address = 'eth'
} else {
let env = task.env ? task.env.toLowerCase() : 'dev'
address = chainCfg.tokens[`${token}_${env}`]
}
assert(address, `token address not found: ${task.crypto}`) assert(address, `token address not found: ${task.crypto}`)
let record = await TransferRecord.insertOrUpdate( let record = await TransferRecord.insertOrUpdate(
{ recordId: task.id }, { recordId: task.id },
@ -54,6 +62,7 @@ export class TransferQueue {
$inc: { version: 1 }, $inc: { version: 1 },
}, },
) )
let datas: any = [ let datas: any = [
{ {
chain: record.chain, chain: record.chain,
@ -64,6 +73,16 @@ export class TransferQueue {
type: 3, type: 3,
}, },
] ]
if (token === 'agor') {
datas = [
{
from: record.from,
to: record.to,
amount: record.amount,
type: 6,
},
]
}
let reqData = { let reqData = {
taskId: record.id, taskId: record.id,
source: 'pay', source: 'pay',