Odoo与企业微信对接(Odoo18对接企业微信)
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

65 lines
2.9KB

  1. # -*- coding: utf-8 -*-
  2. """
  3. @Time : 2022/12/22 08:44
  4. @Author : Jason Zou
  5. @Email : zou.jason@qq.com
  6. """
  7. from odoo import models, fields, exceptions
  8. import os
  9. import json
  10. import logging
  11. import requests
  12. _logger = logging.getLogger(__name__)
  13. os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
  14. headers = {'content-type': 'application/json'}
  15. class EwiWechatConfig(models.Model):
  16. _name = 'ewi.wechat.config'
  17. _description = '接口认证信息'
  18. # 定义接口基本信息
  19. name = fields.Char(string='Auth接口名称', default='获取企业微信接口调用token', help='API名称')
  20. corp_id = fields.Char(string='企业ID',
  21. default='ww5a789309ca91ec7e',
  22. help='路径:我的企业-企业信息-企业ID')
  23. # 定义“审批”应用对接信息
  24. sp_AgentId = fields.Char(string='审批AgentId',
  25. default='3010040',
  26. help='路径:审批-AgentId')
  27. sp_Secret = fields.Char(string='审批Secret',
  28. default='ub3ELV5X9d1JGkwmC9If_qr0szG78ogYBnGKZnCQPEg',
  29. help='路径:审批-Secret-查看')
  30. sp_URL = fields.Char(string='审批URL',
  31. default='http://bpm-test.dingyang.com:8069/corp_handler',
  32. help='路径:审批-接收消息服务器配置-URL')
  33. sp_access_token = fields.Char(string='审批Token',
  34. default='TKkL0wVvklvIXD',
  35. help='路径:审批-接收消息服务器配置-Token')
  36. sp_EncodingAESKey = fields.Char(string='审批EncodingAESKey',
  37. default='vzpWA1cL9D8vPwgFOqTjFaysLhNbV36kWcXODL6knxf',
  38. help='路径:审批-接收消息服务器配置-EncodingAESKey')
  39. def gen_approval_access_token(self):
  40. """授权信息,获取企微“审批”应用Access Token"""
  41. access_obj = self.env['ewi.wechat.config']
  42. access_record = access_obj.search([('name', '=', '获取企业微信接口调用token')])
  43. corp_id = access_record.corp_id
  44. approval_secret = access_record.approval_secret
  45. token_url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corp_id}&corpsecret={approval_secret}"
  46. try:
  47. ret = requests.get(token_url, headers=headers)
  48. ret.raise_for_status()
  49. result = ret.json()
  50. if result.get('errcode') == 0:
  51. access_token = result.get('access_token')
  52. return access_token
  53. else:
  54. _logger.error(f"获取企微“审批”应用Access Token失败: {result.get('errmsg')}")
  55. return None
  56. except requests.RequestException as e:
  57. _logger.error(f"请求获取企微“审批”应用Access Token时出错: {str(e)}")
  58. return None
上海开阖软件有限公司 沪ICP备12045867号-1