From 94cdea34caf5adad8c6989a2012bec21d5253d4c Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 27 Mar 2023 15:30:27 +0800 Subject: [PATCH] feat: Refactor Alchemy service to improve payment flow. - Remove `callbackUrl` from `dataOrigin` object and add it to `dataSign` object in `beginPay` function in `alchemy.controller.ts` - Improve typing of `dataSign` object in `beginPay` function in `alchemy.controller.ts` - Add new `createOrder` function and functionality to send post request with token to merchant API in `alchemy.svr.ts` - Update `ALCHEMY_PAY_CB_URL` in `.env.development` to point to a new domain --- .env.development | 2 +- src/controllers/alchemy.controller.ts | 4 ++-- src/service/alchemy.svr.ts | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.env.development b/.env.development index 9e8bc34..d28dbef 100644 --- a/.env.development +++ b/.env.development @@ -15,4 +15,4 @@ ALCHEMY_APPID="f83Is2y7L425rxl8" ALCHEMY_APP_SECRET="4Yn8RkxDXN71Q3p0" ALCHEMY_API_BASE="https://openapi-test.alchemypay.org" ALCHEMY_PAGE_BASE="https://ramptest.alchemypay.org" -ALCHEMY_PAY_CB_URL="https://wallet.cebg.games" +ALCHEMY_PAY_CB_URL="https://wallet.cebggame.com" diff --git a/src/controllers/alchemy.controller.ts b/src/controllers/alchemy.controller.ts index ed75080..ee44972 100644 --- a/src/controllers/alchemy.controller.ts +++ b/src/controllers/alchemy.controller.ts @@ -29,13 +29,13 @@ class AlchemyController extends BaseController { id, showTable: 'buy', merchantOrderNo, - callbackUrl: CALL_BACK_URL, } if (chain) dataOrign.network = chain if (currency) dataOrign.crypto = currency - let dataSign = { + let dataSign: any = { appId: process.env.ALCHEMY_APPID, address, + callbackUrl: CALL_BACK_URL, } let signStr = generateKVStr({ data: dataSign, sort: true }) let sign = createPageSign(signStr) diff --git a/src/service/alchemy.svr.ts b/src/service/alchemy.svr.ts index 3788c9b..3899e1a 100644 --- a/src/service/alchemy.svr.ts +++ b/src/service/alchemy.svr.ts @@ -72,3 +72,21 @@ export async function refreshToken(email: string) { let response = await axios(config) return response.data } + +export async function createOrder(data: any) { + const { appid, timestamp, sign } = createSimpleSign() + const host = process.env.ALCHEMY_API_BASE + const config = { + method: 'post', + url: `${host}/merchant/getToken`, + headers: { + appId: appid, + timestamp: timestamp, + sign: sign, + 'Content-Type': 'application/json', + }, + data: data, + } + let response = await axios(config) + return response.data +}