精华内容
下载资源
问答
  • 本课程主要讲解python语言的django框架的项目来实现对接微信公众号的常见接口, 此课程主要包括对接以下接口: 1)微信公众号的接口配置,对接项目 2)消息接收和推送 3)菜单项的创建 4)常见的加密算法md5,sha1,...
  • 《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。 效果体验 扫码“是雯子吖”公众号进行体验 配置自己的公众号后台进行体验 想要体验效果的小伙伴可以将微信...

    写在前面

    《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。

    效果体验

    扫码“是雯子吖”公众号进行体验

    是雯子吖

    配置自己的公众号后台进行体验

    想要体验效果的小伙伴可以将微信公众号后台的 开发-> 基本配置 -> 服务器配置 中的Token随意配置,服务器地址配置为 https://apit.toodo.fun/wechatMP/ + Token,如

    Token = hello  # 可随意设置,但是要保证与服务器地址最后一项相同
    服务器地址:https://apit.toodo.fun/wechatMP/hello
    消息加解密方式:明文模式或者兼容模式
    

    如果配置成功的话,新关注你公众号的用户将会收到“Hi~ 终于等到你”,并且收到消息后会由我服务器上的机器人自动回复。

    项目地址

    GitHub:https://github.com/MR5356/toodoWechat

    后台服务器搭建

    我们选择flask进行服务器后台开发,在这一步中,会与大家分享微信公众号与服务器对接流程。

    接收参数

    在微信公众号第一次与服务器进行对接时,将向填写的服务器URL发送一个GET请求,GET请求携带的参数如下:

    参数 描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串(仅第一次服务器验证时有此参数)

    代码片段

    @app.route('/')
    def main():
        signature = request.values.get('signature')
        timestamp = request.values.get('timestamp')
        nonce = request.values.get('nonce')
        echostr = request.values.get('echostr')
    

    signature校检

    当接收到参数后,我们需要确认这条消息是否来自微信服务器,即signature校检。
    校检流程如下:

    1. 将token、timestamp、nonce三个参数进行字典序排序
    2. 将排序后的三个参数拼接为一个字符串,然后进行sha1加密
    3. 将加密后的字符串与参数中的signature参数进行对比,如果相同则通过校检,否则则不通过校检

    代码片段

    def checkSignature(token, timestamp, nonce, signature):
        temp = [token, timestamp, nonce]
        temp.sort()
        res = hashlib.sha1("".join(temp).encode('utf8')).hexdigest()
        return True if res == signature else False
    

    微信公众号与服务器对接

    在微信公众号向服务器发送的第一次请求中包含echostr参数,在对接过程中仅需要返回这一参数即可。

    代码片段

    if echostr:
        return echostr
    

    本小节代码汇总

    from flask import Flask, request, abort
    import hashlib
    
    app = Flask(__name__)
    
    
    @app.before_request
    def checkSignature():
        signature = request.values.get('signature')
        timestamp = request.values.get('timestamp')
        nonce = request.values.get('nonce')
        echostr = request.values.get('echostr')  # 仅在验证服务器时使用次参数
        if not wmp.checkSignature(timestamp=timestamp, nonce=nonce, signature=signature):
            abort(404)
        if echostr:
            return echostr
    
    
    @app.route('/')
    def main():
        return "是雯子吖"
    
    
    if __name__ == '__main__':
        app.run()
    

    未完待续

    参考文档

    开发者文档-接入指南:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

    下面是我自己运营的微信小程序“但行趣事”和公众号“微电脑”,更多的技术文章以及视频我会放到小程序和公众号当中,有志同道合的小伙伴也可以在小程序(联系客服按钮)或者公众号(直接留言)当中联系我们

    但行趣事小程序
    微电脑公众号
    展开全文
  • 《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。 效果体验 扫码“是雯子吖”公众号进行体验 配置自己的公众号后台进行体验 想要体验效果的小伙伴可以将微信...

    写在前面

    《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。

    效果体验

    扫码“是雯子吖”公众号进行体验

    是雯子吖

    配置自己的公众号后台进行体验

    想要体验效果的小伙伴可以将微信公众号后台的 开发-> 基本配置 -> 服务器配置 中的Token随意配置,服务器地址配置为 https://apit.toodo.fun/wechatMP/ + Token,如

    Token = hello  # 可随意设置,但是要保证与服务器地址最后一项相同
    服务器地址:https://apit.toodo.fun/wechatMP/hello
    消息加解密方式:明文模式或者兼容模式
    

    如果配置成功的话,新关注你公众号的用户将会收到“Hi~ 终于等到你”,并且收到消息后会由我服务器上的机器人自动回复。

    项目地址

    GitHub:https://github.com/MR5356/toodoWechat

    回复消息

    当用户发送消息给公众号时,我们的服务器会收到一个POST请求,里面是XML格式的数据包,在上一篇文章中我们已经分享了如何接收消息,本篇文章我们来分享一下如何回复消息。

    回复消息公共内容

    所有的消息回复都应该是XML格式的数据包,里面必须包含以下内容

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>12345678</CreateTime>
    </xml>
    

    我们先生成字典格式的回复内容,然后再使用xmltodict将字典格式的转换为XML格式的数据包。

    def replyMsg(self, msg):
        return {
            'xml': {
                'ToUserName': msg.get('FromUserName'),
                'FromUserName': msg.get('ToUserName'),
                'CreateTime': int(time.time()),
            }
        }
    

    其中,ToUserName是接收到的消息中的FromUserName(用户id),同样FromUserName是接收到的消息中的ToUserName(公众号id),CreateTime是当前的时间戳。

    回复文本消息

    回复文本消息除公共部分外,还需要MsgType和回复的文本Content

    def replyText(self, msg, text):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'text'
        res['xml']['Content'] = text
        return res
    

    回复图片消息

    回复图片消息,除公共部分外,还需要提供MsgType和图片的MediaId

    def replyImage(self, msg, MediaId):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'image'
        res['xml']['Image'] = {'MediaId': MediaId}
        return res
    

    回复语音消息

    回复语音消息,除公共部分外,还需要提供MsgType和语音的MediaId

    def replyVoice(self, msg, MediaId):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'voice'
        res['xml']['Voice'] = {'MediaId': MediaId}
        return res
    

    回复视频消息

    回复视频消息,除公共部分外,还需要提供MsgType和视频的MediaId,可选参数为视频的标题Title和简介Description

    def replyVideo(self, msg, MediaId, title=None, desc=None):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'video'
        res['xml']['Video'] = {}  # {'MediaId': MediaId, 'Title': title, 'Description': desc}
        res['xml']['Video']['MediaId'] = MediaId
        if title: res['xml']['Video']['Title'] = title
        if desc: res['xml']['Video']['Description'] = desc
        return res
    

    回复音乐消息

    回复音乐消息,除公共部分外,还需要提供MsgType和音乐的封面ThumbMediaId,可选参数为音乐的标题Title,音乐的简介Description,音乐播放地址MusicURL和高清音乐播放链接HQMusicUrl

    def replyMusic(self, msg, pic, title=None, desc=None, url=None, hqUrl=None):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'music'
        res['xml']['Music'] = {'ThumbMediaId': pic}
        if title: res['xml']['Music']['Title'] = title
        if desc: res['xml']['Music']['Description'] = desc
        if url: res['xml']['Music']['MusicURL'] = url
        if hqUrl: res['xml']['Music']['HQMusicUrl'] = hqUrl
        return res
    

    回复图文消息

    回复图文消息,除公共部分外,还需要提供MsgType和图文数量ArticleCount,以及图文列表(因为被动回复消息只能回复一条消息,所以这里不考虑多图文情况)

    def replyArticles(self, msg, title, desc, pic, url):
        res = self.replyMsg(msg)
        res['xml']['MsgType'] = 'news'
        res['xml']['ArticleCount'] = 1
        res['xml']['Articles'] = {'item': {'Title': title, 'Description': desc, 'PicUrl': pic, 'Url': url}}
        return res
    

    本小节代码汇总

    完整代码可参考上文中的Github链接

    class WechatMP:
        def replyMsg(self, msg):
            return {
                'xml': {
                    'ToUserName': msg.get('FromUserName'),
                    'FromUserName': msg.get('ToUserName'),
                    'CreateTime': int(time.time()),
                }
            }
    
        def replyText(self, msg, text):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'text'
            res['xml']['Content'] = text
            return res
    
        def replyImage(self, msg, MediaId):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'image'
            res['xml']['Image'] = {'MediaId': MediaId}
            return res
    
        def replyVoice(self, msg, MediaId):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'voice'
            res['xml']['Voice'] = {'MediaId': MediaId}
            return res
    
        def replyVideo(self, msg, MediaId, title=None, desc=None):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'video'
            res['xml']['Video'] = {}  # {'MediaId': MediaId, 'Title': title, 'Description': desc}
            res['xml']['Video']['MediaId'] = MediaId
            if title: res['xml']['Video']['Title'] = title
            if desc: res['xml']['Video']['Description'] = desc
            return res
    
        def replyMusic(self, msg, pic, title=None, desc=None, url=None, hqUrl=None):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'music'
            res['xml']['Music'] = {'ThumbMediaId': pic}
            if title: res['xml']['Music']['Title'] = title
            if desc: res['xml']['Music']['Description'] = desc
            if url: res['xml']['Music']['MusicURL'] = url
            if hqUrl: res['xml']['Music']['HQMusicUrl'] = hqUrl
            return res
    
        def replyArticles(self, msg, title, desc, pic, url):
            res = self.replyMsg(msg)
            res['xml']['MsgType'] = 'news'
            res['xml']['ArticleCount'] = 1
            res['xml']['Articles'] = {'item': {'Title': title, 'Description': desc, 'PicUrl': pic, 'Url': url}}
            return res
    

    系列文章

    使用Python进行微信公众号开发(一)服务器对接:https://blog.csdn.net/m0_49475727/article/details/115236330
    使用Python进行微信公众号开发(二)接收消息:https://blog.csdn.net/m0_49475727/article/details/115261389

    参考文档

    开发者文档-被动回复用户消息:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html

    下面是我自己运营的微信小程序“但行趣事”和公众号“微电脑”,更多的技术文章以及视频我会放到小程序和公众号当中,有志同道合的小伙伴也可以在小程序(联系客服按钮)或者公众号(直接留言)当中联系我们

    但行趣事小程序
    微电脑公众号
    展开全文
  • 《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。 效果体验 扫码“是雯子吖”公众号进行体验 配置自己的公众号后台进行体验 想要体验效果的小伙伴可以将微信...

    写在前面

    《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。

    效果体验

    扫码“是雯子吖”公众号进行体验

    是雯子吖

    配置自己的公众号后台进行体验

    想要体验效果的小伙伴可以将微信公众号后台的 开发-> 基本配置 -> 服务器配置 中的Token随意配置,服务器地址配置为 https://apit.toodo.fun/wechatMP/ + Token,如

    Token = hello  # 可随意设置,但是要保证与服务器地址最后一项相同
    服务器地址:https://apit.toodo.fun/wechatMP/hello
    消息加解密方式:明文模式或者兼容模式
    

    如果配置成功的话,新关注你公众号的用户将会收到“Hi~ 终于等到你”,并且收到消息后会由我服务器上的机器人自动回复。

    项目地址

    GitHub:https://github.com/MR5356/toodoWechat

    接收消息

    微信用户向公众号发消息时,服务器会收到一个内容为XML数据的POST请求,服务器需要在5秒内做出回应,如果5秒内无法做出回应,可直接回复空串,否则微信将发起重试,总计三次。各类型的消息XML数据包结构如下:

    消息类型

    所有类型的消息都包含以下内容

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1348831860</CreateTime>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    ToUserName 开发者微信号
    FromUserName 发送方帐号(一个OpenID)
    CreateTime 消息创建时间 (整型)
    MsgId 消息id,64位整型

    文本消息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1348831860</CreateTime>
      <MsgType><![CDATA[text]]></MsgType>
      <Content><![CDATA[this is a test]]></Content>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 消息类型,文本为text
    Content 文本消息内容

    图片消息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1348831860</CreateTime>
      <MsgType><![CDATA[image]]></MsgType>
      <PicUrl><![CDATA[this is a url]]></PicUrl>
      <MediaId><![CDATA[media_id]]></MediaId>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 消息类型,图片为image
    PicUrl 图片链接(由系统生成)
    MediaId 图片消息媒体id,可以调用获取临时素材接口拉取数据。

    语音消息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1357290913</CreateTime>
      <MsgType><![CDATA[voice]]></MsgType>
      <MediaId><![CDATA[media_id]]></MediaId>
      <Format><![CDATA[Format]]></Format>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 语音为voice
    MediaId 语音消息媒体id,可以调用获取临时素材接口拉取数据。
    Format 语音格式,如amr,speex等
    Recognition 语音识别结果,需开启语音识别功能

    视频消息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1357290913</CreateTime>
      <MsgType><![CDATA[video]]></MsgType>
      <MediaId><![CDATA[media_id]]></MediaId>
      <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 视频为video
    MediaId 视频消息媒体id,可以调用获取临时素材接口拉取数据。
    ThumbMediaId 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。

    小视频消息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1357290913</CreateTime>
      <MsgType><![CDATA[shortvideo]]></MsgType>
      <MediaId><![CDATA[media_id]]></MediaId>
      <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 小视频为shortvideo
    MediaId 视频消息媒体id,可以调用获取临时素材接口拉取数据。
    ThumbMediaId 视频消息缩略图的媒体id,可以调用获取临时素材接口拉取数据。

    位置信息

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1351776360</CreateTime>
      <MsgType><![CDATA[location]]></MsgType>
      <Location_X>23.134521</Location_X>
      <Location_Y>113.358803</Location_Y>
      <Scale>20</Scale>
      <Label><![CDATA[位置信息]]></Label>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 消息类型,地理位置为location
    Location_X 地理位置纬度
    Location_Y 地理位置经度
    Scale 地图缩放大小
    Label 地理位置信息

    链接消息(个人微信公众号不用考虑)

    <xml>
      <ToUserName><![CDATA[toUser]]></ToUserName>
      <FromUserName><![CDATA[fromUser]]></FromUserName>
      <CreateTime>1351776360</CreateTime>
      <MsgType><![CDATA[link]]></MsgType>
      <Title><![CDATA[公众平台官网链接]]></Title>
      <Description><![CDATA[公众平台官网链接]]></Description>
      <Url><![CDATA[url]]></Url>
      <MsgId>1234567890123456</MsgId>
    </xml>
    
    参数 描述
    MsgType 消息类型,链接为link
    Title 消息标题
    Description 消息描述
    Url 消息链接

    代码片段

    因为微信发送给服务器的是XML数据包,我们需要对数据进行解析,在Python当中,我们可以使用xmltodict函数包将xml数据包转换为字典。

    msg = xmltodict.parse(request.data).get('xml')
    

    我们可以根据xml数据中的MsgType参数来判断消息的类型

    msgType = msg.get('MsgType')
    if msgType == 'text':
        print('这是文字消息')
    if msgType == 'image':
        print('这是图片消息')
    ......
    

    本小节完整代码

    from WechatMP import WechatMP
    import xmltodict
    
    app = Flask(__name__)
    Token = ''
    appId = ''
    secret = ''
    wmp = WechatMP(Token=Token, appId=appId, secret=secret)
    
    
    @app.before_request
    def checkSignature():
        signature = request.values.get('signature')
        timestamp = request.values.get('timestamp')
        nonce = request.values.get('nonce')
        echostr = request.values.get('echostr')  # 仅在验证服务器时使用次参数
        if not wmp.checkSignature(timestamp=timestamp, nonce=nonce, signature=signature):
            abort(404)
        if echostr:
            return echostr
    
    
    @app.route('/')
    def main():
        msg = xmltodict.parse(request.data).get('xml')
        msgType = msg.get('MsgType')
        res = wmp.replyText(msg, 'Hi~ 终于等到你啦')
        if msgType == 'text':
            res = wmp.replyText(msg, msg.get('Content'))
        if msgType == 'image':
            res = wmp.replyImage(msg, msg.get('MediaId'))
        return xmltodict.unparse(res)
    
    
    if __name__ == '__main__':
        app.run(port=8001)
    

    系列文章

    使用Python进行微信公众号开发(一)服务器对接:https://blog.csdn.net/m0_49475727/article/details/115236330

    参考文档

    开发者文档-接收普通消息:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html

    下面是我自己运营的微信小程序“但行趣事”和公众号“微电脑”,更多的技术文章以及视频我会放到小程序和公众号当中,有志同道合的小伙伴也可以在小程序(联系客服按钮)或者公众号(直接留言)当中联系我们

    但行趣事小程序
    微电脑公众号
    展开全文
  • 利用python开发微信公众号对接实现自动回复音乐,并下载音乐,是公众号更自动化。 本次采用新浪sae部署,新浪sae 1、新浪SAE 创建python应用 1)选择共享环境,使用多少扣费多少,不适用不扣费 2)代码管理方式SVN...

    利用python开发微信公众号,对接实现自动回复音乐,并下载音乐,是公众号更自动化。

    本次采用新浪sae部署,新浪sae
    1、新浪SAE 创建python应用
    1)选择共享环境,使用多少扣费多少,不适用不扣费
    2)代码管理方式SVN
    3)二级域名自行设置
    在这里插入图片描述
    2、上传自动回复python代码包
    链接: https://pan.baidu.com/s/1oJ-2kxniGdkuzo68NG-6Kw 提取码: izy4
    在这里插入图片描述
    3、设置和公众对接token为123456
    在这里插入图片描述

    4、修改用户关注后内容
    在这里插入图片描述

    5、创建数据库,导入数据库即可
    在这里插入图片描述
    6、公众号对接,填写token
    在这里插入图片描述
    6、用户关注和搜索音乐,下载音乐
    用户自行搜索,自动回复,没有的歌曲用户反馈,自动录入即可
    在这里插入图片描述

    展开全文
  • python全栈开发之django框架的实战案例:项目中对接微信公众号的常见接口 ...
  • 一站式解决新手开发微信公众号遇到的所有问题。为了防止我的文章被到处转载,贴一下我的公众号【智能制造社区】,欢迎大家关注。本篇文章首先实现与公众号的对接,实现简单的回复文字、图片内容。下一篇会对接腾讯的...
  • 原标题:Python使用微信公众号实现自动回复作者:睿江云计算Python作为一门热门的编程语言,已经被很多编程爱好者所使用,下面我们就看看它是怎么与公众号的对接,并且实现一些回复文字,图片内容。准备工作先到微信...
  • 一站式解决新手开发微信公众号遇到的所有问题。为了防止我的文章被到处转载,贴一下我的公众号【智能制造社区】,欢迎大家关注。本篇文章首先实现与公众号的对接,实现简单的回复文字、图片内容。下一篇会对接腾讯的...
  • python开发微信公众号

    千次阅读 2019-05-30 20:13:38
    注册个微信公众号, 选择订阅号 注册完成后你会到首页 我们进入到测试平台 写python代码 # coding:utf-8 from flask import Flask, request, abort, render_template import hashlib import xmltodict...
  • 本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样。真的无语了。只好自己总结一下...
  • 本篇博客使用Django框架,搭配uWsgi和Nginx,结合着Postman API调试工具,实现了微信公众号用户消息自动回复的功能,并成功部署到腾讯云服务器上。
  • 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。 3. 公众平台 微信公众平...
  • # -*- coding: utf-8 -*- import requests #首先获取access_token ...#获取微信access_token def get_token(): payload_access_token={ 'grant_type':'client_credential', 'appid':'wx74868...
  • 配置环境:腾讯主机 Ubuntu Server 16.04.1 LTS 64位需要用到的软件或者包:nginx,tornado框架 xshell6(非必需)微信公众号测试平台:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login如果使用虚拟...
  • Python开发微信公众号

    2020-05-21 22:42:19
    目录一、微信账号类型2、公众号 一、微信账号类型 2、公众号 公众号类型 类型 功能 适用人群 订阅号 为媒体和个人提供一种新的信息传播方式,主要功能是在微信侧给用户传达资讯;(功能类似报纸杂志,...
  • 微信公众号开发中,使用api都要附加access_token内容。因此,首先需要获取access_token。如下: #获取微信access_token def get_token(): payload_access_token={ 'grant_type':'client_credential', '...
  • 今天把之前开发的公众号代码从新浪云服务器转移到阿里云服务器了,期间在配置微信公众号的url时遇到一些问题,耽误了一些时间,下面简要介绍一下。 之前在新浪云服务器,按照官方提供的一些开发配置文档,很轻松的...
  • 很多的微信公众号都提供了质量比较高的文章阅读,对于自己喜欢的微信公众号,所以想做个微信公众号爬虫,爬取相关公众号的所有文章。抓取公众号的所有的文章,需要获取两个比较重要的参数。一个是微信公众号的唯一ID...
  • 说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! ... 一丶叙述 开发说明 Python代码实现(以Flask框架为例) ... 客户端---->微信服务器---->nginx服务器---->开发者服务器 ...
  • 1、申请一个公众号(这里省略) 得到一个这样的配置 2、代码编写: // 定义token秘钥常量 define("TOKEN", "weixin_wechat"); // 实例化微信对象 $wechatObj = new wechatCallbackapiTest(); // 调用验证方法...
  • 最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作。这是一个快递系统,主要功能有用户管理、寄收件地址管理、用户下单,订单管理,订单查询及一些宣传页面等。本文主要细数下开发过程中遇到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,573
精华内容 1,029
关键字:

python对接微信公众号

python 订阅