一.注册微信公众号

微信公众号官方入口https://mp.weixin.qq.com注册公众号,注册过程中,类型选择可能是新手比较迷惑的地方.微信公众号分为订阅号和服务号(还有个企业号,似乎用的人不多),每种类型下面又分为公司,政府部门,社会组织,个人等不同性质.不同类型,不同性质的公众号,权限不同,申请资料也不同.

例如:公司(订阅号或服务号),你得提供工商注册号,银行对账号.注册成功后,也并不是所有权限都默认开通,需要手动开通.有些权限还得微信认证之后才能开通.关于这些细节,可参阅微信公众号官方文档https://mp.weixin.qq.com/wiki

可以申请测试号,它除了跟钱有关的权限(例如微信支付)没有,以及不能当正式公众号来发布(微信中似乎也搜索不到)之后,差不多所有权限都有,学习开发阶段,还是挺有用的.测试号申请办法:微信公众号官方管理平台->开发->开发者工具->公众平台测试账号.

二.配置

认证通过并且开通了微信支付的公众号,需要配置一些参数.以下为参数总集,不同类型的公众号权限不同,如果某个权限没有的话,则对应参数不用也无法设置.例如我的服务号(权限全都有了的)参数如下:

01.appid:  wxfedef3857580f5a0
02.appsecret:  d92dd8864ba5j5g4bd596cb9739ee423
03.EncodingAESKey: njo2Kau5pCtc9cR0TQcfGYhz8rGCwdP1n9Ju33yvQRz
04.微信支付商户号:  1391091002
05.API密钥(key):  3bf1114a986ba87ed28fcj5p3s93c2f8

06.token: weixin
07.服务器配置: http://szuzsq.tunnel.qydev.com/weixin/mp/index.php
08.JS接口安全域名: szuzsq.tunnel.qydev.com
09.业务域名: szuzsq.tunnel.qydev.com
10.网页授权域名: szuzsq.tunnel.qydev.com
11.检验文件: http://szuzsq.tunnel.qydev.com/MP_verify_BDLeQ3NxRqt1pZB3.txt
12.支付授权目录: szuzsq.tunnel.qydev.com/weixin/mp/
13.测试授权目录: szuzsq.tunnel.qydev.com/weixin/mp/test/
14.扫码支付回调URL: http://szuzsq.tunnel.qydev.com/weixin/mp/notify_native.php
15.预留信息: rene
16.API证书: cert.zip(apiclient_cert.p12,apiclient_cert.pem,apiclient_key.pem,rootca.pem)

1).微信公众号官方管理平台->开发->基本配置.如图:

2).微信公众号官方管理平台->右上角logo->功能配置.如图:

        其中注意,设置业务域名,JS接口安全域名,网页授权域名这3个参数时,需要下载1个txt文件(例如,我的是MP_verify_BDLeQ3NxRqt1pZB3.txt),将文件上传至域名根目录或者项目路径下.

例如我的是http://szuzsq.tunnel.qydev.com/MP_verify_BDLeQ3NxRqt1pZB3.txt

是在按保存之前先上传,不然不能保存.只需下载1次,3个参数里的txt文件是一样的.

前2个参数,每个月只能修改3次.如图:

3).微信公众号官方管理平台->微信支付->开发配置.如图:

        其中注意,似乎新版没有测试授权目录了.

4).微信支付商户平台->账户中心->个人信息

5).微信支付商户平台->账户中心->API安全

        其中注意,证书下载下来为打包的cert.zip.其apiclient_cert.p12用于java版本等的微信支付.apiclient_cert.pem,apiclient_key.pem用于php版本的微信支付.例如.我使用php语言,则将文件上传到:

http://szuzsq.tunnel.qydev.com/weixin/lib/wxlib/wxpay/cert/apiclient_cert.pem

http://szuzsq.tunnel.qydev.com/weixin/lib/wxlib/wxpay/cert/apiclient_key.pem

在我以后的代码中,使用curl退款时,会用到这些证书.

三.建立公网服务器
很多其他教程,都是以百度云BAE,新浪云SAE作为服务器,当前这2个玩意不是免费的,而且需要实名认证.特别要指出的是新浪SAE如果没有认证,所有的返回响应,都会自动添加一些html标签,提醒用户去认证,就是因为这些标签,微信接收服务器配置提交时,不能成功..
教大家一种方式,将公网上的网站,映射到你本机电脑的服务器上(反向代理).比较有名的是花生壳,但这玩意同样收钱,免费的特不稳定..
ok,新利器隆重出场,ngrok!!!!!!!!!!!这是一个开源项目,干的活就是花生壳,将网络上访问公网上的网站(我的是http://szuzsq.tunnel.qydev.com/weixin/index.php)映射到本机电脑.国内有人架设了ngrok的服务,我们直接用.
到 http://www.qydev.com下载相应操作系统客户端(我的是window7),然后在解压目录下执行ngrok -config ngrok.cfg -subdomain szuzsq 80
szuzsq是我的子域名,这样,访问 http://szuzsq.tunnel.qydev.com就是访问我本机电脑的服务器 http://localhost了.在本地,你可以轻松调试.我一般使用error_log("xxx", 3, "err.log");的方式打印日志.   

四.搭建本地开发环境

我使用php作为开发语言(所有的例子都是基于php+ html5 + css3 + javascript),大家可选用自己熟悉的语言(只要是http服务器语言并且会搭建环境就行).我的环境为:windows7 + wampserver3 + eclipse..其中mysql默认编码以及排序均设置为utf8;php打开了xdebug调试;eclipse上集成web,javascript,php插件.如果有同样使用php又不会的配置的,可联系我...关于断点调试,我的eclipse可调试普通网站的php代码,浏览器可调试普通网站的javascript代码.但是,怎么在微信公众号开发时断点调试php和javascript,我还不会,有会的同学,请指教.

wampserver3(wampserver3.0.4_x86_apache2.4.18_mysql5.7.11_php5.6.19-7.0.4.exe)下载地址:  https://sourceforge.net/projects/wampserver/files

eclipse3.7.2(eclipse-SDK-3.7.2-win32.zip)下载地址: http://www.eclipse.org/downloads/packages/eclipse-classic-372/indigosr2

wampserver3自运安装了apache,mysql和php.

要运行eclipse,请先安装java(我的是java6).然后解压.

然后从菜单Help->Install New Software->Add.进入Add Respository界面,在Name处填写Indigo,在Location处填写: http://download.eclipse.org/releases/indigo.如果上一级Install界面的Work with里面直接有Indigo - http://download.eclipse.org/releases/indigo,也可以直接选中这一项...

解析完之后,会有一项"Web,XML,Java EE and OSGi Enterprise Development",不用全部安装,我只安装了"JavaScript Development Tools", "PHP Development Tools(PDT) SDK Feature"和"Web Page Editor"

五.响应微信服务器配置以及响应微信转发回复消息:

<?php
//文件名: http://szuzsq.tunnel.qydev.com/weixin/mp/index.phpdefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();
//转发xml消息也有signature,timestamp,nonce参数.只有验证消息才有echostr参数.
if(!isset($_GET["echostr"]) /*|| !isset($_GET["signature"]) || !isset($_GET["timestamp"]) || !isset($_GET["nonce"])*/)$wechatObj->responseMsg();
else$wechatObj->valid();class wechatCallbackapiTest {private function checkSignature() {if(!defined("TOKEN"))throw new Exception('TOKEN is not defined!');$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;if(!isset($signature) && !isset($timestamp) && !isset($nonce))return false;//将所有参数的值进行字符串的字典序排序,拼接成一个字符串进行sha1加密.$data = array($token, $timestamp, $nonce);sort($data, SORT_STRING);return (sha1(implode($data)) == $signature) ? true : false;}public function valid() {$echostr = $_GET["echostr"];if($this->checkSignature()) {echo $echostr;exit;}}public function responseMsg() {//注:微信官方demo是使用$GLOBALS,而我使用的是file_get_contents的形式,来获取转发过来的xml内容.具体php配置不同,应采用不同的形式,请大家注意下,不然后可能粉丝收不到你的公众号回复的消息.//$str = $GLOBALS["HTTP_RAW_POST_DATA"];$str = file_get_contents("php://input");if(!isset($str) || empty($str))exit("");//error_log($str, 3, "err.log");libxml_disable_entity_loader(true);$xml = simplexml_load_string($str, 'SimpleXMLElement', LIBXML_NOCDATA);//各种消息的处理,请自己具体实现^_^switch($xml->MsgType) {case "text": { //文本消息$fmt = "<xml>";$fmt .= "<ToUserName><![CDATA[%s]]></ToUserName>";$fmt .= "<FromUserName><![CDATA[%s]]></FromUserName>";$fmt .= "<CreateTime>%s</CreateTime>";$fmt .= "<MsgType><![CDATA[%s]]></MsgType>";$fmt .= "<Content><![CDATA[%s]]></Content>";$fmt .= "</xml>";$toUserName = $xml->FromUserName;$fromUserName = $xml->ToUserName;$createTime = time();$msgType = "text";$content = "接收方:$xml->ToUserName";$content .= "\n发送方:$xml->FromUserName";$content .= "\n创建时间:$xml->CreateTime";$content .= "\n类型:$xml->MsgType";$content .= "\n内容:$xml->Content";$content .= "\n消息ID:$xml->MsgId";$rs = sprintf($fmt, $toUserName, $fromUserName, $createTime, $msgType, $content);echo $rs;break;}case "image": //图片消息case "voice": //语音消息case "video": //视频消息case "shortvideo": //小视频消息case "location": //地理位置消息case "link": //链接消息case "event": { //事件消息echo "";break;}}}
}
?>

微信公众号开发教程[002]-配置相关推荐

  1. 微信公众号开发教程(一) 验证接入

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 微信公众号开发教程(一)验证接入 本篇文章主要介绍了微信公众号开发接入详细流程,希望对刚接触公众号开发的同学有所帮助,有兴趣的同学可多多关注 ...

  2. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  3. 微信公众号开发教程[019]-新版客服

    新版客服是针对之前文章<<微信公众号开发教程[007]-消息管理-客服消息>>里面提到的客服功能而言的.在其基础上做了很多提升. 首先如果公众号曾经使用过旧版多客服功能,则要在 ...

  4. 微信公众号开发教程[012]-素材管理

    一.关于图文消息,我的理解         我理解中,普通<img><iframe>等标签的src属性,可以跨域,哪里的图片都行.但是公众号的聊天会话界面,放的图片,语音,图文 ...

  5. 微信公众号开发java流程_微信公众号开发教程java 编程语言的特点及选择

    微信公众号开发教程java 编程语言的特点及选择 微信公众号为用户提供了相关的工具,来对微信公众号进行一个简单的开发.但是如果想实现一些复杂的功能,其实还是要借助于一些编程语言的使用.所以要了解,在微 ...

  6. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...

    本文档将对即将推出的微信公众帐号开发系列连载教程做简单的说明. 教程主要是面向有一定 Java 编程基础的朋友, 目录: 微信公众帐号开发教程第 1 篇-引言  2 微信公众帐号开发教程第 2 篇-微 ...

  7. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

  8. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  9. 微信公众号开发教程[001]-引言

    最近这几天沉静下来想一想,以后的路该怎么走.心里大概有个思路,转向微信,微博的开发和推广.虽然这两项已经火得不行,现在才入行,稍显迟了,但只要努力,总会成功. 这一系列文章,是我学习微信开发的笔记,因 ...

最新文章

  1. Oracle Block浅析2:ITL(Interested Transaction List)
  2. 美团分布式服务治理框架OCTO之二:Mesh化
  3. jQuery下拉框元素操作
  4. Vue axios 上传图片
  5. debian下编译安装poco
  6. 小程序获取openid保存缓存吗_微信小程序把openid放到缓存里
  7. 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
  8. luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串
  9. 被App Store拒绝的N个原因
  10. 在Windows环境下为Python 2.5安装SSL模块
  11. 【多图】Google工程师解析Android系统架构--what is android(转载)
  12. 百度坐标转换GPS坐标
  13. OpenCV C++双目三维重建:双目摄像头实现双目测距
  14. grep的-A-B-选项详解(转)
  15. rocketMq配置外网IP
  16. windows下装ipython
  17. 干货!JNPF快速开发平台功能一览
  18. 搞一下整车以太网技术 | 04 CBS基于信用整形
  19. C语言学习笔记(kk-zkx)
  20. WIN10管理员权限设置、更改用户名被“拒绝访问”

热门文章

  1. SkeyeVSS综合安防Onvif、RTSP、GB/T28181无插件直播点播解决方案之报警中心管理
  2. 【会员电商】备受争议的云集背后,那些鲜为人知的营销“神操作”
  3. pat甲级 第一章 字符串1-10 自用
  4. 原生Mysql之and和or混合使用
  5. 伙伴系统之伙伴系统概述--Linux内存管理(十五)
  6. 独家丨拼流量、拼资源、拼技术—— BaaS已沦为巨头的游戏?
  7. OSChina 周四乱弹 —— 何以解忧,唯有暴富
  8. SAS可以用来做什么?
  9. 郑莉C++教程速成笔记——基础语法
  10. Kindle 转换器