您的位置:首页 > 移动开发 > 微信开发

微信开发入门1--成为开发者

2015-04-14 21:13 232 查看
用Java实现成为微信开发者

1、微信开发的数据交互方式

公众平台消息接口为开发者提供了与用户进行消息交互的能力。对于成功接入消息接口的公众账号,当用户发消息给公众账号时,微信公众平台服务器会使用HTTP请求对接入的网址进行消息推送,第三方服务器可通过响应包返回个性的回复,从而达到回复消息的目的。简单地说,就是公众账号可以使用自己的程序来和用户对话。(摘自http://book.2cto.com/201309/33610.html)

2、微信开发者的服务支持

由以上数据交互方式开出看出,必须有 微信公众平台、第三方服务器

3、成为微信开发者

成为微信开发者要通过修改配置,即填写URL、token、和生成EncodingAESKey

认证有servlet完成,代码要有一下代码文件

//weixinServlet.java第三方服务器的入口

public class weixinServlet extends HttpServlet{

private static final long serialVersionUID = 4440739483644821986L;

/**

* 确认请求来自微信服务器

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 微信加密签名

String signature = request.getParameter("signature");

// 时间戳

String timestamp = request.getParameter("timestamp");

// 随机数

String nonce = request.getParameter("nonce");

// 随机字符串

String echostr = request.getParameter("echostr");

PrintWriter out = response.getWriter();

// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败

if (SignUtil.checkSignature(signature, timestamp, nonce)) {

out.print(echostr);

}

out.close();

out = null;

}

}

//SignUtil.java签名校验文件在servlet文件中调用

public class SignUtil {

// 与接口配置信息中的Token要一致

private static String token ="jdl";

/**

* 验证签名

* @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]; // 取一个字节的高4位,然后获得其对应的十六进制字符

tempArr[1] = Digit[mByte & 0X0F];// 取一个字节的低4位,然后获得其对应的十六进制字符

String s = new String(tempArr);

return s;

}

}

//配置web.xml文件的servlet

<servlet>

<servlet-name>weixinServlet</servlet-name>

<servlet-class>com.yc.servlets.weixinServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>weixinServlet</servlet-name>

<url-pattern>/weixinServlet</url-pattern>

</servlet-mapping>

做到这里,准备工作已经完成以下的步奏我只是提示一下

1、在新浪云上发布你的项目

2、将token、URL填写,生成EncodingAESKey

3、选择明文模式

4、提交

注意:URL是项目的URL+/weixinServlet
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: