网站地图    收藏   

主页 > 后端 > 微信开发 >

大齐玩转微信公众账号系列(八):微信公众账

来源:自学PHP网    时间:2015-04-14 12:58 作者: 阅读:

[导读] 此系列博文目录:如何申请微信公众帐号微信公众账号消息那些事儿服务号实现自定义菜单微信公众账号开发入门(原理)微信公众账号开发:URL 和 Tocken微信公众账号开发:消息原理微信...

 此系列博文目录:

如何申请微信公众帐号

微信公众账号消息那些事儿

服务号实现自定义菜单

微信公众账号开发入门(原理)

微信公众账号开发:URL 和 Tocken

微信公众账号开发:消息原理

微信公众账号开发:消息设计、源码

微信公众账号开发:菜单原理、设计、源码

微信公众账号开发:JS接口

微信公众账号开发:Auth2.0认证原理、设计、源码

 

微信公众账号菜单的创建没有复杂的业务逻辑,把调用微信公众平台服务器的接口,传递json数据即可;

微信公众账号创建菜单前提是微信公众账号服务平台提供了 appid 和 appsecret,否则创建不了菜单;

 

一、流程图

创建菜单、删除菜单、获取菜单流程类似,这里以创建菜单为例:

 

\

 

从流程图可以看出,创建菜单之前需要获取 tocken,然后再将tocken 和 菜单的json数据作为POST的参数再请求微信平台服务器,菜单即可创建完成;


二、源码

 

'''
创建菜单
'''
def wx_create_menu(request):
    appid = 'zainanjing6-appid'
    appsecret = 'zainanjing6-appsecret'
    if appid and appsecret:
        menu_data = json_data#这里由开发者自行组织菜单的json数据
        if menu_data:
            token_rst = get_access_token(appid,appsecret)
            if token_rst.get('access_token',None):#获取到了tocken
                url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s' %token_rst['access_token']
                if isinstance(menu_data,unicode):
                    menu_data = menu_data.encode('UTF-8')
                    
                rst_str = HttpClient.exePost(url, menu_data)#创建菜单
                
                rst_json = json.loads(rst_str)
                if rst_json and rst_json.get('errcode',None) == 0:
                    pass#创建菜单成功
                else:
                    errcode = rst_json.get('errcode',None)#创建菜单失败,获取代码
            
'''
获取tocken的代码
'''
def get_access_token(appid,appsecret):
    url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s' %(appid,appsecret)
    return json.loads(HttpClient.exeGet(url))

'''
Http客户端请求工具类;
'''    
class HttpClient(object):

    '''
    发送GET请求
  data : dicts
    '''
    @staticmethod
    def exeGet(url):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        res = urllib2.urlopen(url)
        try:
            return res.read()
        except Exception as e:
            print(e)
            return None
        finally:
            res.close()
            
    '''
    发送POST请求
  data : dicts
    '''
    @staticmethod
    def exePost(url,data):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        res = urllib2.urlopen(url,data)
        try:
            return res.read()
        except Exception as e:
            print(e)
            return None
        finally:
            res.close()




 

以上就是创建菜单的过程了,删除菜单、获取菜单和创建菜单流程一样;

菜单创建完成时,可能不会马上生效(微信服务器缓存),可以先取消关注,再关注账户就可以看到菜单了

 

东西比较简单,希望对各位朋友能有所帮助

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论