php专区

 首页 > php专区 > PHP应用 > 开放平台 > 大齐玩转微信公众账号系列(八):微信公众账

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

分享到:
【字体:
导读:
          此系列博文目录:如何申请微信公众帐号微信公众账号消息那些事儿服务号实现自定义菜单微信公众账号开发入门(原理)微信公众账号开发: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()




 

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

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

 

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

分享到:
大齐玩转微信公众账号系列(九):微信公...
JEEWeiXin JEEWeiXin 开源系统实现了微信公众账号开发者提供的接口,以及针对接口的基本功能的维护; 这样开发者就可以专注于业务的开发。 版本:v1.0 功能描述: 1、URL、Tocken 认证接口 2、消息接收接口 3、文本消息回复接口 4、单条、多条图文消息回复接口 5、订阅消息设置 6、文本消息维护 7、图文消息维护 ...
大齐玩转微信公众账号系列(七): 微信...
 此系列博文目录: 如何申请微信公众帐号 微信公众账号消息那些事儿 服务号实现自定义菜单 微信公众账号开发入门(原理)微信公众账号开发:URL 和 Tocken 微信公众账号开发:消息原理 微信公众账号开发:消息设计、源码 微信公众账号开发:菜单原理、设计、源码 微信公众账号开发:JS接口微信公众账号开发:Auth2.0...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……