UNPKG

coa-wx-isv

Version:

一个轻量的微信SDK服务商版 for Node.js

68 lines (67 loc) 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WxIsvChargeService = void 0; const coa_helper_1 = require("coa-helper"); const WxIsvServiceBase_1 = require("../libs/WxIsvServiceBase"); class WxIsvChargeService extends WxIsvServiceBase_1.WxIsvServiceBase { async getAccessToken() { var _a; const cacheName = `WxSmAccessToken:${this.bin.config.wxSmConfig.appId}`; const result = (_a = (await this.bin.storage.get(cacheName))) !== null && _a !== void 0 ? _a : { token: '', expireOn: 0 }; if (!result.token) { const { appId, secret } = this.bin.config.wxSmConfig; const data = await this.request('GET', '/cgi-bin/token', {}, { grant_type: 'client_credential', appid: appId, secret }); const ms = coa_helper_1._.toInteger(data.expiresIn) * 1e3 - 10 * 1e3; result.expireOn = coa_helper_1._.now() + ms; result.token = data.accessToken || ''; await this.bin.storage.set(cacheName, result, ms); } return result.token; } /** * 查询购买资源包的用量情况 * 小程序可通过本接口查询已购买资源包的用量情况 * 详见 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/charge/api/charge_get_usage_detail.html * @param access_token 接口调用凭证,该参数为 URL 参数,非 Body 参数 * @param spuId 商品SPU ID,小程序音视频通话:10000058,手机号快速验证组件:10000077,手机号实时验证组件:10000086,地图个性化样式组件:10000092 * @param offset 分页偏移量,从0开始 * @param limit 每页个数,最大20 */ async getUsageDetail(access_token, spuId = '10000077', offset = 0, limit = 20) { return await this.request('GET', '/wxa/charge/usage/get', {}, { access_token, spuId, offset, limit }); } /** * 查询订单列表 * 服务商可通过本接口查询已购买商品的订单列表 * 详见 https://developers.weixin.qq.com/doc/oplatform/service_market/charge/api/charge_sp_query_order_list.html * @param spuId 商品SPU ID,集采-手机号快速验证组件:10000117,集采-手机号实时验证组件:10000120 * @param offset 分页偏移量,从0开始 * @param limit 每页个数,最大20 */ async queryOrderList(spuId = '10000117', offset = 0, limit = 20) { return await this.request('POST', '/wxa/charge/service-provider/order/query_list', { spuId, offset, limit }, { access_token: await this.getAccessToken() }); } /** * 查询可分配的sku列表 * 服务商采购商品后,可通过本接口查询已购买资源包可分配的sku列表 * 详见 https://developers.weixin.qq.com/doc/oplatform/service_market/charge/api/charge_sp_get_convertible_skus.html * @param spSpuId 服务商采购的批发商品SPU ID * @param spSkuId 服务商采购的批发商品SKU ID */ async getConvertibleSkus(spSpuId, spSkuId) { return await this.request('GET', '/wxa/charge/service-provider/package/get_convertible_skus', {}, { access_token: await this.getAccessToken(), spSpuId, spSkuId }); } /** * 服务商分配资源包 * 服务商在购买商品后,可通过本接口为指定的小程序分配资源包 * 详见 https://developers.weixin.qq.com/doc/oplatform/service_market/charge/api/charge_sp_assign_package.html * @param orderId 要分配的服务商订单ID,如 DD2970445798112968704 * @param skuId 期望分配给小程序的商品SKU ID * @param receiverAppId 要分配的小程序AppID * @param requestId 唯一请求ID,同一次分配请求需唯一,同一订单号同一requestId多次请求等同一次。requestId应为10-64位长的字符串 */ async assignPackage(orderId, skuId, receiverAppId, requestId) { return await this.request('POST', '/wxa/charge/service-provider/package/assign', { orderId, skuId, receiverAppId, requestId }, { access_token: await this.getAccessToken() }); } } exports.WxIsvChargeService = WxIsvChargeService;