如何实现开发一个企业微信认证费用认证开发版微信服务号

个人怎么注册企业服务号,2天搞定,没组织机构代码怎么认证微信公众号
大家都知道目前腾讯规则已改为,不支持个人订阅号直接认证,那能不能间接的认证呢,答案是可以的
先说下2014年8月份之前注册的老号,这些老号是可以在后台直接点击认证按钮,并上传营业执照即可完成认证,认证完毕后主体信息变更为企业名称。
如果是2014年8月份至今才注册的新的个人订阅号,怎么认证呢?
首先这个时间段注册的是无法直接在后台点击认证按钮的,认证的按钮是灰色的,如下图所示:
别急,先卖个关子,先说下不认证的弊端,如果个人类型的订阅号不认证的话,是不能在自定义菜单(公众号底部的那三个菜单)里加外部链接的,比如不能加商城链接,不能加H5页面链接,不能加签到以及各种活动链接都不能加,只能加自己公众号里面的文章链接,这样就少了很多粘粉和增粉的渠道了,很多第三方管理平台,甚至直接不支持对接个人订阅号,最近腾讯开始公测原创保护和文章页面底部留言这两个功能,只有认证过的公众号才具备,如下图所示:
上图这个留言管理是公众号文章底部的留言,并非公众号对话,而上面提到的很多功能个人订阅号是都没有的,对于已经有很多粉丝的个人订阅号来说,大大的不便,又不想放弃自己的号,怎么办的,别急接着往下看,这时候先别动这个号,先想办法办个个体工作室执照,如下图所示:
这种执照和公司不同,成本低,不用刻章,不用办理对公账户,也不用每个月做代理记账,只有个年检还是在网上进行的,非常省事,又能注册个永远属于自己的公众号并认证,是目前成本最低的解决方案了,办完后,用这个执照去注册个新的公众号(名字随便)并认证,认证完毕后,在老公众号里做个公众号迁移,如下图所示:
位置在主体信息旁边,点一下就可以看到上图中的账号迁移了,注意事项:如果这个个人订阅号是用张三的名字注册的,必须用张三的身份证办的执照才能合并,执照和老公众号要是同一个人名下的才能直接合并。
点击迁移,即可把新老公众号合并,把老号的粉丝合并至新号,同时保留老号的名称来使用,主体信息是新号的信息,这样就实现了个人订阅号的认证流程了,由于公众号迁移腾讯是收费的,如果你个人订阅号里粉丝不多,建议直接办个工作室执照然后搞个新的公众号并认证,不用做迁移了,省了迁移费,如果想用老号的名称的话,可以把老号的名称改掉这个是免费的,3天后释放,释放后再注册新号就可以使用了,说下执照成本,包地址和免到场签字以及2天左右办好执照,600即可,需要找小编维信wqbbt0415
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
代办营业执照、公众号认证、企业店铺、加微信号wqbbt0415,商标加dai796
代办营业执照、公众号认证、企业店铺、加微信号wqbbt0415,商标加dai796
今日搜狐热点微信公众号怎么用自己公司的服务器进行开发_百度知道
微信公众号怎么用自己公司的服务器进行开发
我有更好的答案
1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。2、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。3、在开发过程中,可以使用接口调试工具来在线调试某些接口。4、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。5、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台官网-开发者中心处可以设置接口报警),来发现和解决问题。6、公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。7、公众平台接口调用仅支持80端口。
采纳率:66%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。有德无才,误事;有才无德,坏事;德才兼备,成事!
微信的高级接口(通过微信认证后自动获得)可以做什么?微信服务号定制开发能为企业带来什么?
没有更多推荐了,注册 | 登录
我不制造文章,我是互联网的搬运工
从零开始学运营,10年经验运营总监亲授,2天线下集训+1年在线学习,做个有竞争力的运营人。
[核心提示] 企业要开发微信 CRM,首先要从业务架构上进行设计清楚。微信 CRM 的本质,是在微信渠道上利用微信的特点和接口而扩展的 CRM 系统。
业内一直都在传说微信是 天生的 CRM,可是没有人看到过微信 CRM 的真容。随着微信最新公众平台的改版和开放接口的微信认证开放,微信 CRM 离企业越来越近。汉拓科技第一时间申请认证并对接了微信开放接口,在此就详细展开一下,与大家分享如何基于微信开放接口来开发企业的微信 CRM?
企业要开发微信 CRM,首先要从业务架构上进行设计清楚。微信 CRM 的本质,是在微信渠道上利用微信的特点和接口而扩展的 CRM 系统。而 CRM 系统,一般可以分为五大模块:
客户、销售、营销、服务、会员,另外还有一些附属模块:产品、知识库、活动、交易、统计报表等。在确定微信 CRM 的业务架构后就可以进一步设计具体的数据模型、功能模块和接口对接了。让我们跟随汉拓科技的 SocialCRM 来一一体会一下微信 CRM 的功能模块设计。
客户管理模块
客户管理主要是微信 CRM 进行客户信息管理、客户分级分类、客户沟通关怀和客户生命周期管理的基础模块。
客户信息管理可以通过获取用户基本信息接口建立基本的客户信息档案,通过获取用户地理位置接口获取客户的位置信息,只是需要建立位置轨迹管理,而不是简单的坐标位置储存。通过关注订阅事件和取消关注事件,记录客户的关注时间和取消关注时间。
针对公众号已有的关注者,可以通过获取关注者信息接口批量获取公众号粉丝,该接口每次获取 10000 条,几个循环就可以把品牌公众号上的粉丝导入到微信 CRM 进行管理。 客户分类可以基于用户分组接口,实现公众号的分组与微信 CRM 的分组同步,客户分类后形成目标列表,是营销活动的目标对象,也是客户服务差异化的基础。
客户生命周期管理,基于客户的关注时间、取消关注时间以及当前的微信互动频率、微信互动信息方向等,建立一个粉丝的生命周期管理。
客户管理模块
服务管理模块
微信团队曾经发表过声明:微信不 是营销,而是客户服务。的确,微信的一对一私密交互最适合做品牌的客户服务,尤其是客户服务接口开通后。服务的本质是客户发起一个请求、品牌来进行响应和 反馈,循环往复直至客户满意。 初步原来是基于接收用户消息和向用户回复消息接口实现微信的收和发,但由于六秒的限制很多客户服务动作来不及做完。因此,客户服务接口出现了,它可以实现 在 24 小时内回复,这样微信 CRM 可以轻松走完内部处理动作而实现对客户的微信请求的响应或答复。
客户服务管理还需要接收事件推送接口和自定义菜单,实现客户的多触发机制,这样客户可以通过自定义菜单、消息等各种方式随时发起微信请求。
但是微信客户服务最难的不是功能设计和开发,而是对微信客户服务运营的理解。微信 CRM 不仅仅是系统,更是运营,因此你如何设计微信客户服务运营的流程和 KPI?这个很关键。根据你的流程和 KPI,微信 CRM 怎么来支撑?比如当前企业的微信主要指标是到达数量、打开率、转发分享率等,但是对于客户服务而言,这个根本不足够。微信客户服务需要的是响应时间、服务 水平、反馈周期、解决率等专业指标。
微信对话管理
营销管理模块
微信团队的“微信不是营销工具”,更多是指不是轰炸式的营销,不是天天推送消息,而是对于通道而言,对于个性化和 CRM 而言,精准营销和许可营销依旧是优化的方向之一。因此,微信 CRM 中,营销管理是需要用心设计的一个模块。
微信 CRM 的营销管理的核心是,建立拉式营销而不是推式营销。因此,建议品牌尽量放弃那种一天一推的轰炸模式,而是设计吸引客户主动触发的拉式营销。从这个角度上讲,基于消息模板单发消息接口应该限制,或者限制批量群发营销,鼓励一对一的客户事件触发的下行模板消息。
营销管理需要用到的是事件推送接口、发送位置消息接口、自定义菜单接口和扫一扫功能,通过客户触发的时间、发送的消息、点击 自定义菜单以及扫码,让客户进行具体的营销活动。比如关注订阅事件触发一个最新优惠活动的下行消息、发送位置消息签到下行一个特定活动,或者点击相关活动 菜单进入到营销活动的页面或者链接。
微信 CRM 可以让客户扫描二维码进入到营销活动页面。还可以通过带参数的二维码,标识这个市场活动的营销代码,客户扫码可以识别来源,这样在微信 CRM 中实现市场活动—线索的响应反馈闭环。
拉式营销的主要形态基本上就是 O2O,只是需要与业务运营进行融合,实现常态化。但要看企业是不是能够真正做到重构?比如日常的营销活动,必须从微信运营部门会签,看每一个营销活动是否可以增加微信元素?
微信呼叫中心
从客户服务模块延伸出来一个呼叫中心模块,为什么把微信呼叫中心单独拎出来专门讲?是因为呼叫中心是大 CRM 的一部分,但是又因为业态特殊所以独成一体。针对呼叫中心的设计,比较特殊,而且可以用在客户服务上,也可以用在销售外呼上,甚至来进行营销活动的预热或 者邀约等。
由于一对一的主动单发是受限的,因此微信的销售模块就不单独设计了,部分功能而是融合在微信呼叫中心里面。
微信 CRM 的呼叫中心模块,可以基于自定义菜单接口,实现呼叫中心的 IVR 交互菜单,同时再单独开发模块实现多用户和智能分配,实现不同菜单分配到不同用户或用户组,这是呼叫中心最基本的 IVR 和 ACD。
由于呼叫中心多语音的特点,以及座席客服都是声音甜美,所以需要通过语音识别接口实现对语音微信呼叫的识别和转换,同时通过多媒体文件接口实现微信语音呼叫的备案(专业术语叫录音系统)和质检功能,并可以通过多媒体文件接口回复实时的或者预录制好的语音。
微信 CRM 的呼叫中心模块偏重于微信客服坐席的运营管理,最难的也是业务设计而不是系统。比如微信座席是与传统座席混排还是独立?这直接涉及到呼叫中心模块的设计。
微信智能交互引擎
会员门户模块
说到会员,最好的案例就是陈坤的公众号,他基本上实现的是一个会员微信门户,用到的功能主要是 Oauth2.0 授权接口,实现网页上的获取信息等动作。
微信 CRM 的会员模块可以通过设计 HTML5 的会员掌上门户网页,同时对接微信 CRM 的客户管理等模块,形成微信 H5 会员门户+微信 CRM 的完整管理体系。
以此类推,你可以利用 Oauth2.0 授权接口+HTML5 实现企业的其他微信门户,比如掌上网站、企业门户、内部 OA 等等。这块不属于微信 CRM,叶开就不赘述了。
统计报表管理
微信 CRM 的统计报表管理,这块功能是不可或缺的,但又是最难伺候的,因为是要给老板看的。微信的开放接口并没有跟数据相关的,因此可能很多东西要你自己来想办法了。
首先,基于前面讲的关注、取消关注等数据,统计用户的新增、流失对比分析;
其次,基于前面讲的微信交互的时间、方向等数据,设计微信交互的统计分析;
然后,再高深点儿的是在市场活动中对 O2O 的跟踪、管理和效果,形成市场活动的效果响应统计,也就是 ROI 分析;
其实吧,如果腾讯移动分析的 API 能够开放,那你的微信内容的到达、阅读、分享转发等数据就可以成为微信 CRM 的统计报表中很重量级的报表了。
仪表盘/统计报表管理
最后,聊一下微信大数据的构建。虽然微信的获取用户信息比较少,只有四五项,但这才是真正“逼迫”你在交互中设计碎片化数据 的采集。通过微信 CRM 设置交互索引很关键,对话中的语义分析、点击不同菜单的事件等都可以对应标签,每一次的时间、地理位置等都是时间空间数据,这些组合起来就是微信 CRM 的大数据,不要小看喔,看看你能够从这里面分析出什么宝贝来?
基于微信的开放接口设计企业的微信 CRM,基本上讲完了。建议尽快去申请微信认证,这样就可以对接进来,早日实现你的微信 CRM,当然微信认证拥有普通认证的全部权利,比如搜索可见、认证标识等等。悄悄的透露一下,微信认证的企业有可能向微信团队的市场经理单独申请微支付接 口,好处你晓得啦。
微信 CRM 对于企业而言,还是一项基础服务,汉拓科技已经有成熟的系统,企业可以自己开发,也可以来合作,这方面是开放的。说基础服务,主要是在与企业更重要的是增 值服务,因为企业的运营价值往往体现在微信 CRM 上的增值应用,比如 O2O、联合促销、口碑传播、促销引擎等,这方面汉拓科技邀请有诚意、有创新意识的中型企业进行合作试点,共同打造微信 CRM 上的创新应用。
好吧,严肃的设计话题讲完了,我们来猜测一下:微信会不会自己开发 CRM?怎么,这个很难猜测呢,那你来猜测一下:你会不会自己开发微信 CRM?
本文来源:i天下网商
收藏已收藏 | 8赞已赞 | 8
我不制造文章,我是互联网的搬运工
产品经理群
运营交流群
品牌营销群
文案交流群
Axure交流群
关注微信公众号
大家都在问
3个回答5人关注
5个回答5人关注
127个回答178人关注
56个回答63人关注
15个回答43人关注
19个回答42人关注使用Golang开发微信公众平台-接入验证
- Go语言中文网 - Golang中文社区
<meta name="author" content="polaris ">
使用Golang开发微信公众平台-接入验证
· 11328 次点击 ·
开始浏览 & &
今年我涉猎的领域有些“广泛”,并且有那么一点“跳跃”:从上半年的终端(游戏)开发到下半年、以及目前将要提及的开发,似乎有些远离了老本行C以及技术管理的内容。但在这个转型以及创新驱动的时代,这显然是顺势而为。寻求与新兴领域的主动接轨,在实打实的实践 中,扩大了自己的视野,并可以进一步甄别发现适合自己的领域。
移动互联网时代,微信平台一枝独秀,是社交领域的巨人,但其诞生也才不到4年。微信平台的发展前景十分广阔,企鹅公司将其打造为人与人、人与物、物与物的统一、万能入口之雄心不变,因此围绕微信平台广大开发者依旧有诸多机会。
微信公众平台接口应该算是微信平台首批对外开放的接口吧。公众平台相对成熟,但其业务模式依旧在演进和创新。公众平台接口的开发并非不难,上手几个月就可 以写成一本诸如“微信公众平台应用开发实践”的事情就发生在你我眼前,因此这里后续有关微信公众平台接口开发的文章也都是一些入门级的,我个人也是边学 习,边实践,边记录,边分享,就像上半年写文章那样。
一、公众号申请(可选)
本着“再小的个体,也有自己的品牌”的微信公众平台产品哲学,只要你是合法自然人类,你就可以到https://mp.weixin.qq.com/上申请一个公众号,一般对于个体而言,只能申请订阅号。
对于具有开发能力的订阅号拥有者,你可以在订阅号的“开发者中心”,启用开发者账号。并且“一旦启用并设置服务器配置后,用户发给公众号的消息以及开发者需要的事件推送,将被微信转发到该URL中”。
不过此时即便你填写相关信息并提交,你也不会通过验证。这正是本篇要告诉你的事情,如何写程序实现微信公众平台的接入验证,后续道来。
二、测试号申请(可选)
正式的订阅号申请有些繁琐,需要提交个人信息,需要审核,不会立即生效。并且未认证的订阅号所能使用的功能接口有限(只能使用普通消息接口),而认证又需 要一笔费用(现价300rmb/次)。对于学习者而言,也许真的没有必要。于是我们在学习开发的过程中可以申请测试号来替代真正的公众号。
测试号是一种体验账号,有效期一年,具有各种功能接口体验权限。测试号可以在http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login下申请,申请时有一个类似公众号开发者配置的页面需要你填写服务器配置。同样,你需要进行接入验证(后续道来)。
一旦申请成功,可以用终端微信app扫一扫测试号的QR,关注微信平台测试号,用于后续平台接口开发测试。
以上公众号和测试号二选一。
三、公众号服务器
为何需要公众号服务器,这就要谈及微信公众平台的架构了。
很多人觉得微信公众平台的业务模式有些类似于若干年前火爆一时的短信增值业务模式-SP/CP模式:
【终端用户】
【移动运营商移动增值业务网关】
【SP/CP服务器】
微信公众号时代,这个业务模式变成了:
【终端用户】
【微信公众平台】
【公众号服务器】
短信变成了微信,SP/CP变成了公众号。微信公众平台将终端用户发给公众号的信息转发至公众号配置的公众号服务器URL,公众号服务器做业务处理后,将响应信息通过微信公众平台再发给终端用户。因此我们需要实现公众号业务逻辑的公众号服务器。
本文标题里所说的“接入验证”,指的就是微信公众平台对公众号服务器提供服务的URL有效性的验证。我们在填写开发者中心的“接口配置信 息”并提交时,微信公众平台会向配置的公众号服务器的URL发送验证Request,只有公众号服务存在,且按要求返回包含特定信息的Response, 我们才能真正通过微信公众平台的验证,“接口配置信息”才真正生效。
因此我们需要一台放在公网的主机。如果采用Golang开发公众号服务的话,这样的主机只能是独立的VPS,像国内不能运行Golang,无法满足要求(当然如果你使用其他语言开发的话,比如,那么可用的主机范围就很广泛了)。
这里建议申请一个(t2.micro型,免费一年,学习够用)用作学习测试使用或者购买像或的VPS。关于如何申请亚马逊主机可以咨询谷歌和度娘,这里不赘述。
注意:实例默认采用的时动态IP,instance重启后IP会发生变化。因此可申请分配一个Elastic IP,并绑定在你的EC2实例上,目前绑定instance的Elastic IP是免费的,这个IP在instance重启后不会变更。当你EC2主机到期后,记得释放这个IP,否则就收费了。
四、接入验证逻辑
前面提到过,无论是公众号还是测试号,当你提交配置URL时会收到提交失败的信息,这是微信公众平台接入验证失败所致。在公众平台开发者文档中,关于URL验证逻辑如下:
开发者提交信息(包括URL、Token)后,微信服务器将发送Http Get请求到填写的URL上,GET请求携带四个参数:signature、timestamp、nonce和echostr。公众号服务程序应该按如下要求进行接入验证:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 将加密后获得的字符串与signature对比,如果一致,说明该请求来源于微信
4. 如果请求来自于微信,则原样返回echostr参数内容
以上完成后,接入验证就会生效,开发者配置提交就会成功。
列出Http抓包分析后的文本,理解起来就更容易些:
微信服务器发出的验证Request如下:
GET /?signature=d01007dcff994c555bc51d22e154956ccdc61ec5&timestamp=&nonce=&echostr=qwe1235 HTTP/1.0\r\n
User-Agent: Mozilla/4.0\r\n
Accept: */*\r\n
Host: wechat.tonybai.com\r\n
Pragma: no-cache\r\n
Content-Length: 0\r\n
应答返回如下:
HTTP/1.0 200 OK\r\n
Date: Fri, 19 Dec :59 GMT\r\n
Content-Length: nn\r\n
Content-Type: text/ charset=utf-8\r\n
五、参考实现
环境:AWS t2.micro ubuntu 14.04 x86_64 Server
Go语言标准库提供了一个强大的http server,我们直接利用这个server来处理微信平台的Url验证请求。另外微信平台发给公众平台服务器的http request都是请求到"/"下的,这样我们的service无需设置太多http route。
//urlvalidation.go
package main
"crypto/sha1"
"net/http"
token = "wechat4go"
func makeSignature(timestamp, nonce string) string {
sl := []string{token, timestamp, nonce}
sort.Strings(sl)
s := sha1.New()
io.WriteString(s, strings.Join(sl, ""))
return fmt.Sprintf("%x", s.Sum(nil))
func validateUrl(w http.ResponseWriter, r *http.Request) bool {
timestamp := strings.Join(r.Form["timestamp"], "")
nonce := strings.Join(r.Form["nonce"], "")
signatureGen := makeSignature(timestamp, nonce)
signatureIn := strings.Join(r.Form["signature"], "")
if signatureGen != signatureIn {
return false
echostr := strings.Join(r.Form["echostr"], "")
fmt.Fprintf(w, echostr)
return true
func procRequest(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
if !validateUrl(w, r) {
log.Println("Wechat Service: this http request is not from Wechat platform!")
log.Println("Wechat Service: validateUrl Ok!")
func main() {
log.Println("Wechat Service: Start!")
http.HandleFunc("/", procRequest)
err := http.ListenAndServe(":80", nil)
if err != nil {
log.Fatal("Wechat Service: ListenAndServe failed, ", err)
log.Println("Wechat Service: Stop!")
编译这个go源码,执行urlvalidation。
$> urlvalidation
17:48:10 Wechat Service: Start!
17:48:10 Wechat Service: ListenAndServe failed, listen tcp :80: bind: permission denied
程序提示没有权限绑定80端口。80端口只有管理员权限才能绑定,因此我们需要通过sudo方式执行validation。
$ sudo ./urlvalidation
09:56:29 Wechat Service: Start!
接下来我们回到订阅号开发者中心配置页面或测试号服务器配置页面,点击提交。在我们的公众号服务器后台可以看到如下日志:
09:56:52 Wechat Service: validateUrl Ok!
同时你的提交也会显示成功,Url已经验证通过,你将正式成为开发者。
如果我们随意构造一个http get 请求发给validate程序,比如:
curl -s http://wechat.tonybai.com(比如我的URL为http://wechat.tonybai.com)
那么我们将看到validation输出如下错误日志:
10:02:07 Wechat Service: this http request is not from Wechat platform!
以上源码文件在可以下载。
处于安全考虑,后续订阅号平台均需要对收到的http request进行验证,以确保请求来源于微信公众平台。
(C) 2014, . 版权所有.
11328 次点击 &?& 2 赞 &
3 回复 &| &直到
请尽量让自己的回复能够对别人有帮助
支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
支持 @ 本站用户;支持表情(输入 : 提示),见
图片支持拖拽、截图粘贴等方式上传
记住登录状态
今年我涉猎的领域有些“广泛”,并且有那么一点“跳跃”:从上半年的终端(游戏)开发到下半年、以及目前将要提及的开发,似乎有些远离了老本行C以及技术管理的内容。但在这个转型以及创新驱动的时代,这显然是顺势而为。寻求与新兴领域的主动接轨,在实打实的实践 中,扩大了自己的视野,并可以进一步甄别发现适合自己的领域。
移动互联网时代,微信平台一枝独秀,是社交领域的巨人,但其诞生也才不到4年。微信平台的发展前景十分广阔,企鹅公司将其打造为人与人、人与物、物与物的统一、万能入口之雄心不变,因此围绕微信平台广大开发者依旧有诸多机会。
微信公众平台接口应该算是微信平台首批对外开放的接口吧。公众平台相对成熟,但其业务模式依旧在演进和创新。公众平台接口的开发并非不难,上手几个月就可 以写成一本诸如“微信公众平台应用开发实践”的事情就发生在你我眼前,因此这里后续有关微信公众平台接口开发的文章也都是一些入门级的,我个人也是边学 习,边实践,边记录,边分享,就像上半年写文章那样。
一、公众号申请(可选)
本着“再小的个体,也有自己的品牌”的微信公众平台产品哲学,只要你是合法自然人类,你就可以到https://mp.weixin.qq.com/上申请一个公众号,一般对于个体而言,只能申请订阅号。
对于具有开发能力的订阅号拥有者,你可以在订阅号的“开发者中心”,启用开发者账号。并且“一旦启用并设置服务器配置后,用户发给公众号的消息以及开发者需要的事件推送,将被微信转发到该URL中”。
不过此时即便你填写相关信息并提交,你也不会通过验证。这正是本篇要告诉你的事情,如何写程序实现微信公众平台的接入验证,后续道来。
二、测试号申请(可选)
正式的订阅号申请有些繁琐,需要提交个人信息,需要审核,不会立即生效。并且未认证的订阅号所能使用的功能接口有限(只能使用普通消息接口),而认证又需 要一笔费用(现价300rmb/次)。对于学习者而言,也许真的没有必要。于是我们在学习开发的过程中可以申请测试号来替代真正的公众号。
测试号是一种体验账号,有效期一年,具有各种功能接口体验权限。测试号可以在http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login下申请,申请时有一个类似公众号开发者配置的页面需要你填写服务器配置。同样,你需要进行接入验证(后续道来)。
一旦申请成功,可以用终端微信app扫一扫测试号的QR,关注微信平台测试号,用于后续平台接口开发测试。
以上公众号和测试号二选一。
三、公众号服务器
为何需要公众号服务器,这就要谈及微信公众平台的架构了。
很多人觉得微信公众平台的业务模式有些类似于若干年前火爆一时的短信增值业务模式-SP/CP模式:
【终端用户】
【移动运营商移动增值业务网关】
【SP/CP服务器】
微信公众号时代,这个业务模式变成了:
【终端用户】
【微信公众平台】
【公众号服务器】
短信变成了微信,SP/CP变成了公众号。微信公众平台将终端用户发给公众号的信息转发至公众号配置的公众号服务器URL,公众号服务器做业务处理后,将响应信息通过微信公众平台再发给终端用户。因此我们需要实现公众号业务逻辑的公众号服务器。
本文标题里所说的“接入验证”,指的就是微信公众平台对公众号服务器提供服务的URL有效性的验证。我们在填写开发者中心的“接口配置信 息”并提交时,微信公众平台会向配置的公众号服务器的URL发送验证Request,只有公众号服务存在,且按要求返回包含特定信息的Response, 我们才能真正通过微信公众平台的验证,“接口配置信息”才真正生效。
因此我们需要一台放在公网的主机。如果采用Golang开发公众号服务的话,这样的主机只能是独立的VPS,像国内不能运行Golang,无法满足要求(当然如果你使用其他语言开发的话,比如,那么可用的主机范围就很广泛了)。
这里建议申请一个(t2.micro型,免费一年,学习够用)用作学习测试使用或者购买像或的VPS。关于如何申请亚马逊主机可以咨询谷歌和度娘,这里不赘述。
注意:实例默认采用的时动态IP,instance重启后IP会发生变化。因此可申请分配一个Elastic IP,并绑定在你的EC2实例上,目前绑定instance的Elastic IP是免费的,这个IP在instance重启后不会变更。当你EC2主机到期后,记得释放这个IP,否则就收费了。
四、接入验证逻辑
前面提到过,无论是公众号还是测试号,当你提交配置URL时会收到提交失败的信息,这是微信公众平台接入验证失败所致。在公众平台开发者文档中,关于URL验证逻辑如下:
开发者提交信息(包括URL、Token)后,微信服务器将发送Http Get请求到填写的URL上,GET请求携带四个参数:signature、timestamp、nonce和echostr。公众号服务程序应该按如下要求进行接入验证:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 将加密后获得的字符串与signature对比,如果一致,说明该请求来源于微信
4. 如果请求来自于微信,则原样返回echostr参数内容
以上完成后,接入验证就会生效,开发者配置提交就会成功。
列出Http抓包分析后的文本,理解起来就更容易些:
微信服务器发出的验证Request如下:
GET /?signature=d01007dcff994c555bc51d22e154956ccdc61ec5&timestamp=&nonce=&echostr=qwe1235 HTTP/1.0\r\n
User-Agent: Mozilla/4.0\r\n
Accept: */*\r\n
Host: wechat.tonybai.com\r\n
Pragma: no-cache\r\n
Content-Length: 0\r\n
应答返回如下:
HTTP/1.0 200 OK\r\n
Date: Fri, 19 Dec :59 GMT\r\n
Content-Length: nn\r\n
Content-Type: text/ charset=utf-8\r\n
五、参考实现
环境:AWS t2.micro ubuntu 14.04 x86_64 Server
Go语言标准库提供了一个强大的http server,我们直接利用这个server来处理微信平台的Url验证请求。另外微信平台发给公众平台服务器的http request都是请求到"/"下的,这样我们的service无需设置太多http route。
//urlvalidation.go
package main
"crypto/sha1"
"net/http"
token = "wechat4go"
func makeSignature(timestamp, nonce string) string {
sl := []string{token, timestamp, nonce}
sort.Strings(sl)
s := sha1.New()
io.WriteString(s, strings.Join(sl, ""))
return fmt.Sprintf("%x", s.Sum(nil))
func validateUrl(w http.ResponseWriter, r *http.Request) bool {
timestamp := strings.Join(r.Form["timestamp"], "")
nonce := strings.Join(r.Form["nonce"], "")
signatureGen := makeSignature(timestamp, nonce)
signatureIn := strings.Join(r.Form["signature"], "")
if signatureGen != signatureIn {
return false
echostr := strings.Join(r.Form["echostr"], "")
fmt.Fprintf(w, echostr)
return true
func procRequest(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
if !validateUrl(w, r) {
log.Println("Wechat Service: this http request is not from Wechat platform!")
log.Println("Wechat Service: validateUrl Ok!")
func main() {
log.Println("Wechat Service: Start!")
http.HandleFunc("/", procRequest)
err := http.ListenAndServe(":80", nil)
if err != nil {
log.Fatal("Wechat Service: ListenAndServe failed, ", err)
log.Println("Wechat Service: Stop!")
编译这个go源码,执行urlvalidation。
$> urlvalidation
17:48:10 Wechat Service: Start!
17:48:10 Wechat Service: ListenAndServe failed, listen tcp :80: bind: permission denied
程序提示没有权限绑定80端口。80端口只有管理员权限才能绑定,因此我们需要通过sudo方式执行validation。
$ sudo ./urlvalidation
09:56:29 Wechat Service: Start!
接下来我们回到订阅号开发者中心配置页面或测试号服务器配置页面,点击提交。在我们的公众号服务器后台可以看到如下日志:
09:56:52 Wechat Service: validateUrl Ok!
同时你的提交也会显示成功,Url已经验证通过,你将正式成为开发者。
如果我们随意构造一个http get 请求发给validate程序,比如:
curl -s http://wechat.tonybai.com(比如我的URL为http://wechat.tonybai.com)
那么我们将看到validation输出如下错误日志:
10:02:07 Wechat Service: this http request is not from Wechat platform!
以上源码文件在可以下载。
处于安全考虑,后续订阅号平台均需要对收到的http request进行验证,以确保请求来源于微信公众平台。
(C) 2014, . 版权所有.
1987 人在线
&最高记录 2928
& studygolang.com Go语言中文网,中国 Golang 社区,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。
Powered by
&o&·&CDN 采用
VERSION: V3.5.0&·&9.445502ms&·&为了更好的体验,本站推荐使用 Chrome 或 Firefox 浏览器
登录和大家一起探讨吧
记住登录状态
还不是会员

我要回帖

更多关于 微信公众号企业认证 的文章

 

随机推荐