添加企业微信相关接口

This commit is contained in:
zhl 2023-04-06 10:11:13 +08:00
parent 5e56a91bd3
commit 42df8debb0
2 changed files with 62 additions and 15 deletions

View File

@ -1,27 +1,20 @@
import BaseController from 'common/base.controller'
import { ZError } from 'common/ZError'
import { role, router } from 'decorators/router'
import { aesDecrypt, base64Decode, sha1 } from 'utils/security.util'
import { getSignature, decrypt } from '@wecom/crypto'
let signData = function (timestamp, nonce, echostr, token) {
let hashStr = [timestamp, nonce, echostr, token].sort().join('')
return sha1(hashStr)
}
const TOKEN = 'qDd25AkMStj6mI9ViNUQt'
const AES_KEY = 'rk7nvsNobBx3aG9jMSTlKc1gMj4GIPDrWs4ZMdlgP4V'
class WorkFlowController extends BaseController {
@role('anon')
@router('get /workflow/notify')
async sendOneMail(req, res) {
async wxNotifyCheck(req, res) {
const token = process.env.WX_TOKEN
const aesKey = process.env.WX_AES_KEY
let { msg_signature, timestamp, nonce, echostr } = req.params
const signature = getSignature(TOKEN, timestamp, nonce, echostr)
const signature = getSignature(token, timestamp, nonce, echostr)
if (msg_signature !== signature) {
throw new ZError(10, 'sign check failed')
}
const { message, id } = decrypt(AES_KEY, echostr)
const { message, id } = decrypt(aesKey, echostr)
res.send(message)
}
@ -29,12 +22,13 @@ class WorkFlowController extends BaseController {
@router('post /workflow/notify')
async flowNotify(req, res) {
let { msg_signature, timestamp, nonce, xml } = req.params
console.log(xml)
const signature = getSignature(TOKEN, timestamp, nonce, xml.Encrypt)
const token = process.env.WX_TOKEN
const aesKey = process.env.WX_AES_KEY
const signature = getSignature(token, timestamp, nonce, xml.Encrypt)
if (msg_signature !== signature) {
throw new ZError(10, 'sign check failed')
}
const { message, id } = decrypt(AES_KEY, xml.Encrypt)
const { message, id } = decrypt(aesKey, xml.Encrypt)
console.log(id)
console.log(message)
res.send('success')

View File

@ -0,0 +1,53 @@
import { singleton } from 'decorators/singleton'
const WX_API_HOST = 'https://qyapi.weixin.qq.com'
@singleton
export class WechatWorkService {
private accessToken: string
private tokenExpire: number
private wxToken: string
private wxAesKey: string
private wxCorpId: string
private wxCorpSecret: string
constructor() {
this.wxToken = process.env.WX_TOKEN
this.wxAesKey = process.env.WX_AES_KEY
this.wxCorpId = process.env.WX_CORP_ID
this.wxCorpSecret = process.env.WX_CORP_SECRET
}
/**
* access_token
* https://developer.work.weixin.qq.com/resource/devtool
*/
public async refreshAccessToken() {
const url = `${WX_API_HOST}/cgi-bin/gettoken`
// use axios get url
let config = {
method: 'get',
maxBodyLength: Infinity,
url,
}
let response = await axios.request(config).then(response => {
return response.data
})
}
/**
*
* https://developer.work.weixin.qq.com/devtool/interface/alone?id=18615
* @param spNo
*/
public async fetchApprovalDetail(spNo: string) {
const url = `${WX_API_HOST}/cgi-bin/oa/getapprovaldetail`
}
/**
* media_id获取文件
* https://developer.work.weixin.qq.com/devtool/interface/alone?id=18615
* @param mediaId
*/
public async fetchFile(mediaId: string) {
const url = `${WX_API_HOST}/cgi-bin/media/get`
}
}