本文的目的是介绍《微信公众平台入门到精通》内容索引的详细情况,特别关注微信公众平台的的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解《微信公众平台入门到精通》内容索引
本文的目的是介绍《微信公众平台入门到精通》内容索引的详细情况,特别关注微信公众平台的的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解《微信公众平台入门到精通》内容索引的机会,同时也不会遗漏关于David Camp 微信公众平台开发官方内容拓展版---PHP版本 qq微信公众平台开发 微信公众平台开发员 微信公众平台开发难、Java微信公众平台开发(一)--接入微信公众平台、Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联、Java微信公众平台开发(1) 接入微信公众平台的知识。
本文目录一览:- 《微信公众平台入门到精通》内容索引(微信公众平台的)
- David Camp 微信公众平台开发官方内容拓展版---PHP版本 qq微信公众平台开发 微信公众平台开发员 微信公众平台开发难
- Java微信公众平台开发(一)--接入微信公众平台
- Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联
- Java微信公众平台开发(1) 接入微信公众平台
《微信公众平台入门到精通》内容索引(微信公众平台的)
《微信公众平台入门到精通》系列教程一直只有编号没有说明,让很多朋友非常烦恼,我也经常在后台看到一些重复的问题,今天就做个简单的索引,希望能够帮到大家!
查看所有教程请在ZTalk公众账号(id:ztalk)里输入“微信教程”,也可以直接输入比如“vol.1”、“vol.2”直接查看。下面是关于所有教程的知识点索引:
《微信公众平台入门到精通》Vol.1:
- 微信公众账号注册
- 微信公众账号设置
- 这章写的较早,现在注册又多了一些内容,等5.0上线了后台大改以后会重新修改下。
《微信公众平台入门到精通》Vol.2:
- 微信公众平台简单介绍
- 微信公众平台数据管理
- 微信公众平台消息管理
- 微信公众平台用户管理
《微信公众平台入门到精通》Vol.3:
- 微信公众平台素材管理
- 新建图文消息
- 快速新建语音、图片、视频消息
- 群发消息及注意事项
《微信公众平台入门到精通》Vol.4:
- 编辑模式介绍
- 消息自动回复设置
- 自定义菜单编辑模式介绍
《微信公众平台入门到精通》Vol.5:
- 编辑模式实例
- 使用被关注自动回复制作首页
- 用关键字自动回复制作一个导航
- 用关键词自动回复制作一个列表
- 用关键词自动回复制作内容查询
《微信公众平台入门到精通》Vol.6:
- 用编辑模式制作一个饭店菜谱
《微信公众平台入门到精通》Vol.7:
- 微信开发模式实例
- 公众平台api接口文档简介(包含一些需要官方授权的)
《微信公众平台入门到精通》Vol.8:
- 微信开发环境搭建之新浪云计算平台(SAE)介绍
- 在SAE上创建第一个应用
- 在SAE上开发第一个应用
《微信公众平台入门到精通》Vol.9:
- 开发模式实例
- 公众平台开发接口与SAE的对接通讯
- 开发模式下被关注回复文字欢迎词
《微信公众平台入门到精通》Vol.10:
- 开发模式实例
- 开发模式下被关注回复图文消息
- SAE下分布式存储服务(可以用来保存封面图片和调试的临时文件,但不建议保存歌曲)
《微信公众平台入门到精通》Vol.11:
- 开发模式实例
- 开发模式自动回复功能
- 回复文字消息
- 回复图文消息
- 回复音乐消息(这个是很多朋友一直在询问的,如何发表情回复音乐……)
《微信公众平台入门到精通》Vol.12:
- 开发模式实例
- 开发模式下接收用户上传图片
- 开发模式下接收用户地理位置
- 天气查询案例
- 开发模式下用户退订消息接收保存
《微信公众平台入门到精通》Vol.13:
- 开发模式实例
- SAE下数据库和缓存的创建和使用
- 又拍云存储的使用,适合存放歌曲等大文件,ZTalk的朋友有福利哦!
《微信公众平台入门到精通》Vol.14-Vol.17:
- 微信通讯录实例
- 通讯录产品设计
- 数据库表的创建
- 通讯录后台程序开发
- 微信用户账号绑定
- 微信用户照片上传保存
- 微信关键字搜索
- 检索资料的翻页(这个就是ZTalk里文章输入mm会显示不同内容的程序介绍,也有很多朋友在问,在第17章的教程里有)
《微信公众平台入门到精通》Vol.18:
- 微信问答系统实例
《微信公众平台入门到精通》番外篇:
- 微信公众平台会议账号创建和介绍
基本就是这些,《微信公众平台入门到精通》Vol.19将会是高端大气的微信抽奖系统,敬请期待!
David Camp 微信公众平台开发官方内容拓展版---PHP版本 qq微信公众平台开发 微信公众平台开发员 微信公众平台开发难
微信公众平台开发(一) 配置接口
微信公众平台开发(二) 微信公众平台示例代码分析
微信公众平台开发(三) 订阅事件(subscribe)处理
微信公众平台开发(四) 简单回复功能开发
微信公众平台开发(五) 天气预报功能开发
立即学习“PHP免费学习笔记(深入)”;
微信公众平台开发(六) 翻译功能开发
微信公众平台开发(七) 聊天机器人功能开发
微信公众平台开发(八) 自定义菜单功能开发
微信公众平台开发(九) 数据库操作
微信公众平台开发(十) 消息回复总结
微信公众平台开发(十一) 功能整合
微信公众平台开发(十二) 发送客服消息
以上就介绍了David Camp 微信公众平台开发官方内容拓展版---PHP版本,包括了微信公众平台开发方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
Java微信公众平台开发(一)--接入微信公众平台
转自:http://www.cuiyongzhi.com/post/38.html
(一)接入流程解析
在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
通过文档我们可以看出其中接入微信公众平台开发,开发者需要按照如下步骤完成:
-
填写服务器配置
-
验证服务器地址的有效性
-
依据接口文档实现业务逻辑
按照上面的逻辑可能是填写服务器配置信息是在第一步,但是我们在真实的开发过程中往往都是先做第二步【编写代码实现验证服务器地址的有效性】,因为没有第二步的完成第一步的配置是不能达到任何效果的!
(二)验证服务器有效性代码编写
按照开发文档我们知道我们的应用服务器需要接受微信服务器的get请求,其中包含四个参数(signature、timestamp、nonce、echostr)然后通过校验方式校验服务器的可靠性,校验方式如下:
-
将token、timestamp、nonce三个参数进行字典序排序
-
将三个参数字符串拼接成一个字符串进行sha1加密
-
开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
①我在这里写了一个工具类去实现其中的前两步,将三个参数排序并返回sha1加密后的字符串,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package
com.cuiyongzhi.wechat.util;
import
java.security.MessageDigest;
import
java.security.NoSuchAlgorithmException;
import
java.util.Arrays;
/**
* ClassName: SignUtil
* @Description: 请求校验工具类
* @author dapengniao
* @date 2016年3月4日 下午6:25:41
*/
public
class
SignUtil {
// 与接口配置信息中的Token要一致
private
static
String token =
"dapengniaowechat"
;
/**
* 验证签名
* @param signature
* @param timestamp
* @param nonce
* @return
*/
public
static
boolean
checkSignature(String signature, String timestamp, String nonce) {
String[] arr =
new
String[] { token, timestamp, nonce };
// 将token、timestamp、nonce三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder content =
new
StringBuilder();
for
(
int
i =
0
; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md =
null
;
String tmpStr =
null
;
try
{
md = MessageDigest.getInstance(
"SHA-1"
);
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte
[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
}
catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
}
content =
null
;
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
return
tmpStr !=
null
? tmpStr.equals(signature.toUpperCase()) :
false
;
}
/**
* 将字节数组转换为十六进制字符串
* @param byteArray
* @return
*/
private
static
String byteToStr(
byte
[] byteArray) {
String strDigest =
""
;
for
(
int
i =
0
; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return
strDigest;
}
/**
* 将字节转换为十六进制字符串
* @param mByte
* @return
*/
private
static
String byteToHexStr(
byte
mByte) {
char
[] Digit = {
''0''
,
''1''
,
''2''
,
''3''
,
''4''
,
''5''
,
''6''
,
''7''
,
''8''
,
''9''
,
''A''
,
''B''
,
''C''
,
''D''
,
''E''
,
''F''
};
char
[] tempArr =
new
char
[
2
];
tempArr[
0
] = Digit[(mByte >>>
4
) &
0X0F
];
tempArr[
1
] = Digit[mByte &
0X0F
];
String s =
new
String(tempArr);
return
s;
}
}
|
②将我们的工具类应用到我们的服务器验证过程中,这里我新建一个controller为WechatSecurity,实现同一个get用于接收参数和返回验证参数,简单代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package
com.cuiyongzhi.wechat.controller;
import
java.io.PrintWriter;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.log4j.Logger;
import
org.springframework.stereotype.Controller;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RequestParam;
import
com.cuiyongzhi.wechat.util.SignUtil;
@Controller
@RequestMapping
(
"/wechat"
)
public
class
WechatSecurity {
private
static
Logger logger = Logger.getLogger(WechatSecurity.
class
);
/**
*
* @Description: 用于接收get参数,返回验证参数
* @param @param request
* @param @param response
* @param @param signature
* @param @param timestamp
* @param @param nonce
* @param @param echostr
* @author dapengniao
* @date 2016年3月4日 下午6:20:00
*/
@RequestMapping
(value =
"security"
, method = RequestMethod.GET)
public
void
doGet(
HttpServletRequest request,
HttpServletResponse response,
@RequestParam
(value =
"signature"
, required =
true
) String signature,
@RequestParam
(value =
"timestamp"
, required =
true
) String timestamp,
@RequestParam
(value =
"nonce"
, required =
true
) String nonce,
@RequestParam
(value =
"echostr"
, required =
true
) String echostr) {
try
{
if
(SignUtil.checkSignature(signature, timestamp, nonce)) {
PrintWriter out = response.getWriter();
out.print(echostr);
out.close();
}
else
{
logger.info(
"这里存在非法请求!"
);
}
}
catch
(Exception e) {
logger.error(e, e);
}
}
@RequestMapping
(value =
"security"
, method = RequestMethod.POST)
// post方法用于接收微信服务端消息
public
void
DoPost() {
System.out.println(
"这是post方法!"
);
}
}
|
那么到这里我们的服务器验证的代码就基本完成了,下面我们就进入验证过程!
(三)服务器验证
这里我用来验证的是我的个人公众号【崔用志】,如果大家有兴趣可以搜索看到的,通过微博认证的一个私人号,当然有想法在这里我们也是可以一起交流的,验证方法如下图:
点击【提交】成功之后如下图所示:
点击图中【启用】即可,那么到这里我们的服务器接入配置就完成了,【下一篇我们将讲述如何接收消息并进行消息处理】,感谢你的翻阅,如有疑问可以留言讨论!
Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联
转自:http://www.cuiyongzhi.com/post/55.html
微信公众平台(map.weixin.qq.com)/开放平台(open.weixin.qq.com)/商户平台(pay.weixin.qq.com)这三个平台不知道大家有没有完全解除到,有人可能因为接触到其中的一个或者两个对其他的有些陌生或者说都不知道他们分别是干什么的,不要紧,那么这篇文章就带领你认知他们,不论你是一个微信开发者还是一个微信运营者,我相信你都会有足够的理由去认知和了解其中的一个或两个!
(一)微信公众平台(map.weixin.qq.com)
官方介绍: 微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。
这个平台是针对普通用户(个人)、企业、组织提供服务的,是运营和开发者的领地!这里说白了就是订阅号、服务号、企业号给我们提供的服务,而微信公众平台也是提供登录、管理和操作处理这三类账号的平台,从注册到最后的登陆、文章发布、用户管理等操作都可以在这里处理,后面简称mp平台!
(二)微信开放平台(open.weixin.qq.com)
官方介绍:开发平台是为微信用户提供服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读本接口文档来帮助开发!
这里主要是开发者的领地!我们可以从官方的介绍中可以发现这个平台主要是为了开发者服务的,其中涉及移动应用、网站应用、公众号开发、公众号第三方平台等有关微信登录、支付以及相关开发文档都可以在这里找到,简直就是微信和其他第三方应用接入的接口大全,后面简称open平台!
(三)微信商户平台(pay.weixin.qq.com)
官方介绍:微信支付是腾讯公司的支付业务品牌,微信支付提供公众号支付、APP支付、扫码支付、刷卡支付等支付方式。微信支付结合微信公众账号,全面打通O2O生活消费领域,提供专业的互联网+行业解决方案,微信支付支持微信红包和微信理财通,是移动支付的首选。
在这个商户平台不仅提供开发者有关的开发文档,而且提供流水记录和红包等相关的运营策略,所以这里是开发者,运营者,财务的领地!所有使用微信支付,不论是扫码支付,app支付等所有的流水订单都可以在这里找到足迹,为我们的每一笔订单提供对账凭证和查询记录,后面简称pay平台!
(四)mp平台、open平台、pay平台直接的关联
在我之前讲述的一些开发过程中我们一直用到一个唯一标识Openid,不知道有没有细心看文档的朋友,会发现在我们的微信开发文档中也有提及到一个唯一标识 UnionID,那么我们一直在用的Openid是不是用错了呢?答案当然是没错,这里容我们来详细讲述下Openid和UnionID之间的关系;
openid的唯一标识是说在我们的微信公众平台下,一个个人微信对一个微信公众平台帐号(这里可以是订阅号、服务号、企业号)的微信标识,但是我们的open平台有个功能是一个开发者账号可以绑定最多10个微信公众平台账号、多个网站应用、多个移动应用,这个时候如何在一个微信开发者账号中识别10个map平台下用户的唯一性呢?这个时候UnionId就出现了,所以他的意义是可想而知的,如果在企业中既存在mp平台账号又存在web应用和移动应用的时候我们为了方便用户的管理和去用户冗余性,在整体的设计中我相信大家都会采用UnionId来做微信登录的唯一标识的;但是回过头来说我们说openid是唯一标识也是没有错的,因为前面的我们的讲解都是针对单个公众平台账号来说的!
商户平台和用户以及mp平台之间的关系又是如何呢?从简单原则上来说mp平台和pay平台之间是一一对应的关系的,但是也存在微信开发者拥有微信支付开发权限存在微信商户子账号的存在,但是无论如何pay平台和用户之间的支付关系都是唯一的都是用过openid来产生的,不论是红包支付还是企业支付其依赖关系都是openid;下面我用我的“简笔画”向大家展示用户、mp平台、open平台、pay平台之间的关系:
Java微信公众平台开发(1) 接入微信公众平台
前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接!
(一)接入流程解析
在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
通过上面我们可以看出其中接入微信公众平台开发,开发者需要按照如下步骤完成:
- 填写服务器配置
- 验证服务器地址的有效性
- 依据接口文档实现业务逻辑
按照上面的逻辑可能是填写服务器配置信息是在第一步,但是我们在真实的开发过程中往往都是先做第二步【编写代码实现验证服务器地址的有效性】,因为没有第二步的完成第一步的配置是不能达到任何效果的!
(二)验证服务器有效性代码编写
按照开发文档我们知道我们的应用服务器需要接受微信服务器的get请求,其中包含四个参数(signature、timestamp、nonce、echostr)然后通过校验方式校验服务器的可靠性,校验方式如下:
- 将token、timestamp、nonce三个参数进行字典序排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
①我在这里写了一个工具类去实现其中的前两步,将三个参数排序并返回sha1加密后的字符串,代码如下:
package com.cuiyongzhi.wechat.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * ClassName: SignUtil * @Description: 请求校验工具类 * @author dapengniao * @date 2016年3月4日 下午6:25:41 */ public class SignUtil { // 与接口配置信息中的Token要一致 private static String token = "dapengniaowechat"; /** * 验证签名 * @param signature * @param timestamp * @param nonce * @return */ public static boolean checkSignature(String signature,String timestamp,String nonce) { String[] arr = new String[] { token,timestamp,nonce }; // 将token、timestamp、nonce三个参数进行字典序排序 Arrays.sort(arr); StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } MessageDigest md = null; String tmpStr = null; try { md = MessageDigest.getInstance("SHA-1"); // 将三个参数字符串拼接成一个字符串进行sha1加密 byte[] digest = md.digest(content.toString().getBytes()); tmpStr = bytetoStr(digest); } catch (NoSuchAlgorithmException e) { e.printstacktrace(); } content = null; // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 return tmpStr != null ? tmpStr.equals(signature.toupperCase()) : false; } /** * 将字节数组转换为十六进制字符串 * @param byteArray * @return */ private static String bytetoStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += bytetoHexStr(byteArray[i]); } return strDigest; } /** * 将字节转换为十六进制字符串 * @param mByte * @return */ private static String bytetoHexStr(byte mByte) { char[] Digit = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; } }
②将我们的工具类应用到我们的服务器验证过程中,这里我新建一个controller为WechatSecurity,实现同一个get用于接收参数和返回验证参数,简单代码如下:
package com.cuiyongzhi.wechat.controller; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.cuiyongzhi.wechat.util.SignUtil; @Controller @RequestMapping("/wechat") public class WechatSecurity { private static Logger logger = Logger.getLogger(WechatSecurity.class); /** * * @Description: 用于接收get参数,返回验证参数 * @param @param request * @param @param response * @param @param signature * @param @param timestamp * @param @param nonce * @param @param echostr * @author dapengniao * @date 2016年3月4日 下午6:20:00 */ @RequestMapping(value = "security",method = RequestMethod.GET) public void doGet( HttpServletRequest request,HttpServletResponse response,@RequestParam(value = "signature",required = true) String signature,@RequestParam(value = "timestamp",required = true) String timestamp,@RequestParam(value = "nonce",required = true) String nonce,@RequestParam(value = "echostr",required = true) String echostr) { try { if (SignUtil.checkSignature(signature,nonce)) { PrintWriter out = response.getWriter(); out.print(echostr); out.close(); } else { logger.info("这里存在非法请求!"); } } catch (Exception e) { logger.error(e,e); } } @RequestMapping(value = "security",method = RequestMethod.POST) // post方法用于接收微信服务端消息 public void DoPost() { System.out.println("这是post方法!"); } }
那么到这里我们的服务器验证的代码就基本完成了,下面我们就进入验证过程!
(三)服务器验证
这里我用来验证的是我的个人公众号【崔用志】,如果大家有兴趣可以搜索看到的,通过微博认证的一个私人号,当然有想法在这里我们也是可以一起交流的,验证方法如下图:
点击【提交】成功之后如下图所示:
点击图中【启用】即可,那么到这里我们的服务器接入配置就完成了,【下一篇我们将讲述如何接收消息并进行消息处理】,感谢你的翻阅,如有疑问可以留言讨论!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
今天关于《微信公众平台入门到精通》内容索引和微信公众平台的的分享就到这里,希望大家有所收获,若想了解更多关于David Camp 微信公众平台开发官方内容拓展版---PHP版本 qq微信公众平台开发 微信公众平台开发员 微信公众平台开发难、Java微信公众平台开发(一)--接入微信公众平台、Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联、Java微信公众平台开发(1) 接入微信公众平台等相关知识,可以在本站进行查询。
本文标签: