失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信接入php指南 微信公众号开发教程01:接入指南

微信接入php指南 微信公众号开发教程01:接入指南

时间:2019-08-31 09:44:42

相关推荐

微信接入php指南 微信公众号开发教程01:接入指南

要成为微信开发者,首先需要进入接入校验,微信相关的接入文档地址为:

具体步骤如下:

一、填写服务器配置

1、申请微信公众号,并登陆:https://mp./

2、填写相关的参数:点击左侧菜单栏中的【开发】中的【基本配置】

3、修改服务器配置:

1)填写URL:/wechat/authenticate(注意需要使用80端口)

2)填写Token:wechat(这个token需要与程序中的token一致)

二、验证服务器地址的有效性

2、该请求会带上四个参数:signature、timestamp、nonce、echostr

3、开发者对参数进行相应的处理后,与signature进行对比,如果相等,则直接输出echostr,代表接入成功,否则接入失败,具体逻辑如下:

1)将token(自定义的)、timestamp、nonce进行字典排序

2)将三个参数拼接着一个字符串

3)将拼接后的字符串进行SHA-1加密

4)将加密后的字符串与signature进行对比

4、具体实现代码如下(为了代码的简洁明了,暂时没使用任何框架):

packagecn.kolbe.wechat.authenticate.controller;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.security.MessageDigest;

importjava.security.NoSuchAlgorithmException;

importjava.util.Arrays;

importjavax.servlet.ServletException;

importjavax.servlet.annotation.WebServlet;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

@WebServlet("/authenticate")

publicclassAuthenticateControllerextendsHttpServlet{

//token可自定义

privatestaticfinalStringTOKEN="wechat";

privatestaticfinallongserialVersionUID=1L;

/**

*微信公众平台接入校验

*/

@Override

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

response.setCharacterEncoding("utf-8");

PrintWriterout=response.getWriter();

//将token,timestamp,nonce三个参数进行字典排序

String[]sourceArray=newString[]{TOKEN,request.getParameter("timestamp"),request.getParameter("nonce")};

Arrays.sort(sourceArray);

//将三个参数字符串拼接成一个字符串

StringBuildersortArray=newStringBuilder();

for(Strings:sourceArray){

sortArray.append(s);

}

//对拼接成功的字符串进行SHA-1加密

StringhexString=byteArrayToHex(sortArray.toString().getBytes());

//将加密过的字符串与signature对比

if(hexString!=null&&hexString.equals(request.getParameter("signature"))){

//如果相等则原样输出echostr,接入成功

out.print(request.getParameter("echostr"));

}else{

//如果不相等,则接入失败

response.setContentType("text/html;charset=utf-8");

out.println("校验失败");

}

out.close();

}

/**

*将字节数组加密后转化成十六进制字符串

*@parambyteArray

*@return

*/

publicStringbyteArrayToHex(byte[]byteArray){

try{

MessageDigestmd=MessageDigest.getInstance("SHA-1");

md.update(byteArray);

byte[]digest=md.digest();

Strings=newString();

StringBuilderresult=newStringBuilder();

for(byteb:digest){

if((s=Integer.toHexString(b)).length()

s=0+s;

}

result.append(s);

}

returnresult.toString();

}catch(NoSuchAlgorithmExceptione){

e.printStackTrace();

}

returnnull;

}

}

三、接入成功

1、如果顺利完成上面两步,并提示接入成功,此时代表已经成功接入微信

2、后续微信会将用户的消息通过Post发送到:/wechat/authenticate,我们可以在AuthenticateController中的doPost方法进行相应的逻辑处理

如果觉得《微信接入php指南 微信公众号开发教程01:接入指南》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。