wx.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. const { CrudService } = require('naf-framework-mongoose-free/lib/service');
  3. const { BusinessError, ErrorCode } = require('naf-core').Error;
  4. const _ = require('lodash');
  5. const assert = require('assert');
  6. // 微信
  7. class WxService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 'wx');
  10. this.model = this.ctx.model.Wx;
  11. }
  12. // 小程序登录
  13. async appAuth({ js_code }) {
  14. const { wxAppConfig } = this.app.config;
  15. if (!wxAppConfig) return;
  16. let url = 'https://api.weixin.qq.com/sns/jscode2session';
  17. let query = `?js_code=${js_code}`;
  18. const keys = Object.keys(wxAppConfig);
  19. for (const key of keys) {
  20. query = `${query}&${key}=${wxAppConfig[key]}`;
  21. }
  22. url = `${url}${query}`;
  23. const res = await this.ctx.curl(url, {
  24. method: 'get',
  25. headers: {
  26. 'content-type': 'application/json',
  27. },
  28. dataType: 'json',
  29. });
  30. const { openid } = res.data;
  31. if (!openid) throw new BusinessError(ErrorCode.BUSINESS, '未获取到openid', '未获取到openid');
  32. return { openid };
  33. }
  34. }
  35. module.exports = WxService;