优化alchemy购买流程
This commit is contained in:
parent
db5c061ce4
commit
ff90914997
@ -8,17 +8,19 @@ API_TOKEN_EXPIRESIN=1d
|
||||
GOOGLE_OAUTH_CLIENT="53206975661-asnf3qe4bg29p8h981pgf099osvrjbme.apps.googleusercontent.com"
|
||||
GOOGLE_OAUTH_CLIENT2="53206975661-ih3r0ubph3rqejdq97b029difbrk2bqj.apps.googleusercontent.com"
|
||||
GOOGLE_OAUTH_CLIENT_IOS="53206975661-qan0rnefniegjv53ohild375pv0p7ekd.apps.googleusercontent.com"
|
||||
DB_MAIN=mongodb://localhost/wallet-development
|
||||
GOOGLE_CLOUD_API_KEY="AIzaSyDNOhG9J0TFqeE0g5TOnxWpDNkUMc3PBgI"
|
||||
DB_MAIN=mongodb://192.168.100.22/wallet-development
|
||||
DB_PAY=mongodb://192.168.100.22/pay-development
|
||||
|
||||
EMAIL_VERIFY_URL="https://wallet.cebggame.com"
|
||||
EMAIL_SERVER='http://127.0.0.1:3087'
|
||||
|
||||
ALCHEMY_APPID="f83Is2y7L425rxl8"
|
||||
ALCHEMY_APP_SECRET="4Yn8RkxDXN71Q3p0"
|
||||
# ALCHEMY_API_BASE="https://openapi-test.alchemypay.org"
|
||||
# ALCHEMY_PAGE_BASE="https://ramptest.alchemypay.org"
|
||||
ALCHEMY_API_BASE="http://127.0.0.1:3009"
|
||||
ALCHEMY_PAGE_BASE="http://127.0.0.1:3009/pay_page"
|
||||
ALCHEMY_API_BASE="https://openapi-test.alchemypay.org"
|
||||
ALCHEMY_PAGE_BASE="https://ramptest.alchemypay.org"
|
||||
# ALCHEMY_API_BASE="http://127.0.0.1:3009"
|
||||
# ALCHEMY_PAGE_BASE="http://127.0.0.1:3009/pay_page"
|
||||
|
||||
ALCHEMY_PAY_CB_URL="https://wallet.cebggame.com"
|
||||
|
||||
|
@ -53,7 +53,7 @@ let baseConfig = {
|
||||
},
|
||||
|
||||
db_main: process.env.DB_MAIN,
|
||||
db_second: process.env.DB_SECOND,
|
||||
db_pay: process.env.DB_PAY,
|
||||
chainCfgs: chainCfgs,
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import { PayRecord, PayStatus } from 'modules/PayRecord'
|
||||
import { TransferQueue } from 'queue/transfer.queue'
|
||||
import { TransferRecord } from 'modules/TransferRecord'
|
||||
import { reportPayResult } from 'service/game.svr'
|
||||
import { PriceSvr } from 'service/price.svr'
|
||||
|
||||
let errorRes = function (msg: string) {
|
||||
logger.info(`error res: ${msg}`)
|
||||
@ -90,14 +91,17 @@ class AlchemyOutController extends BaseController {
|
||||
if (!checkSha1Sign(req.headers)) {
|
||||
return errorRes('sign error')
|
||||
}
|
||||
let gas = 36000 * 0.0000000001
|
||||
let price = await new PriceSvr().fetchPrice({ crypto: 'ETH', network: 'ARBITRUM' })
|
||||
let networkFee = gas * parseFloat(price)
|
||||
let result = {
|
||||
direct: 1,
|
||||
data: {
|
||||
price: '1.0',
|
||||
networkList: [
|
||||
{
|
||||
network: 'AGOR',
|
||||
networkFee: '0.037',
|
||||
network: 'ARBITRUM',
|
||||
networkFee: networkFee.toFixed(6),
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -23,7 +23,7 @@ const notify = async function (record: DocumentType<PayRecordClass>, subTask: Do
|
||||
network: record.network, // 用户购买的数字货币对应的网络
|
||||
// networkFee: record.networkFee, // 网络费用/USDT
|
||||
address: record.address, // 用户的提币地址
|
||||
status: 'SUCCESS', // SUCCESS/FAIL
|
||||
status: record.status === PayStatus.TRANSFERED ? 'SUCCESS' : 'FAIL', // SUCCESS/FAIL
|
||||
}
|
||||
try {
|
||||
let priceData = await queryPrice({ gas: subTask.gas })
|
||||
@ -71,15 +71,15 @@ export default class InternalController extends BaseController {
|
||||
record.hashList = hashList
|
||||
task.txHash = hashList[0]
|
||||
task.status = PayStatus.TRANSFERED
|
||||
setImmediate(async () => {
|
||||
await notify(task, record)
|
||||
})
|
||||
} else {
|
||||
record.status = 10
|
||||
task.status = PayStatus.TRANSFER_FAIL
|
||||
}
|
||||
await record.save()
|
||||
await task.save()
|
||||
setImmediate(async () => {
|
||||
await notify(task, record)
|
||||
})
|
||||
return {}
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ export enum PayStatus {
|
||||
FAIL = 99,
|
||||
}
|
||||
|
||||
@dbconn()
|
||||
@dbconn('pay')
|
||||
@index({ outOrderId: 1 }, { unique: true, partialFilterExpression: { outOrderId: { $exists: true } } })
|
||||
@modelOptions({
|
||||
schemaOptions: { collection: 'pay_record', timestamps: true },
|
||||
|
@ -6,7 +6,7 @@ import { PayType } from './PayRecord'
|
||||
/**
|
||||
* 支付打款记录
|
||||
*/
|
||||
@dbconn()
|
||||
@dbconn('pay')
|
||||
@index({ recordId: 1 }, { unique: true })
|
||||
@modelOptions({ schemaOptions: { collection: 'pay_transfer_record', timestamps: true } })
|
||||
export class TransferRecordClass extends BaseModule {
|
||||
|
@ -87,6 +87,7 @@ export class TransferQueue {
|
||||
taskId: record.id,
|
||||
source: 'pay',
|
||||
data: datas,
|
||||
max: 1,
|
||||
cb: process.env.PAY_TRANSFER_CB_URL,
|
||||
}
|
||||
await pushTaskToChain(reqData)
|
||||
|
@ -87,6 +87,10 @@ export function createPageSign(plainText: string) {
|
||||
|
||||
export function checkSha1Sign(headers: any) {
|
||||
const { appid, appId, timestamp, sign } = headers
|
||||
// timestamp 5分钟内有效
|
||||
if (parseInt(timestamp) < Date.now() - 1000 * 60 * 5) {
|
||||
return false
|
||||
}
|
||||
let appIdToCheck = appId || appid || process.env.ALCHEMY_APPID
|
||||
const expectedSign = sha1(appIdToCheck + process.env.ALCHEMY_APP_SECRET + timestamp)
|
||||
return sign === expectedSign
|
||||
|
Loading…
x
Reference in New Issue
Block a user