这篇文章是笔者最近初涉微信公众号开发时遇到的问题以及解决方法的总结,涉及到微信公众平台开发步骤和一个小的基于python2.7 web.py框架的实例

一、微信公众平台概述

微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,主要通过公众号消息会话和公众号内网页提供服务。

开发者注意项(具体事项请见微信公众平台技术文档):
1. 微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入.
2. 在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。
3. 在开发过程中,可以使用接口调试工具来在线调试某些接口。
4. 每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。
5. 在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台官网-开发者中心处可以设置接口报警),来发现和解决问题。
6. 公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_tokenaccess_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储。
7. 公众平台接口调用仅支持80端口。

二、开发前的准备

  1. 申请服务器:建议是Linux服务器,用于搭建web网站服务。
    以腾讯云服务器为示例:腾讯云服务器购买入口.
    学生党注意:腾讯公司为在读高校生提供了云+校园计划,1元/月即可使用腾讯云。

  2. 申请公众号:进入微信公众平台,根据提示申请相应种类的公众号。
    申请网址

  3. 需要用到的软件(本实例用的是web.py框架)

    安装python2.7版本以上
    安装web.py
    安装libxml2, libxslt, lxml python
    

三、搭建服务

  1. 编写代码,在云服务器上,切到设置好的工程目录下,使用vim main.py(vim编辑器打开main.py文件,如果没有则创建一个。),写入下面代码,保存运行。

    
    # -*- coding: utf-8 -*-# filename: main.pyimport web
    urls = ('/wx', 'Handle',
    )
    class Handle(object):def GET(self):return "hello, this is a test"
    if __name__ == '__main__':app = web.application(urls, globals())app.run()
    
  2. 执行命令:sudo python main.py 80,如果出现“socket.error: No socket could be created“错误信息,可能为80端口号被占用,可能是没有权限,请自行查询解决办法。如果遇见其他错误信息,请到 web.py官方文档 学习webpy。
  3. 浏览器输入http://外网IP:80/wx (外网IP请到腾讯云购买成功处查询)。如下图,一个简单的web应用已搭建。
  4. 开发者基本配置开发者:公众平台官网登录之后,找到“基本配置”菜单栏。
    填写配置:
    url填写:http://外网IP:端口号/wx 。外网IP请到腾讯云购买成功处查询, http的端口号固定使用80,不可填写其他。
    Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。

  5. 现在选择提交肯定是验证token失败,因为还需要完成代码逻辑。改动原先main.py文件,新增handle.py。
    a)vim main.py

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

    b)vim handle.py

    
    # -*- coding: utf-8 -*-# filename: handle.pyimport hashlib
    import webclass Handle(object):def GET(self):try:data = web.input()if len(data) == 0:return "hello, this is handle view"signature = data.signaturetimestamp = data.timestampnonce = data.nonceechostr = data.echostrtoken = "xxxx" #请按照公众平台官网\基本配置中信息填写list = [token, timestamp, nonce]list.sort()sha1 = hashlib.sha1()map(sha1.update, list)hashcode = sha1.hexdigest()print "handle/GET func: hashcode, signature: ", hashcode, signatureif hashcode == signature:return echostrelse:return ""except Exception, Argument:return Argument
  6. 重新启动成功后(python main.py 80),点击提交按钮。若提示”token验证失败”, 请认真检查代码或网络链接等。若token验证成功,会自动返回基本配置的主页面,点击启动按钮。(待续。。。)

#微信公众平台开发(一)相关推荐

  1. 微信公众平台开发(82) 天气预报

    在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息. 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 一.中国 ...

  2. 微信公众平台开发教程(九)微信公众平台通用开发框架

    微信公众平台开发教程(九)微信公众平台通用开发框架 一.思考 开发了几个微信项目,一直在思考: 如何将微信相关的处理与业务系统联系在一起? 如何做到彼此分离,且易于扩展? 能否开发一套独立的微信服务框 ...

  3. Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明

    这里所说的高级接口是指面向通过认证的服务号开通的高级功能. 高级功能大致可以分类为: 用户接口 分组接口 客服接口(有别于之前介绍的多客服) 群发接口 多媒体接口 二维码接口 模板消息接口(不是所有账 ...

  4. 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发

    本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixi ...

  5. 微信公众平台开发(104) 自定义菜单扫一扫、发图片、发地理位置

    关键字:微信公众平台 自定义菜单 扫一扫 发图片 发地理位置 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-menu-new-type.htm ...

  6. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

  7. 微信公众平台开发(58)自定义菜单

    微信公众平台开发 微信公众平台开发模式 企业微信公众平台 自定义菜单 开发教程  作者:方倍工作室  地址:http://www.cnblogs.com/txw1958/p/weixin-58-cus ...

  8. 微信公众平台开发中-SAE不支持XStream框架的解决方案

    问题描述 最近几天(2014年8月20日之后),突然有不少网友反应,柳峰博客中的微信公众平台开发代码在SAE上运行会报错,或者是能正常部署,但向公众号发消息没反应.以前也有一些初学者质疑过我博客中的代 ...

  9. C#微信公众平台开发—高级群发接口

    涉及access_token的获取请参考<C#微信公众平台开发-access_token的获取存储与更新> 一.为了实现高级群发功能,需要解决的问题 1.通过微信接口上传图文消息素材时,J ...

  10. 微信公众平台开发(102) 模板消息

    关键字:微信公众平台 模板消息 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wechat-template-message.html 在这篇微信公众平台开 ...

最新文章

  1. EqualLogic 6100 V6 Synchronous Replication
  2. android 无线调试
  3. mongodb防火墙配置
  4. Android有道词典查询功能
  5. Hibernate,Session清理缓存时间点
  6. 若依集成 WebSocket
  7. CocoaLumberjack
  8. 【学堂在线数据挖掘:理论方法笔记】第七天(4.1)
  9. 2022年11月份PMP考试是新版教材吗?
  10. UVA 10480 Sabotage (最大流最小割)
  11. python增量爬虫_python网络爬虫——增量式爬虫
  12. 神经网络发展的三个阶段,人工神经网络的发展
  13. 用计算机弹出平凡之路节奏,计算机音乐谱平凡之路
  14. DLL文件是什么?有几种调用方式?
  15. [RK3288]backlight pwm_bl控制双屏背光改写
  16. 亚洲诚信助力看雪安全开发者峰会
  17. 七彩虹colorful SL500 360G开卡(量产)rts5732dl教程+量产工具
  18. 博客神器 | 公式提取器Mathpix Snip
  19. 显卡测试哪个软件好,哪种显卡测试软件更好
  20. 100种思维模型之人类误判心理思维模型-49

热门文章

  1. (转)图解如何制作网线
  2. Web自动化【7】——python 使用QQ邮箱发送邮件,端口号25,465,578,的区别,及错误码535,530的解决办法
  3. SENet代码复现+超详细注释(PyTorch)
  4. C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
  5. java escpos_java – 设置字符代码表以在ESC / POS打印机中打印非拉丁字符
  6. mean(求均值),max/min(求最值)
  7. c语言c51单片机点亮8个灯,单片机课程设计-8个LED灯来回点亮
  8. 三点软件下载工具SoftDownloader
  9. BlenderGIS 使用总结
  10. 常见的四种回归测试分析