微信开发之准备阶段

微信开发之准备阶段

所需资源:

1、微信公众平台账号

2、百度BAE平台账号
一、微信公众账号申请
登录微信公众平台https://mp.weixin.qq.com/在右上角有注册
填写相关资料进行注册,在此我注册的是个人订阅号,如果有公司信息可以注册服务号。另外由于个人订阅号接口有限,对于个人开发不是很有利,微信还提供了测试账号,专为开发人员使用,进入如下地址申请测试号http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login



测试号权限对于开发来说还是很不错的~
由于微信接入开发者模式需要提供可供微信服务器发送请求的url地址所以你的服务端必须能接入公网,可以使用花生壳等dns服务商,在此由于我用的是小区宽带不能解析,所以改用了百度的bae,没有公网ip的可以试试,初步接入测试感觉挺方便的,地址为http://developer.baidu.com/console,用百度账号就可登陆,需要注意的是在bae使用中要用svn等管理应用,但是用户名又不支持中文所以如果百度账号是中文的朋友还是重新注册一个英文的吧,
接下来准备工作做完了就开始编写代码成为微信公众平台的开发者吧,以下代码出自柳峰老师博客http://blog.csdn.net/lyq8479/article/details/8944988
核心类:
  1. package com.vlive.action.connector;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. import com.vlive.utils.SignUtil;  
  12.   
  13. public class URlresponse extends HttpServlet{  
  14.   
  15.     @Override  
  16.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  17.             throws ServletException, IOException {  
  18.          // 微信加密签名    
  19.         String signature = req.getParameter("signature");    
  20.         // 时间戳    
  21.         String timestamp = req.getParameter("timestamp");    
  22.         // 随机数    
  23.         String nonce = req.getParameter("nonce");    
  24.         // 随机字符串    
  25.         String echostr = req.getParameter("echostr");    
  26.     
  27.         PrintWriter out = resp.getWriter();    
  28.         // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败    
  29.         if (SignUtil.checkSignature(signature, timestamp, nonce)) {    
  30.             out.print(echostr);    
  31.         }    
  32.         out.close();    
  33.         out = null;    
  34.           
  35.     }  
  36.   
  37.   
  38.   
  39. }  
此类用到 SignUtil的checkSignature方法:

  1. package com.vlive.utils;  
  2.   
  3. import java.security.MessageDigest;  
  4. import java.security.NoSuchAlgorithmException;  
  5. import java.util.Arrays;  
  6.   
  7. public class SignUtil {  
  8.     private static String token="vlive";  
  9.     public static boolean checkSignature(String signature, String timestamp, String nonce) {    
  10.         String[] arr = new String[] { token, timestamp, nonce };    
  11.         // 将token、timestamp、nonce三个参数进行字典序排序    
  12.         Arrays.sort(arr);    
  13.         StringBuilder content = new StringBuilder();    
  14.         for (int i = 0; i < arr.length; i++) {    
  15.             content.append(arr[i]);    
  16.         }    
  17.         MessageDigest md = null;    
  18.         String tmpStr = null;    
  19.     
  20.         try {    
  21.             md = MessageDigest.getInstance("SHA-1");    
  22.             // 将三个参数字符串拼接成一个字符串进行sha1加密    
  23.             byte[] digest = md.digest(content.toString().getBytes());    
  24.             tmpStr = byteToStr(digest);    
  25.         } catch (NoSuchAlgorithmException e) {    
  26.             e.printStackTrace();    
  27.         }    
  28.     
  29.         content = null;    
  30.         // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信    
  31.         return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;    
  32.     }    
  33.      /**  
  34.      * 将字节数组转换为十六进制字符串  
  35.      *   
  36.      * @param byteArray  
  37.      * @return  
  38.      */    
  39.     private static String byteToStr(byte[] byteArray) {    
  40.         String strDigest = "";    
  41.         for (int i = 0; i < byteArray.length; i++) {    
  42.             strDigest += byteToHexStr(byteArray[i]);    
  43.         }    
  44.         return strDigest;    
  45.     }    
  46.     
  47.     /**  
  48.      * 将字节转换为十六进制字符串  
  49.      *   
  50.      * @param mByte  
  51.      * @return  
  52.      */    
  53.     private static String byteToHexStr(byte mByte) {    
  54.         char[] Digit = { '0''1''2''3''4''5''6''7''8''9''A''B''C''D''E''F' };    
  55.         char[] tempArr = new char[2];    
  56.         tempArr[0] = Digit[(mByte >>> 4) & 0X0F];    
  57.         tempArr[1] = Digit[mByte & 0X0F];    
  58.     
  59.         String s = new String(tempArr);    
  60.         return s;    
  61.     }    
  62. }  

以下是web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <display-name></display-name>   
  8.   <servlet>    
  9.         <servlet-name>URlresponse</servlet-name>    
  10.         <servlet-class>    
  11.            com.vlive.action.connector.URlresponse    
  12.         </servlet-class>    
  13.     </servlet>    
  14.     
  15.     <!-- url-pattern中配置的/coreServlet用于指定该Servlet的访问路径 -->    
  16.     <servlet-mapping>    
  17.         <servlet-name>URlresponse</servlet-name>    
  18.         <url-pattern>/urlresponse</url-pattern>    
  19.     </servlet-mapping>    
  20.   <welcome-file-list>  
  21.     <welcome-file>index.jsp</welcome-file>  
  22.   </welcome-file-list>  
  23. </web-app>  

至此接入配置就可以开始了


填写相应url和token就可以成为开发者了,祝大家顺利~

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值