企业微信自定义应用 企业可信IP配置 企业可信ip怎么设置

简介: 企业微信自定义应用 企业可信IP配置 企业可信ip怎么设置

现在创建应用想要使用需要设置企业可信IP,而配置企业可信IP需要先配置 设置可信域名 或 设置接收消息服务器URL,域名需要花钱而且配置麻烦,这里选择 设置接收消息服务器URL。

不设置就报这个错误:

真麻烦呀!!!

{u'errcode': 60020, u'errmsg': u'not allow to access from your ip, hint: [1692000515331], from ip: xxx.xxx.xxx.xx, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}

这里其实是一个类似防火墙的功能,只要在里面配置可以访问过来的 IP 就可以了

配置条件:

* 找一台有公网的linux服务器 没有可以选择内网穿透软件  都没有我也没办法

* 安装python3  百度一下

创建自定义应用

登录网页版 >应用管理>创建应用>进入应用>最下面有个企业可信IP>选择设置接收消息服务器URL

 

脚本里的这段代码配置一下

点击一下这里获取个随机值Token 和 EncodingAESKey 粘贴进去就行了,注意: 不要关闭网页一会还要用。

企业信息的ID在我的企业可以找到

这里提示下:下面改 2.py 文件时,改的时候只要改下面文件里的这个部分就好了

1. qy_api = [
2.     WXBizMsgCrypt("XXXXXXX", "XXXXXXX", "XXXXXXX"), 
3. ] #对应接受消息回调模式中的token,EncodingAESKey 和 企业信息中的企业id

引入WXBizMsgCrypt模块步骤

将这个文件放在和脚本同一个目录即可

1. # 下载项目
2. wget https://github.com/sbzhu/weworkapi_python/archive/refs/heads/master.zip
3. 
4. # 解压
5. unzip master.zip
6. 
7. # 改名
8. mv weworkapi_python-master weworkapi_python

⚠️:引入模块上面这里切记要修改模块名为 weworkapi_python ,否则无法使用

随便起个名vim到一个文件即可 我这里叫2.py   这里改的时候只要改上面框出的企业的信息即可

1. [root@apphost dba]# cat 2.py 
2. #-*- encoding:utf-8 -*-
3. from flask import abort, request
4. from flask import Flask
5. from xml.dom.minidom import parseString
6. import _thread
7. import time
8. import os
9. import sys
10. sys.path.append("weworkapi_python/callback")  # 正确的模块导入路径
11. from WXBizMsgCrypt3 import WXBizMsgCrypt   # https://github.com/sbzhu/weworkapi_python 项目地址
12. app = Flask(__name__)
13. 
14. # 对应步骤4中接受消息回调模式中的URL,如域名是'www.example.com' 那么在步骤4中填入的url就为"http://www.example.com/hook_path"
15. @app.route('/hook_path', methods=['GET','POST']) 
16. def douban():
17. if request.method == 'GET':
18.         echo_str = signature(request, 0)
19. return(echo_str)
20. elif request.method == 'POST':
21.         echo_str = signature2(request, 0)
22. return(echo_str)
23. 
24. qy_api = [
25.     WXBizMsgCrypt("XXXXXXX", "XXXXXXX", "XXXXXXX"),
26. ] #对应接受消息回调模式中的token,EncodingAESKey 和 企业信息中的企业id   # 只改这里即可
27. 
28. # 开启消息接受模式时验证接口连通性
29. def signature(request, i): 
30.     msg_signature = request.args.get('msg_signature', '')
31.     timestamp = request.args.get('timestamp', '')
32.     nonce = request.args.get('nonce', '')
33.     echo_str = request.args.get('echostr', '')
34.     ret,sEchoStr=qy_api[i].VerifyURL(msg_signature, timestamp,nonce,echo_str)
35. if (ret != 0):
36. print("ERR: VerifyURL ret: " + str(ret))
37. return("failed")
38. else:
39. return(sEchoStr)
40. 
41. # 实际接受消息
42. def signature2(request, i):
43.     msg_signature = request.args.get('msg_signature', '')
44.     timestamp = request.args.get('timestamp', '')
45.     nonce = request.args.get('nonce', '')
46.     data = request.data.decode('utf-8')
47.     ret,sMsg=qy_api[i].DecryptMsg(data,msg_signature, timestamp,nonce)
48. if (ret != 0):
49. print("ERR: DecryptMsg ret: " + str(ret))
50. return("failed")
51. else:
52. with open ("/var/log/qywx.log", 'a+') as f: # 消息接收日志
53.             doc = parseString(sMsg)
54.             collection = doc.documentElement
55.             name_xml = collection.getElementsByTagName("FromUserName")
56.             msg_xml = collection.getElementsByTagName("Content")
57.             type_xml = collection.getElementsByTagName("MsgType")
58.             pic_xml = collection.getElementsByTagName("PicUrl")
59.             msg = ""
60.             name = ""
61.             msg_type = type_xml[0].childNodes[0].data
62. if msg_type == "text": #文本消息
63.                 name = name_xml[0].childNodes[0].data        #发送者id
64.                 msg = msg_xml[0].childNodes[0].data          #发送的消息内容
65.                 f.write(time.strftime('[%Y-%m-%d %H:%M:%S]') + "[ch%d] %s:%s\n" % (i, name, msg))
66.                 _thread.start_new_thread(os.system, ("python3 command.py '%s' '%s' '%d' '%d'" % (name, msg, i, 0), )) #此处将消息进行外部业务处理
67. 
68. elif msg_type == "image": #图片消息
69.                 name = name_xml[0].childNodes[0].data
70.                 pic_url = pic_xml[0].childNodes[0].data
71.                 f.write(time.strftime('[%Y-%m-%d %H:%M:%S]') + "[ch%d] %s:图片消息\n" % (i, name))
72.                 _thread.start_new_thread(os.system, ("python3 command.py '%s' '%s' '%d' '%d'" % (name, pic_url, i, 1), ))  #此处将消息进行外部业务处理
73. 
74.             f.close()
75. 
76. return("ok")
77. 
78. if __name__=='__main__':
79.     app.run("0.0.0.0", 888)  #本地监听端口,可自定义

运行项目

python3 2.py

这里运行的时候可能会缺少模块,缺少什么模块会提示使用下面的命令安装即可,安装不上百度直接贴百度,有些包名不一样

pip3 install 模块名

这样就运行起来了

运行时注意引入的库是否引入正确

脚本里的端口注意不要和现有的端口冲突了

防火墙或云主机网络限制是否开放了888端口

解决以上问题后访问你的url即可

1. # 路径要写上
2. http://你的IP地址:888/hook_path

这样就说明好了

然后在API接收消息的网页上输入这个路径点击保存即可成功

注意:

确保网页上的Token 和 EncodingAESKey 和脚本里的一致

即:上面提示不要关的网页

点击保存成功后就可以写进去 IP 了

这样就可以写可信IP了 铁汁

把你的IP写进去就不报错了

用完把脚本关了就行,铁汁们,点个赞咋样


相关文章
|
2月前
|
iOS开发 开发者
iOS微信分享配置universal links步骤
iOS微信分享配置universal links步骤
1316 58
|
25天前
|
存储 小程序 安全
微信的开发管理都需要配置什么?
【10月更文挑战第17天】微信的开发管理都需要配置什么?
30 0
|
3月前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
123 0
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
3月前
|
小程序
uni-app——微信小程序设置全局分享
uni-app——微信小程序设置全局分享
184 0
|
3月前
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
4月前
|
XML 关系型数据库 MySQL
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
|
30天前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
449 7
|
29天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
498 1
|
1月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
110 7
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
78 6