UNPKG

wechatpay-nextjs-v3

Version:
205 lines (204 loc) 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Base = void 0; class Base { userAgent = '127.0.0.1'; // User-Agent /** * get 请求参数处理 * @param object query 请求参数 * @param exclude 需要排除的字段 * @returns */ objectToQueryString(object, exclude = []) { let str = Object.keys(object) .filter((key) => !exclude.includes(key)) .map((key) => { return encodeURIComponent(key) + '=' + encodeURIComponent(object[key]); }) .join('&'); if (str) str = '?' + str; return str || ''; } /** * 获取请求头 * @param authorization */ getHeaders(authorization, headers = {}) { return { ...headers, Accept: 'application/json', 'User-Agent': this.userAgent, Authorization: authorization, 'Accept-Encoding': 'gzip', }; } /** * post 请求 * @param url 请求接口 * @param params 请求参数 * @deprecated 弃用 */ async postRequest(url, params, authorization) { try { const response = await fetch(url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', 'User-Agent': this.userAgent, Authorization: authorization, 'Accept-Encoding': 'gzip', }, body: JSON.stringify(params), }); const data = await response.json(); return { status: response.status, ...data, }; } catch (error) { const err = JSON.parse(JSON.stringify(error)); return { status: err.status, errRaw: err, ...(err?.response?.text && JSON.parse(err?.response?.text)), }; } } /** * post 请求 V2 * @param url 请求接口 * @param params 请求参数 * @deprecated 弃用 */ async postRequestV2(url, params, authorization, headers = {}) { try { const response = await fetch(url, { method: 'POST', headers: { ...headers, Accept: 'application/json', 'Content-Type': 'application/json', 'User-Agent': this.userAgent, Authorization: authorization, 'Accept-Encoding': 'gzip', }, body: JSON.stringify(params), }); const data = await response.json(); return { status: response.status, data, }; } catch (error) { const err = JSON.parse(JSON.stringify(error)); return { status: err.status, errRaw: err, error: err?.response?.text, }; } } /** * get 请求 * @param url 请求接口 * @param query 请求参数 * @deprecated 弃用 */ async getRequest(url, authorization, query = {}) { try { const queryString = this.objectToQueryString(query); const response = await fetch(`${url}${queryString}`, { method: 'GET', headers: { Accept: 'application/json', 'User-Agent': this.userAgent, Authorization: authorization, 'Accept-Encoding': 'gzip', }, }); let data = {}; const contentType = response.headers.get('Content-Type'); if (contentType?.includes('application/json')) { data = { status: response.status, ...(await response.json()), }; } else if (contentType?.includes('text/plain')) { data = { status: response.status, data: await response.text(), }; } else if (contentType?.includes('application/x-gzip')) { data = { status: response.status, data: await response.arrayBuffer(), }; } else { data = { status: response.status, ...(await response.json()), }; } return data; } catch (error) { const err = JSON.parse(JSON.stringify(error)); return { status: err.status, errRaw: err, ...(err?.response?.text && JSON.parse(err?.response?.text)), }; } } /** * get 请求 v2 * @param url 请求接口 * @param query 请求参数 * @deprecated 弃用 */ async getRequestV2(url, authorization, query = {}) { try { const queryString = this.objectToQueryString(query); const response = await fetch(`${url}${queryString}`, { method: 'GET', headers: { Accept: 'application/json', 'User-Agent': this.userAgent, Authorization: authorization, 'Accept-Encoding': 'gzip', }, }); let data = {}; const contentType = response.headers.get('Content-Type'); if (contentType?.includes('text/plain')) { data = { status: response.status, data: await response.text(), }; } else { data = { status: response.status, data: await response.json(), }; } return data; } catch (error) { const err = JSON.parse(JSON.stringify(error)); return { status: err.status, errRaw: err, error: err?.response?.text, }; } } } exports.Base = Base;