coa-wx-isv
Version:
一个轻量的微信SDK服务商版 for Node.js
108 lines (107 loc) • 5.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WxIsvSecRegistrationService = void 0;
const coa_helper_1 = require("coa-helper");
const WxIsvTokenService_1 = require("./WxIsvTokenService");
class WxIsvSecRegistrationService extends WxIsvTokenService_1.WxIsvTokenService {
// https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/basic-info-management/getAccountBasicInfo.html
async registerMiniprogram(data) {
data = coa_helper_1.$.snakeCaseKeys(data);
const res = await this.request('POST', '/cgi-bin/component/fastregisterweapp', data, {
action: 'create',
component_access_token: await this.getToken()
});
return res;
}
async registerMiniprogramSearch(data) {
data = coa_helper_1.$.snakeCaseKeys(data);
const res = await this.request('POST', '/cgi-bin/component/fastregisterweapp', data, {
action: 'search',
component_access_token: await this.getToken()
});
return res;
}
async checkWxVerifyNickname(accessToken, nickName) {
return (await this.request('POST', '/cgi-bin/wxverify/checkwxverifynickname', { nick_name: nickName }, { access_token: accessToken }));
}
async setNickname(accessToken, nickName, license, namingOthers) {
return (await this.request('POST', '/wxa/setnickname', { nick_name: nickName, license, ...namingOthers }, { access_token: accessToken }));
}
async setSignature(accessToken, signature) {
return (await this.request('POST', '/cgi-bin/account/modifysignature', { signature }, { access_token: accessToken }));
}
async setHeadImage(accessToken, headImgMediaId, x1, y1, x2, y2) {
return (await this.request('POST', '/cgi-bin/account/modifyheadimage', { head_img_media_id: headImgMediaId, x1, y1, x2, y2 }, { access_token: accessToken }));
}
async getAllCategories(accessToken) {
return (await this.request('GET', '/cgi-bin/wxopen/getallcategories', {}, { access_token: accessToken }));
}
async addCategory(accessToken, categories) {
return (await this.request('POST', '/cgi-bin/wxopen/addcategory', { categories }, { access_token: accessToken }));
}
async submitAuthAndIcp(accessToken, authData, icpSubject, icpApplets, icpMaterials) {
const body = {
auth_data: authData,
icp_subject: icpSubject,
icp_applets: icpApplets,
icp_materials: icpMaterials,
};
return (await this.request('POST', '/wxa/sec/submit_auth_and_icp', body, { access_token: accessToken }));
}
async createIcpVerifyTask(accessToken) {
return (await this.request('POST', '/wxa/icp/create_icp_verifytask', { along_with_auth: true }, { access_token: accessToken }));
}
async queryIcpVerifyTask(accessToken, taskId) {
return (await this.request('POST', '/wxa/icp/query_icp_verifytask', { task_id: taskId }, { access_token: accessToken }));
}
async queryAuthAndIcp(accessToken, procedureId) {
return (await this.request('POST', '/wxa/sec/query_auth_and_icp', { procedure_id: procedureId }, { access_token: accessToken }));
}
async queryIcpServiceContentTypes(accessToken) {
return (await this.request('GET', '/wxa/icp/query_icp_service_content_types', {}, { access_token: accessToken }));
}
async queryIcpCertificateTypes(accessToken) {
return (await this.request('GET', '/wxa/icp/query_icp_certificate_types', {}, { access_token: accessToken }));
}
async queryIcpSubjectTypes(accessToken) {
return (await this.request('GET', '/wxa/icp/query_icp_subject_types', {}, { access_token: accessToken }));
}
async queryIcpDistrictCode(accessToken) {
return (await this.request('GET', 'wxa/icp/query_icp_district_code', {}, { access_token: accessToken }));
}
async queryIcpNrlxTypes(accessToken) {
return (await this.request('GET', '/wxa/icp/query_icp_nrlx_types', {}, { access_token: accessToken }));
}
async getIcpEntranceInfo(accessToken) {
return (await this.request('GET', '/wxa/icp/get_icp_entrance_info', {}, { access_token: accessToken }));
}
async uploadIcpMedia(accessToken, buffer, filename, fields = {}) {
const { body, boundary } = await this.buildMultipartForm({ buffer, filename, fields });
const headers = {
'Content-Type': `multipart/form-data; boundary=${boundary}`,
'Content-Length': body.length.toString(),
};
return await this.requestBuffer('POST', '/wxa/icp/upload_icp_media', body, headers, { access_token: accessToken });
}
async buildMultipartForm(data) {
const boundary = '----WebKitFormBoundary' + Math.random().toString(16).slice(2);
const parts = [];
// 添加额外字段
if (data.fields) {
for (const [key, value] of Object.entries(data.fields)) {
parts.push(Buffer.from(`--${boundary}\r\n` +
`Content-Disposition: form-data; name="${key}"\r\n\r\n` +
`${value}\r\n`));
}
}
// 添加文件字段
const contentDisposition = `Content-Disposition: form-data; name="media"; filename="${data.filename}"`;
const contentType = 'Content-Type: image/jpeg'; // 如有需要可动态判断
const fileHead = Buffer.from(`--${boundary}\r\n${contentDisposition}\r\n${contentType}\r\n\r\n`);
const fileTail = Buffer.from(`\r\n--${boundary}--\r\n`);
// 拼接整体 body
const body = Buffer.concat([...parts, fileHead, data.buffer, fileTail]);
return { body, boundary };
}
}
exports.WxIsvSecRegistrationService = WxIsvSecRegistrationService;