wechatpay-nextjs-v3
Version:
微信支付v3版本工具包Next.js版本
205 lines (204 loc) • 6.39 kB
JavaScript
;
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;