精华内容
下载资源
问答
  • 微信公众号教程

    2018-01-17 15:51:28
    微信公众号操作教程,很详细,适合新手起步。附带系统temp文件清理工具,不用可以删除。没影响
  • 用博文来说,不便理解,直接上教学视频!视频地址:微信公众号教程-注册发布文章

    用博文来说,不便理解,直接上教学视频!

    视频地址:微信公众号教程-注册发布文章

    展开全文
  • 1.首先需要解释下什么是微信公众号微信公众号分为:[订阅号] 和 [服务号] 订阅号和服务号的具体区别转至微信公众号如果你只是申请微信公众号,自己写文章发表个人内容或者说想成为一个自媒体运营人员,一般都是...

    1.首先需要解释下什么是微信公众号?

    微信公众号分为:[订阅号] 和 [服务号]
    订阅号和服务号的具体区别转至微信公众号公众平台服务号、订阅号、企业号的相关说明


    如果你只是申请微信公众号,自己写文章发表个人内容或者说想成为一个自媒体运营人员,一般都是申请的[订阅号],申请入口:https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN

    申请只是第一步,如果说申请成功了,还需要了解公众号后台的使用,这里是我在网上找到的一个很全的教程:绝密丨史上最全微信公众号运营基础攻略

    待更新……

    ——2017.10.24

    展开全文
  • 在本篇教程中,你将学会使用华为云弹性云服务器(以下简称ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户。整个处理流程...

    1. 概述:

    在本篇教程中,你将学会使用华为云弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户。整个处理流程如下图所示:

    image.png

    您需要了解的背景知识有: CentOS(Linux)操作系统、PHP语言、Web.py框架、HTTP/XML协议。

    1.1 准备事项

    申请微信公众号

    微信公众号申请链接:https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN

    image.png

    考虑到申请便利性,本教程中使用订阅号“云图说”为例说明。

    购买华为弹性云服务

    华为弹性云服务购买链接:https://console.huaweicloud.com/ecm/?region=cn-east-2#/ecs/createVm

    如果没有华为云账号,需先注册华为云账号并完成实名认证。

     

    本教程中,使用公共镜像CentOS 7.4

    image.png

    建议同时购买弹性IP,后面需要再微信公众号上配置服务地址需要公网IP。

    image.png

    2. 操作步骤:

    2.1 基础软件安装

    本教程中使用Python+Web.py组合完成微信公众号开发,需要安装如下软件:

    升级默认Python版本

    CentOS 7.4自带Python版本比较老,建议升级到Python3。

    1、  查看Python版本,使用命令:

    python --version

    image.png

    2、  下载Python安装包,这里以Python 3.6.0版本为例,使用命令:

    wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz

    image.png

    3、  解压安装包,使用命令:

    tar xvf Python-3.6.0a1.tar.xz

    image.png

    4、  执行命令:

     ./configure

    执行成功出现类似如下提示:

    image.png

    如果出现类似“configure: error: no acceptable C compiler found in $PATH”提示,是因为未安装合适的编译器。

    image.png

    解决方法:安装/升级gcc及其他依赖的包,使用命令:

    sudo yum install gcc-c++

    并在随后提示安装包是否OK是,输入y并回车。出现类似如下提示说明依赖的包安装成功:

    image.png

    再重新执行./configure 命令即可。

    5、  执行命令:

     make && make install

    执行成功,提示pip错误,原因是我的系统中少了openssl-devel包,可以先忽略。

    image.png

    6、  查看python3版本,使用命令:

    python3 --version

    image.png

    7、  再使用命令:

      python3

    出现类似如下提示,则说明python3安装成功。

    image.png

    升级默认pip版本

    pip通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。Python3安装成功后自带pip3,但版本比较老,建议升级到pip最新版本。同时前面安装python3提示“Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS”错误,导致pip未成功安装。

    1、先安装openssl-devel包,使用命令:

    yum install openssl-devel -y

    image.png

    2、重新执行命令:

    make && make install

    出现如下提示说明安装pip成功:

    image.png

    3、升级pip3,使用命令:

    pip3 install --upgrade pip

    出现如下提示说明升级pip到最新版本了:

    image.png

    安装Web.py框架

    pip3 install web.py==0.40.dev0

    image.png

    安装WinSCP

    通常情况下,我们在本地Windows操作系统上编辑代码,完成后再上传至弹性云服务器上(CentOS Linux系统)。WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端, 同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。

    WinSCP安装链接:https://winscp.net/eng/docs/lang:chs

    2.2 上传代码

    1、新建main.py文件,拷贝如下代码:

    这里为和微信公众技术平台教程保持一致,也使用Web.py框架。Web.py官方教程地址:http://webpy.org/,使用如下命令安装web.py:

    # -*- coding: utf-8 -*-
    # filename: main.py
    import web
    from handle import Handle
     
    urls = (
        '/wx', 'Handle',
    )
     
    if __name__ == '__main__':
        app = web.application(urls, globals())
        app.run()

    2、新建handle.py文件,拷贝如下代码:

    # -*- coding: utf-8 -*-
    # filename: handle.py
     
    import hashlib
    import web
    import receive
    import time
    import os
     
    class Handle(object):
     
        def __init__(self):
            self.app_root = os.path.dirname(__file__)
            self.templates_root = os.path.join(self.app_root, 'templates')
            self.render = web.template.render(self.templates_root)
            
        def GET(self):
            try:
                data = web.input()
                if len(data) == 0:
                    return "hello, this is handle view"
                signature = data.signature
                timestamp = data.timestamp
                nonce = data.nonce
                echostr = data.echostr
                token = "此处内容与公众号基本配置里Token字段取值保持一致"
     
                list = [token, timestamp, nonce]
                list.sort()
                s = list[0] + list[1] + list[2]
                hashcode = hashlib.sha1(s.encode('utf-8')).hexdigest()
                print( "handle/GET func: hashcode, signature: ", hashcode, signature)
                if hashcode == signature:
                    return echostr
                else:
                    return echostr
            except (Exception) as Argument:
                return Argument
     
        def POST(self):
            try:
                webData = web.data()
                print("Handle Post webdata is:\n", webData)
                #打印消息体日志
                recMsg = receive.parse_xml(webData)
                
                if isinstance(recMsg, receive.Msg) and recMsg.MsgType == 'text':
                    toUser = recMsg.FromUserName
                    fromUser = recMsg.ToUserName
                    content = "欢迎关注云图说!" + str(recMsg.Content)
                    print('Reply message info:\n')
                    print('toUser =', toUser)
                    print('fromUser = ', fromUser)
                    print('content = ', content)
                    return self.render.reply_text(toUser, fromUser, int(time.time()), content)
                else:
                    print("不支持的消息类型:",recMsg.MsgType)
                    return "success"
            except (Exception) as Argment:
                return Argment

    3、新建receive.py文件,拷贝如下代码:

    # -*- coding: utf-8 -*-
    # filename: receive.py
    import xml.etree.ElementTree as ET
     
    def parse_xml(web_data):
        if len(web_data) == 0:
            return None
        xmlData = ET.fromstring(web_data)
        msg_type = xmlData.find('MsgType').text
        if msg_type == 'text':
            return TextMsg(xmlData)
        elif msg_type == 'image':
            return ImageMsg(xmlData)
        elif msg_type == 'location':
            return LocationMsg(xmlData)
        elif msg_type == 'event':
            return EventMsg(xmlData)
                  
    class Event(object):
        def __init__(self, xmlData):
            self.ToUserName = xmlData.find('ToUserName').text
            self.FromUserName = xmlData.find('FromUserName').text
            self.CreateTime = xmlData.find('CreateTime').text
            self.MsgType = xmlData.find('MsgType').text
            self.Eventkey = xmlData.find('EventKey').text
     
    class Msg(object):
        def __init__(self, xmlData):
            self.ToUserName = xmlData.find('ToUserName').text
            self.FromUserName = xmlData.find('FromUserName').text
            self.CreateTime = xmlData.find('CreateTime').text
            self.MsgType = xmlData.find('MsgType').text
            self.MsgId = xmlData.find('MsgId').text
            
    class TextMsg(Msg):
        def __init__(self, xmlData):
            Msg.__init__(self, xmlData)
            self.Content = xmlData.find('Content').text
            
    class ImageMsg(Msg):
        def __init__(self, xmlData):
            Msg.__init__(self, xmlData)
            self.PicUrl = xmlData.find('PicUrl').text
            self.MediaId = xmlData.find('MediaId').text
     
    class LocationMsg(Msg):
        def __init__(self, xmlData):
            Msg.__init__(self, xmlData)
            self.Location_X = xmlData.find('Location_X').text
            self.Location_Y = xmlData.find('Location_Y').text
     
    class EventMsg(Msg):
        def __init__(self, xmlData):
            Event.__init__(self, xmlData)
            self.Event = xmlData.find('Event').text

    4、新建templates文件夹,在文件夹下新建reply_text.xml文件,拷贝如下代码:

    $def with (toUser,fromUser,createTime,content)
    <xml>
    <ToUserName><![CDATA[$toUser]]></ToUserName>
    <FromUserName><![CDATA[$fromUser]]></FromUserName>
    <CreateTime>$createTime</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[$content]]></Content>
    </xml>

    5、最终本地代码文件形成如下:

    image.png

    通过WinSCP工具将上述文件与目录上传至弹性云服务指定目录下:

    image.png

    2.3 启动服务

    使用如下命令启动服务:

    python3 main.py 80

    未报错,则说明启动成功,参考如下:

    image.png

    2.4 启用开发者模式

    1、公众平台官网登录之后,找到“开发”——>“基本配置”菜单栏,点击“修改配置”。

    image.png

    2、填写URL与Token取值,EncodingAESKey可以随机生成,加解密方式简单起见使用“明文模式”,点击“提交”。参考如下:

    image.png

    3、在弹出的提示框中,点击“确定”。

    image.png

    4、验证token成功,点击启用。

    image.png

    备注:如果token验证失败,请检查Token取值配置与handle.py中GET消息处理代码。

    2.5 验证

    使用微信关注公众号,任意发送一条文本消息,看是否能够收到回复。出现如下回复则表明系统处理正常。

    image.png

    来源:华为云开发者中心 

    展开全文
  • nodejs微信公众号教程

    2019-06-13 11:51:11
    教程 登录微信公众平台 开发 基本配置 服务器配置 主要是taken和服务器地址的配置 服务器端代码 var express = require('express'); var crypto = require('crypto'); var myconfig = { weixin: { taken: '...

    教程

    登录微信公众平台 开发 基本配置

    服务器配置 主要是taken和服务器地址的配置

    服务器端代码

        var express = require('express');
        var crypto = require('crypto');
        
        var myconfig = {
          weixin: {
        taken: 'abc123'
          }
        };
        
        
        var app = express();
        
        app.get('/', function (req, res) {
          var signature = req.query.signature,
          timestamp = req.query.timestamp,
          noce = req.query.noce,
          echosrt = req.query.echosrt;
        
          var tempstr = [myconfig.weixin.taken,timestamp,noce].sort().join('');
          //加密方式选择sha1
          var hashCode = crypto.createHash('sha1');
          var resultCode = hashCode.update(tempstr,'utf8').digest('hex');
        
          if(resultCode === signature){
        res.send(echosrt)
          } else {
        res.send('fail')
          }
        
        })
        
        app.listen(8080,'127.0.0.1');
    
    展开全文
  • 两种类型: 1、开发不通过开发者web服务中转,直接通过HTTP请求来进行发送客服...2、是通过开发者的Web服务器,进行发送,此类型应用的类型为,客户在公众号里发信息,----->微信服务器------>开发者服务器...
  • 首先声明下,对接公众号的话需要自行注册公众号“订阅号” 对接失败...【微信对接配置】设置好需要对接的域名,需要注意的是 对接TOKEN:可自定义填写但是一定要和微信端TOKEN填写一致 区分大小写 不然会对接失败这...
  • 微信公众号开发教程

    2018-12-19 17:00:30
    微信公众号开发教程
  • 微信公众号使用教程

    2021-06-08 18:41:21
    微信公众号使用,是一套基础课程,为后面的《PHP微信公众号开发》做铺垫。微信几乎是智能手机上必装的软件,很多的商家在微信上开通公众号,想要把公众号的价值发挥大,必须学会公众号的使用,开发和营销。这一套...
  • 微信公众号主要有以下几个步骤 微信公众号的通讯机制 微信公众号简介 1.注册微信公众号 2.注册测试公众号 3.搭建微信本地调试环境 1)下载客户端natapp: 2)安装natapp: 4.微信公众号接入(校验签名) 第1步中...
  • 微信公众平台后台介绍 原文:http://www.cnblogs.com/imaker/p/6247413.html 一、微信公众平台后台欢迎页面 登陆公众平台后首先进入的就是欢迎页,跟大部分CMS后台一样,这里会提供的是公众账号的一些运营数据...
  • 微信音乐播放器开发 原文:http://www.cnblogs.com/imaker/p/6252651.html 三、音乐添加与管理 音乐内容添加与管理是通过服务器程序来实现的,如果有学习之前教程的朋友应该很熟悉结构了,并且我在源码里有详细...
  • 微信音乐播放器开发 原文:http://www.cnblogs.com/imaker/p/6252667.html 五、音乐播放器前后端整合 在前两期教程中我们已经将前台播放器界面、后台音乐内容管理以及数据通讯接口完成了,现在要做的事情就是...
  • 微信音乐播放器开发 原文:http://www.cnblogs.com/imaker/p/6252638.html 一、Html5的audio组件 HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很...
  • 微信公众平台的核心是与用户互动,在互动中为用户带去服务,从服务中产生价值,微信的运营提倡使用人工回复来和用户交流沟通,但是有很多信息其实是可以通过设置一些关键字让用户自助获取的,在这方面微信公众平台也...
  • 微信公众平台最常用到的就是群发消息,这种一对多、几乎百分百到达的传播方式,取代了短信群发,并且具有多媒体形态,还可以直接引导转化。因此编辑一条好的内容,挑选恰当的时候发送,既可以给用户带来有价值的信息...
  • 从今天开始微信公众平台教程开写,前面部分会比较浅,已经在玩的朋友可以忽略。 微信公众账号注册、设置、登陆 一、微信公众平台注册 注册前的准备工作,很重要! 1、一个没有注册过公众账号的邮箱,...
  • 今天的重点是如何将微信开发模式和SAE对接,希望朋友们已经完成了SAE注册,如果还没搞定的话请抓紧,有问题的话请及时提出,接下来的教程都在那上面进行。 在教程开始前建议朋友们可以先注册一个新的公众账号,...
  • 昨天在ZTalk的技术群里有人在询问如何通过微信来做问答系统,他有1000道题目,想每次随机抽取10道题目让用户来回答,题目格式如图: 这个图是那位朋友的,从题目上来看,嘻嘻应该是运营商滴干活。 答题系统...
  • 基于Python的微信公众号开发教程

    千人学习 2017-12-25 09:59:04
    基于Python的微信公众号开发教程
  • 微信公众号编辑器开发-微信公众号开发11-微信开发php 大秦电商创始人,专...
  • 经常学员提到说老板要他去注册一个微信公众号。 由于以前只是通过微信看别人的公众号内容, ...于是开始到网上搜索如何注册微信公众号的内容, 但是找了一大堆网页, ...申请微信公众号步骤 微信公众号注册网址 https:
  • 这个案例貌似没有什么价值,确实从现实使用来看这个案例真没啥价值,但我是希望通过这个案例教大家学会数据库的使用、后台的开发、微信账号绑定、微信搜索、记录翻页等一些基本方法,然后可以结合自己的实际需求来做...
  • 公司通讯录开发 原文:... 一、公司通讯录产品设计 做任何开发前我们都要做一个产品的规划,公司通讯录虽然看起来很简单,但是这个步骤依然少不了。 ...公司员工微信账号...
  • 微信公众平台上用户都是用使用文字在进行交互的,但是有时候使用图片、语音、视频以及地理位置等可以实现一些非常棒的功能,比如“语音提醒”公众号里的发送语音就可以实现定时的事件提醒功能;比如ZTalk曾经搞过...

空空如也

空空如也

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

微信公众号教程