From db4b6da5f38fac573a146b60937346933d71fdb5 Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:06:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9alchymy=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=8C=E6=89=80=E6=9C=89api=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=A2=9E=E5=8A=A0header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/PayApi.ts | 19 ++++++++++++------- src/api/WalletApi.ts | 4 ++-- src/config/constants.ts | 4 ++++ src/index.ts | 21 +++++++++++++++++---- src/lib/Http.ts | 23 +++++++++++++---------- src/services/PaySvr.ts | 15 ++++++++------- 6 files changed, 56 insertions(+), 30 deletions(-) diff --git a/src/api/PayApi.ts b/src/api/PayApi.ts index cb79ef2..bda145b 100644 --- a/src/api/PayApi.ts +++ b/src/api/PayApi.ts @@ -1,13 +1,18 @@ -import { PAY_API_HOST } from '../config/constants'; +import { PAY_API_HOST_ETH } from '../config/constants'; import { GET_JSON, POST_JSON } from '../lib/Http'; export function reqAlchemyPrePay(data: any) { - const url = `${PAY_API_HOST}/pay/alchemy/buy`; + const url = `${jc.wallet.payUrl}/pay/alchemy/buy`; + return POST_JSON(url, data); +} + +export function reqAlchemyPayETH(data: any) { + const url = `${PAY_API_HOST_ETH}/pay/alchemy/buy`; return POST_JSON(url, data); } export function queryTokenUsdPrice(eth: string, chain: string, env: string) { - const url = `${PAY_API_HOST}/pay/alchemy/crypto_price`; + const url = `${jc.wallet.payUrl}/pay/alchemy/crypto_price`; return POST_JSON(url, { token: eth, chain, env }); } /** @@ -15,21 +20,21 @@ export function queryTokenUsdPrice(eth: string, chain: string, env: string) { * @returns */ export function checkBuyTreasury() { - const url = `${PAY_API_HOST}/pay/alchemy/can_i_buy_treasury`; + const url = `${jc.wallet.payUrl}/pay/alchemy/can_i_buy_treasury`; return GET_JSON(url); } export function queryFiatList() { - const url = `${PAY_API_HOST}/pay/alchemy/fait_list`; + const url = `${jc.wallet.payUrl}/pay/alchemy/fait_list`; return GET_JSON(url); } export function verifyGooglePay(data: any) { - const url = `${PAY_API_HOST}/pay/google/verify`; + const url = `${jc.wallet.payUrl}/pay/google/verify`; return POST_JSON(url, data); } export function verifyApplePay(data: any) { - const url = `${PAY_API_HOST}/pay/apple/verify`; + const url = `${jc.wallet.payUrl}/pay/apple/verify`; return POST_JSON(url, data); } diff --git a/src/api/WalletApi.ts b/src/api/WalletApi.ts index 807a701..0545ac1 100644 --- a/src/api/WalletApi.ts +++ b/src/api/WalletApi.ts @@ -1,5 +1,5 @@ -import { WALLET_API_HOST } from "../config/constants"; -import { GET_JSON, POST_JSON } from "../lib/Http"; +import { WALLET_API_HOST } from '../config/constants'; +import { GET_JSON, POST_JSON } from '../lib/Http'; export function googleAuth(idToken: string) { const url = `${WALLET_API_HOST}/wallet/login/google`; diff --git a/src/config/constants.ts b/src/config/constants.ts index 41affc0..83c8995 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -4,6 +4,8 @@ export const WALLET_STORAGE_KEY_NAME = 'jc_wallet_data'; // export const PAY_API_HOST = 'http://192.168.100.183:3007'; export const WALLET_API_HOST = 'https://wallet.cebggame.com'; export const PAY_API_HOST = 'https://pay.cebggame.com/v2'; +export const PAY_API_HOST_ETH = 'https://pay.cebggame.com/v1'; +export const PAY_API_HOST_TEST = 'https://pay.cebggame.com/v0'; export const MAX_TRY_COUNT = 6; @@ -20,3 +22,5 @@ export const AVAILABLE_CHAINS = [80001, 421613, 137, 42161]; export const BASE_TOKEN_URI = 'https://market.cebg.games/api/nft/info/'; export const GAS_BOOST = 1.2; + +export const VERSION_CODE = 1; diff --git a/src/index.ts b/src/index.ts index a60381f..d191f02 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,16 @@ import { recoverTypedSignature, signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import Web3 from 'web3'; import 'whatwg-fetch'; -import { createWalletEvents, WALLET_ACCOUNT_CHANGE, WALLET_CHAIN_CHANGE } from './common/WalletEvent'; import { JazzIcon } from './comp/JazzIcon'; import { ZWalletConnect } from './comp/ZWalletConnect'; -import { AVAILABLE_CHAINS, NATIVE_PK_PREFIX, TX_CONFIRM_BLOCKS, WALLET_STORAGE_KEY_NAME } from './config/constants'; +import { + AVAILABLE_CHAINS, + NATIVE_PK_PREFIX, + PAY_API_HOST, + PAY_API_HOST_TEST, + TX_CONFIRM_BLOCKS, + WALLET_STORAGE_KEY_NAME, +} from './config/constants'; import { AllChains } from './data/allchain'; import { singleton } from './decorator/singleton.decorator'; import { parseUrl } from './manage/SchemeManage'; @@ -23,7 +29,6 @@ import { IChainData } from './types/data.types'; import { universalChainCb } from './util/chain.util'; import { fromTokenMinimalUnit, renderFromTokenMinimalUnit, safeNumberToBN } from './util/number.util'; import { buildLoginSignMsg, signLogin } from './util/sign.util'; -import { parse } from 'url'; var global = (typeof globalThis !== 'undefined' && globalThis) || @@ -55,7 +60,7 @@ export default class JCWallet { private rpcUrl: string = ''; public rpc: any = {}; public nativeAccount = ''; - private env = 'dev'; + public env = 'dev'; private web3Map = new Map(); constructor({ type }: { type: number }) { @@ -83,6 +88,14 @@ export default class JCWallet { return this.walletType === WalletType.INTERNAL; } + public get payUrl() { + if (this.env === 'release') { + return PAY_API_HOST; + } else { + return PAY_API_HOST_TEST; + } + } + public preLogin(channel: number) { return walletPreLogin(channel); } diff --git a/src/lib/Http.ts b/src/lib/Http.ts index a7d1c16..9a91da1 100644 --- a/src/lib/Http.ts +++ b/src/lib/Http.ts @@ -1,18 +1,21 @@ -import { fetch } from "whatwg-fetch"; -import { WalletEnv } from "../config/WalletEnv"; +import { fetch } from 'whatwg-fetch'; +import { WalletEnv } from '../config/WalletEnv'; +import { VERSION_CODE } from '../config/constants'; export function request(url, option) { let headers = new Headers(); - headers.append("Content-Type", "application/json"); + headers.append('Content-Type', 'application/json'); let walletEnv = new WalletEnv(); if (walletEnv.token) { - headers.append("Authorization", `Bearer ${walletEnv.token}`); + headers.append('Authorization', `Bearer ${walletEnv.token}`); } + headers.append('api_version', VERSION_CODE + ''); + headers.append('api_env', jc.wallet.env); let optionInt: any = { - method: "GET", - mode: "cors", + method: 'GET', + mode: 'cors', headers, - cache: "no-cache", + cache: 'no-cache', }; Object.assign(optionInt, option); // console.log("request option", JSON.stringify(optionInt)); @@ -31,7 +34,7 @@ export function GET_JSON(url: string) { export function POST(url, data) { let option = { - method: "POST", + method: 'POST', body: JSON.stringify(data), }; return request(url, option); @@ -39,7 +42,7 @@ export function POST(url, data) { export function DELETE(url, data) { let option = { - method: "DELETE", + method: 'DELETE', body: JSON.stringify(data), }; return request(url, option); @@ -47,7 +50,7 @@ export function DELETE(url, data) { export function PUT(url, data) { let option = { - method: "PUT", + method: 'PUT', body: JSON.stringify(data), }; return request(url, option); diff --git a/src/services/PaySvr.ts b/src/services/PaySvr.ts index 9cf8d30..f0c63be 100644 --- a/src/services/PaySvr.ts +++ b/src/services/PaySvr.ts @@ -1,5 +1,6 @@ import { queryFiatList, queryTokenUsdPrice, reqAlchemyPrePay, verifyApplePay, verifyGooglePay } from '../api/PayApi'; import { ZError } from '../common/ZError'; +import { VERSION_CODE } from '../config/constants'; import { singleton } from '../decorator/singleton.decorator'; import { IPayData } from '../types/data.types'; import { NativeSvr } from './NativeSvr'; @@ -12,11 +13,13 @@ export class PaySvr { * @param data - The data to be passed to the alchemyPrePay function. * @returns The result of the alchemyPrePay function. */ - public async alchemyPrePay(data: IPayData) { - data.network = jc.wallet.currentChain.network; - data.crypto = data.crypto.toUpperCase(); - data.country = data.country.toUpperCase(); - data.fiat = data.fiat.toUpperCase(); + public async alchemyPrePay(data: any) { + // data.network = data.network || jc.wallet.currentChain.network; + // data.crypto = data.crypto.toUpperCase(); + // data.country = data.country.toUpperCase(); + // data.fiat = data.fiat.toUpperCase(); + data.evn = jc.wallet.env; + data.version = VERSION_CODE; let res = await reqAlchemyPrePay(data); if (res.errcode) { throw new Error(res.errmsg); @@ -29,8 +32,6 @@ export class PaySvr { throw new Error('No url returned'); } console.log('pay url::', url); - // jsb.showWebPage(url); - // jsb.openURL(url); return res.data; }