#微信公众平台开发(一)

这篇文章是笔者最近初涉微信公众号开发时遇到的问题以及解决方法的总结,涉及到微信公众平台开发步骤和一个小的基于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. 申请公众号:进入微信公众平台,根据提示申请相应种类的公众号。
    申请网址
    #微信公众平台开发(一)_第1张图片

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

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

三、搭建服务

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

    
    # -*- coding: utf-8 -*-
    
    
    # filename: main.py
    
    import 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应用已搭建。#微信公众平台开发(一)_第2张图片
  4. 开发者基本配置开发者:公众平台官网登录之后,找到“基本配置”菜单栏。 #微信公众平台开发(一)_第3张图片
    填写配置:
    url填写:http://外网IP:端口号/wx 。外网IP请到腾讯云购买成功处查询, http的端口号固定使用80,不可填写其他。
    Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。#微信公众平台开发(一)_第4张图片

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

    b)vim handle.py

    
    # -*- coding: utf-8 -*-
    
    
    # filename: handle.py
    
    
    import hashlib
    import web
    
    class Handle(object):
        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 = "xxxx" #请按照公众平台官网\基本配置中信息填写
    
                list = [token, timestamp, nonce]
                list.sort()
                sha1 = hashlib.sha1()
                map(sha1.update, list)
                hashcode = sha1.hexdigest()
                print "handle/GET func: hashcode, signature: ", hashcode, signature
                if hashcode == signature:
                    return echostr
                else:
                    return ""
            except Exception, Argument:
                return Argument
  6. 重新启动成功后(python main.py 80),点击提交按钮。若提示”token验证失败”, 请认真检查代码或网络链接等。若token验证成功,会自动返回基本配置的主页面,点击启动按钮。(待续。。。)

你可能感兴趣的:(python学习)