UNPKG

@tnwx/miniprogram

Version:

TNWX 微信系开发脚手架之极速开发微信小程序

391 lines 19 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const accesstoken_1 = require("@tnwx/accesstoken"); const kits_1 = require("@tnwx/kits"); /** * @author Javen * @copyright javendev@126.com * @description 微信小程序、小游戏相关 API */ class MiniProgramApi { /** * 校验服务器所保存的登录态 session_key 是否合法 * @param openId 用户唯一标识符 * @param signature 用户登录态签名 * @param sigMethod 用户登录态签名的哈希方法 */ static checkSessionKey(openId, signature, sigMethod) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.checkSessionKeyUrl, accessToken.getAccessToken, signature, openId, sigMethod); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * @param appId 小程序 appId * @param secret 小程序 appSecret * @param jsCode 登录时获取的 code */ static code2Session(appId, secret, jsCode) { return __awaiter(this, void 0, void 0, function* () { let url = util.format(this.code2SessionUrl, appId, secret, jsCode); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 校验图片是否违规 * @param imgPath 图片路径 */ static imgSecCheck(imgPath) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.imgSecCheckUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.upload(url, imgPath, ''); }); } /** * 异步校验图片/音频是否违规 * @param mediaUrl * @param mediaType */ static mediaCheckAsync(mediaUrl, mediaType) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.mediaCheckAsyncUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ media_url: mediaUrl, media_type: mediaType })); }); } /** * 校验文本是否违规 * @param content */ static msgSecCheck(content) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.msgSecCheckUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ content: content })); }); } /** * 删除已经上报到微信的key-value数据 * @param openId 用户唯一标识符 * @param signature 用户登录态签名 * @param sigMethod 用户登录态签名的哈希方法 * @param key 要删除的数据key列表 */ static removeUserStorage(openId, signature, sigMethod, keys) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.removeUserStorageUrl, accessToken.getAccessToken, signature, openId, sigMethod); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ key: keys })); }); } /** * 写用户关系链互动数据存储 * @param openId 用户唯一标识符 * @param signature 用户登录态签名 * @param sigMethod 用户登录态签名的哈希方法 * @param kvList 要删除的数据列表 {"key":"1","value":0} */ static setUserInteractiveData(openId, signature, sigMethod, kvList) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.setUserInteractiveDataUrl, accessToken.getAccessToken, signature, openId, sigMethod); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ kv_list: kvList })); }); } /** * 写用户关系链互动数据存储 * @param openId 用户唯一标识符 * @param signature 用户登录态签名 * @param sigMethod 用户登录态签名的哈希方法 * @param kvList 要删除的数据列表 {"key":"1","value":0} */ static setUserStorage(openId, signature, sigMethod, kvList) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.setUserStorageUrl, accessToken.getAccessToken, signature, openId, sigMethod); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ kv_list: kvList })); }); } /** * 创建被分享动态消息的 activity_id */ static createActivityId() { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.createActivieyIdUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 修改被分享的动态消息 * * @param activityId 动态消息的 ID * @param targetState 动态消息修改后的状态 * @param templateInfo 动态消息对应的模板信息 */ static setUpdatableMsg(activityId, targetState, templateInfo) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.setUpdatableMsgUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ activity_id: activityId, target_state: targetState, template_info: templateInfo })); }); } /** * 获取小程序二维码 * 适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制 * * @param path * @param width */ static createQRCode(path, width = 430) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.createQRCodeUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ path: path, width: width }), { headers: { 'Content-type': 'application/json' }, responseType: 'arraybuffer' }); }); } /** * 获取小程序二维码 * 适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制 * * @param path * @param width * @param autoColor * @param lineColor * @param isHyaline */ static getWxAcode(path, width = 430, autoColor = false, lineColor = { r: 0, g: 0, b: 0 }, isHyaline = false) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.getWxAcodeUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ path: path, width: width, auto_color: autoColor, line_color: lineColor, is_hyaline: isHyaline }), { headers: { 'Content-type': 'application/json' }, responseType: 'arraybuffer' }); }); } /** * 获取小程序二维码 * 适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 * @param scene * @param page * @param width * @param autoColor * @param lineColor * @param isHyaline */ static getUnlimited(scene, page, width = 430, autoColor = false, lineColor = { r: 0, g: 0, b: 0 }, isHyaline = false) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.getUnlimitedUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ scene: scene, page: page, width: width, auto_color: autoColor, line_color: lineColor, is_hyaline: isHyaline }), { headers: { 'Content-type': 'application/json' }, responseType: 'arraybuffer' }); }); } /** * 发送订阅消息 * * @param toUser 接收者(用户)的 openid * @param templateId 所需下发的订阅模板id * @param data 模板内容 * @param page 跳转页面路径 */ static sendSubscribeMsg(toUser, templateId, data, page) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.sendSubscribeMsgUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ touser: toUser, template_id: templateId, page: page, data: data })); }); } /** * 用户支付完成后,获取该用户的 UnionId,无需用户授权 * @param openId 支付用户唯一标识 * @param transactionId 微信支付订单号 */ static getPaidUnionidByTransactionId(openId, transactionId) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.getPaidUnionidByTransactionIdUrl, accessToken.getAccessToken, openId, transactionId); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 用户支付完成后,获取该用户的 UnionId,无需用户授权 * @param openId 支付用户唯一标识 * @param mchId 微信支付商户号 * @param outTradeNo 微信支付商户订单号 */ static getPaidUnionidByMchId(openId, mchId, outTradeNo) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.getPaidUnionidByMchIdUrl, accessToken.getAccessToken, openId, mchId, outTradeNo); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * SOTER 生物认证秘钥签名验证 * @param openId 用户 openid * @param jsonString 通过 wx.startSoterAuthentication 成功回调获得的 resultJSON 字段 * @param jsonSignature 通过 wx.startSoterAuthentication 成功回调获得的 resultJSONSignature 字段 */ static verifySoterSignature(openId, jsonString, jsonSignature) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.verifySoterSignatureUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ openid: openId, json_string: jsonString, json_signature: jsonSignature })); }); } /** * 调用服务平台提供的服务 * @param service 服务 ID * @param api 接口名 * @param clientMsgId 随机字符串 ID,调用方请求的唯一标识 * @param data 服务提供方接口数据 */ static serviceMarket(service, api, clientMsgId, data) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.serviceMarketUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ service: service, api: api, client_msg_id: clientMsgId, data: data })); }); } /** * 小程序开发者可以通过本接口提交小程序页面url及参数信息, * 让微信可以更及时的收录到小程序的页面信息, * 开发者提交的页面信息将可能被用于小程序搜索结果展示。 * @param pages 小程序页面信息列表 */ static submitPages(pages) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.submitPagesUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ pages: pages })); }); } /** * 实时日志查询 * @param date YYYYMMDD格式的日期,仅支持最近7天 * @param begintime 开始时间,必须是date指定日期的时间 * @param endtime 结束时间,必须是date指定日期的时间 * @param start 开始返回的数据下标,用作分页,默认为0 * @param limit 返回的数据条数,用作分页,默认为20 * @param traceId 小程序启动的唯一ID,按TraceId查询会展示该次小程序启动过程的所有页面的日志。 * @param path 小程序页面路径,例如pages/index/index * @param id 用户微信号或者OpenId * @param filterMsg 开发者通过setFileterMsg/addFilterMsg指定的filterMsg字段 * @param level 日志等级,返回大于等于level等级的日志,level的定义为2(Info)、4(Warn)、8(Error),如果指定为4,则返回大于等于4的日志,即返回Warn和Error日志。 */ static userLogSearch(date, begintime, endtime, start = 0, limit = 20, traceId, path, id, filterMsg, level) { return __awaiter(this, void 0, void 0, function* () { let accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); let url = util.format(this.userLogSearchUrl, accessToken.getAccessToken, date, begintime, endtime, start, limit); if (traceId) { url.concat('&traceId=').concat(traceId); } if (path) { url.concat('&url=').concat(path); } if (id) { url.concat('&id=').concat(id); } if (filterMsg) { url.concat('&filterMsg=').concat(filterMsg); } if (level) { url.concat('&level=').concat(level.toString()); } return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } } exports.MiniProgramApi = MiniProgramApi; MiniProgramApi.checkSessionKeyUrl = 'https://api.weixin.qq.com/wxa/checksession?access_token=%s&signature=%s&openid=%s&sig_method=%s'; MiniProgramApi.code2SessionUrl = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code'; MiniProgramApi.imgSecCheckUrl = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=%s'; MiniProgramApi.mediaCheckAsyncUrl = 'https://api.weixin.qq.com/wxa/media_check_async?access_token=%s'; MiniProgramApi.msgSecCheckUrl = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token=%s'; MiniProgramApi.removeUserStorageUrl = 'https://api.weixin.qq.com/wxa/remove_user_storage?access_token=%s&signature=%s&openid=%s&sig_method=%s'; MiniProgramApi.setUserInteractiveDataUrl = 'https://api.weixin.qq.com/wxa/setuserinteractivedata?access_token=%s&signature=%s&openid=%s&sig_method=%s'; MiniProgramApi.setUserStorageUrl = 'https://api.weixin.qq.com/wxa/set_user_storage?access_token=%s&signature=%s&openid=%s&sig_method=%s'; MiniProgramApi.createActivieyIdUrl = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create?access_token=%s'; MiniProgramApi.setUpdatableMsgUrl = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send?access_token=%s'; MiniProgramApi.createQRCodeUrl = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%s'; MiniProgramApi.getWxAcodeUrl = 'https://api.weixin.qq.com/wxa/getwxacode?access_token=%s'; MiniProgramApi.getUnlimitedUrl = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s'; MiniProgramApi.sendSubscribeMsgUrl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s'; MiniProgramApi.getPaidUnionidByTransactionIdUrl = 'https://api.weixin.qq.com/wxa/getpaidunionid?access_token=%s&openid=%s&transaction_id=%s'; MiniProgramApi.getPaidUnionidByMchIdUrl = 'https://api.weixin.qq.com/wxa/getpaidunionid?access_token=%s&openid=%s&mch_id=%s&out_trade_no=%s'; MiniProgramApi.verifySoterSignatureUrl = 'https://api.weixin.qq.com/cgi-bin/soter/verify_signature?access_token=%s'; MiniProgramApi.serviceMarketUrl = 'https://api.weixin.qq.com/wxa/servicemarket?access_token=%s'; MiniProgramApi.submitPagesUrl = 'https://api.weixin.qq.com/wxa/search/wxaapi_submitpages?access_token=%s'; MiniProgramApi.userLogSearchUrl = 'https://api.weixin.qq.com/wxaapi/userlog/userlog_search?access_token=%s&date=%s&begintime=%s&endtime=%s&start=%s&limit=%s'; var MiniProgramMediaType; (function (MiniProgramMediaType) { MiniProgramMediaType[MiniProgramMediaType["VOICE"] = 1] = "VOICE"; MiniProgramMediaType[MiniProgramMediaType["IMG"] = 2] = "IMG"; })(MiniProgramMediaType = exports.MiniProgramMediaType || (exports.MiniProgramMediaType = {})); //# sourceMappingURL=MiniProgramApi.js.map