微信企业号开发(第一篇)

微信企业号开发--通知系统(第一篇)

如果只是需要一个简易的通知系统,那么可以使用 Server酱 /* 配置方便 也比较快捷 */ 代替这些,下面的内容都是自己重复造轮子学习的过程 。

  • 开发起因: 在开发生活中很多需要用到通知到个人的事情,例如某一api接口出现问题、某某大佬更新了博客前去膜拜等等。那么在这些情况下身为一个python 的初学者(学生),就想着怎么去利用手头的 微信/QQ 来给自己实时的通知功能。//重复造轮子2333
  • 开发最终实现目的: 能够在web服务宕机、每日推送服务器运行信息、监控某商品价格等想要及时通知到个人的时候最快速度通知到个人
  • 开发利用到的语言及模块:python3.x + flask
  • 开发利用的平台:微信,企业微信

首先我们需要注册企业微信(非企业公众号)

大家可以直接通过 https://work.weixin.qq.com/ 进行注册(具体过程等有时间)

在创建好企业微信后我们需要创建一个自建应用

应用与小程序 - 应用 - 自建 - 创建应用

添加好后点击应用进入 获取你的agentid 以及secret值

打开 我的企业 --企业信息 记录下企业ID

下面的是很简单的一个给自己发送信息的一个例子

// 下面的代码写于18年09月 初学python时候一点一点写的,有些重复的代码可以优化(包括命名),原本想重新写下,想了下还是把最初的代码放上来。

// 初学时候写的代码,写的不太好,大佬们轻点吐槽。。

#encoding=utf-8
import json
import time
import requests

class WeiXinsend():
    def __init__(self):
        self.expireTime=7200                #  token 过期时间
        self.corpid='***************'       #  企业ID
        self.agentid = 1000002              # "企业应用" 第一行 agentid
        self.corpsecret = '*********'       # "企业应用" 第二行 secret
        self.touser = "********"            # "通讯录"->"成员详情" 的帐号 (就是你自己的账号名)
        self.toparty = "1"                  # "通讯录" 左侧部门最右边的三个点里的ID
        self.db_save = './token.json'       #  保存token值的文件
        self.GETaccess_token()

    def GETaccess_token(self):
        try:
            with open(self.db_save, 'r') as load_f:
                load_dict = json.load(load_f)
                if load_dict['req_time'] >= (int(time.time())):
                    print("[+] token在有效期内")
                    self.access_token = load_dict['access_token']
                    self.access_token_time = load_dict['req_time']
                    return (load_dict['access_token'])  # 判断tocken没有过期
                else:
                    print("[-] token已过期")
        except:
            a = 1  # 没有token文件或者token过期
        tokenurl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + self.corpid + "&corpsecret=" + self.corpsecret
        backtokenmsg = requests.get(tokenurl).json()
        # print(backtokenmsg)
        if backtokenmsg['errcode'] == 0:
            self.access_token = backtokenmsg['access_token']
            self.access_token_time = int(time.time()) + self.expireTime - 30  # token 时间+过期时间-30秒保证不会卡点
            savetoken = {
                'access_token': self.access_token,
                'req_time': self.access_token_time
            }
            with open(self.db_save, "w") as f:
                json.dump(savetoken, f)
        print("[+] token更新成功")
        return self.access_token

    def Checkaccess_token(self, Getnew=None):
        '''
        用来检测access_token 是否过期 如果没有过期则直接返回access_tocken的值
        :Getnew:   如果不为空则重新获取一次token
        :return:
        '''
        if Getnew == None:
            if self.access_token_time >= (int(time.time())):
                # 判断是否在有效期内
                return self.access_token
        tokenurl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + self.corpid + "&corpsecret=" + self.corpsecret
        backtokenmsg = requests.get(tokenurl).json()
        if backtokenmsg['errcode'] == 0:
            self.access_token = backtokenmsg['access_token']
            self.access_token_time = int(time.time()) + self.expireTime - 30
            savetoken = {
                'access_token': self.access_token,
                'req_time': self.access_token_time
            }
            with open(self.db_save, "w") as f:
                json.dump(savetoken, f)
        print("[+] token更新成功")
        return self.access_token

    def API_sendMsg(self, content):
        # 应用类send 文本信息
        msg = {"touser": self.touser, "toparty": self.toparty, "msgtype": "text", "agentid": self.agentid,
               "text": {"content": content}}
        msg = (bytes(json.dumps(msg), 'utf-8'))
        url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.Checkaccess_token()
        backmsg = requests.post(url, msg).json()
        if backmsg['errcode'] == 0:
            print("[+] 信息发送成功")
            return 0
        elif backmsg['errcode'] == 42001:
            url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.Checkaccess_token(Getnew=1)
            backmsg = requests.post(url, msg).json()
            if backmsg['errcode'] == 0:
                print("[+] 信息发送成功")
                return 0
        else:
            print("[-] 信息发送失败")
            print(backmsg)
        return 101

    def API_sendCardMsg(self, title="1", content="Nothings", url="https://www.sgdream.cn", btntxt="查看"):
        now_time = ((time.strftime('%Y-%m-%d-%H-%M', time.localtime(time.time()))).split("-"))
        now_time = """<div class=\"gray\">{now_time0}年{now_time1}月{now_time2}日 {now_time3}:{now_time4}</div><div></div>""".format(
            now_time0=now_time[0], now_time1=now_time[1], now_time2=now_time[2], now_time3=now_time[3],
            now_time4=now_time[4])
        msg = {
            "touser": self.touser,
            "toparty": self.toparty,
            "msgtype": "textcard",
            "agentid": self.agentid,
            "textcard": {
                "title": title,
                "description": now_time + "<div class=\"normal\">" + content + "</div>",
                "url": url,
                "btntxt": "更多"
            }
        }
        msg = (bytes(json.dumps(msg), 'utf-8'))
        url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.Checkaccess_token()
        backmsg = requests.post(url, msg).json()
        if backmsg['errcode'] == 0:
            print("[+] 信息发送成功")
            return 0
        elif backmsg['errcode'] == 42001:
            url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.Checkaccess_token(Getnew=1)
            backmsg = requests.post(url, msg).json()
            if backmsg['errcode'] == 0:
                print("[+] 信息发送成功")
                return 0
        else:
            print("[-] 信息发送失败")
            print(backmsg)
        return 101

if __name__ == '__main__':
    WeiXinsend().API_sendCardMsg("测试", "test")

在自己的 微信上接受到的信息效果:


题外话 : 膜 Angel_Kitty 大佬,虽然因为一些个人原因(水平比较低)不能做到博客 高产量高质量。但是也会努力加油的哈

原文地址:https://www.cnblogs.com/sgdream/p/10263075.html

时间: 2024-12-30 03:13:44

微信企业号开发(第一篇)的相关文章

Force.com微信企业号开发系列(一) - 启用二次验证

微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体验号: 企业号顾名思义就是企业来申请的号,申请时就像申请服务号一样,需要提供各种组织证明文件,对广大开发者来说很难操作,好在腾讯公司也像服务号一样开通了体验号申请,留意企业体验号的有效期间非常短,只有90天(服务号测试账号有1年有效期),且如果企业体验号长期不使用还会收到腾讯公司的提前失效提醒邮件.

微信企业号开发[三]——调用微信接口

微信的所有主动调用都需要带上AccessToken,以下我们将讲解如何获取AccessToken 获取AccessToken AccessToken是企业号的全局唯一票据,调用接口时需携带AccessToken. AccessToken需要用CorpID和Secret来换取,不同的Secret会返回不同的AccessToken.正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果.access_token至少保留512字节的存储空间. 请求说明 Https请求方式:

微信企业号开发[一]——创建应用

一.注册企业号 略 二.登录企业号 略 三.创建应用 1.点击新建应用 2.选择应用类型 主页型应用个数有上限,目前是最多创建5个,所以建议尽量选择使用消息型应用.本文以主页型应用作例子. 3.填写应用基本资料,创建应用.URL可以先直接写需要访问的页面,后续文章中将对填写的URL进行改造 4.成功创建后在微信中打开企业号即可看见已创建的应用 [目录] [下一篇]微信企业号开发[二]——获取用户信息 微信企业号开发[一]--创建应用

[转载]微信企业号开发如何建立连接

连接将使你的企业号更具价值,你可以使用以下三种方式,连接你的企业号及企业应用: 1.企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源.或给成员发送消息等,以下称主动调用模式. 2.企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式. 3.用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式. 通过这三种连接方式的结合,你可以在企业号中建立功能强大的移动轻应用,并依托微信数亿活跃用户,

.net之微信企业号开发(一) 所使用的环境与工具以及准备工作

前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立一套新的网点销售管理系统,将原有的PC中的一些东西,移植到手机终端来.于是我接受了这个任务,除了给他们搭建新系统外,也慢慢的接触到了移动互联应用,开始了我的移动互联征程. 由于WEB应用本身的局限性,同时自身也不具备多个平台开发APP的精力和实力.我选择了微信的企业号开发.对于微信这样一个普及很广的

微信企业号开发之回调模式的接口开发

一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信的信息,转发到用户提供的一个回调接口上,该接口解析用户发送过来的信息,解析后进行相应,而且回调模式中,可以调用的东西不少,扫码,图片,视频,地理位置信息等. 在应用的模式下,选择回调模式,之后,需要设置3个参数(1.回调接口URL:2.token:3.ASESKey),URL就是提供的回调接口,微信

微信企业号开发之 企业号人员身份认证与开发

前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不是显得多余么? 于是,需要考虑的是,如何获取微信企业号中用户的身份,以及将用户身份与自有系统进行关联. 一.建立企业应用并配置可信域名 在微信的管理界面里面,建立一个企业应用.建立的过程很简单,但是这里需要注意的是,建立完以后,一定要配置可信域名!!!!并且如果你不是使用的标准端口,一定也要把端口配

.net之微信企业号开发(二) 企业号人员身份认证与开发

前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不是显得多余么? 于是,需要考虑的是,如何获取微信企业号中用户的身份,以及将用户身份与自有系统进行关联. 一.建立企业应用并配置可信域名 在微信的管理界面里面,建立一个企业应用.建立的过程很简单,但是这里需要注意的是,建立完以后,一定要配置可信域名!!!!并且如果你不是使用的标准端口,一定也要把端口配

微信企业号开发:微信考勤百度地图定位

之前在微信企业号开发:微信考勤中使用了百度地图的定位组件,但发现在部分手机上会出现定位失败的提示,于是有研究了一下百度地图.原来使用的Web组件百度不打算更新了,也是重新查了一下百度地图的其他API,还有一个JavaScript API大众版,于是试了试,没想到竟然解决了. 核心代码很简单: <div id="allmap"></div> <script type="text/javascript" src="http://a