微信开发01----------接入

一:微信接入原理

  1.1 微信接入的时候,其实是一个doget请求它携带的参数有signature微信加密签名、 timestamp 时间戳、nonce 随机数。我们只要验证定义的token、timestamp、nonce三者通过sha1加密后与signature是否相同,如果相同便可接入成功。服务器课使用花生壳映射http://www.oray.com/。下面介绍下具体代码的编写

  1.2 工具类的编写:主要进行sha1加密  

package com.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 *
 * @author 黄路飞
 *
 * @data 2016年6月16日19:23:00
 */

public class SignUtil {

    //微信接口配置时填写的Token
    private static String token = "weixin";

    /**
     *
     * 校验签名
     * @param signature 微信加密签名
     * @param timestamp 时间戳
     * @param nonce 随机数
     * @return true/false
     */
    public static boolean checkSignature(String signature, String timestamp, String nonce) {
        //字典排序
        String[] paramArr = new String[] { token, timestamp, nonce };
        Arrays.sort(paramArr);

        String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);

        String ciphertext = null;
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            // 对接后的字符串进行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            ciphertext = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return ciphertext != null ? ciphertext.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;
    }

}

  1.3 doget请求处理

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.util.SignUtil;

/**
 *
 * @author 黄路飞
 *
 * @data 2016年6月16日19:34:37
 */
public class CoreServlet extends HttpServlet {

    private static final long serialVersionUID = 2168408682288701938L;

    /**
     * 请求校验(确认请求来自微信服务器)
     */
    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();
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            out.print(echostr);
        }
        out.close();
        out = null;

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

}

  备注:学习要点  1) 字典排序

             2) sha1加密

 二:微信测试号具体接入步骤

    

  

   备注:URL 为花生壳地址+部署项目名+servlet名

     Token 为项目中填写的token 

时间: 2024-10-13 22:27:17

微信开发01----------接入的相关文章

[转]微信开发.Net 接入示例

本文转自:http://my.oschina.net/lcak/blog/219618 微信公众平台接口开发官方仅提供了 PHP 接入示例代码, 网上找到的.Net代码多半需要积分下载, 所以自己写了一个 如下: <%@ Page Language="C#" %> <script runat="Server" > //此处TOKEN可以自行修改 public const String TOKEN = "weixin_kevinlc&

JAVA微信开发-新手接入指南

相信很多人对微信开发已经不那么陌生,我也是从一个微信开发的菜鸟经过各种问题的折磨,然后去搜索引擎搜索各种文章阅读,但是基本都是零散的资料,没有一个统一.系统的阐述微信应用如何开发.作者结合自己的实际开发经验,归纳整理出来分享给微信开发的入门者或正在研究的开发者. 这篇文章主要阐述如何搭建一个微信开发平台.古人云:“磨刀不负砍才工”.我们开发应用也需要准备一些必要的条件.  准备工作   1.  下载 Jdk1.7  安装 2.  下载 Tomcat 7.0 3.  下载 Myeclipse 6.

使用delphi+intraweb进行微信开发1--微信平台接入

iw14.0.50来了,在新的版本中最吸引我的就是增加了完善的httphandler功能:终于可以直接在地址栏输入url打开iw功能页面了:可以自由使用EasyUI等js框架了:显示模式对话框也不再七绕八绕惹人烦了:呵呵,我感觉iw第一次接近主流web开发工具了! 兴奋过了,来尝试一下吧.其实iw的坑还是挺多的,虽然已经接近主流了,但是,后面慢慢都会说到… 1.新建一个iw工程,选择Stand Alone Server / Service,这种模式下进行开发是最理想的,调试很方便,正式发布时可以

C#微信开发小白成长教程二(新手接入指南,附视频)

距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入开发者的服务器. 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 举个形象的例子:比如在抗战时期,各个军队之间需要进行通讯,在战场上军情的保密是很重要的.所以A.B两个军队事先约定好了接头的暗号(token),所有的书

[转载红鱼儿]delphi 实现微信开发(2)接入微信公众号平台

先要学习一下接入的资料,在这里,因为原理都在,所以一定要认真阅读,然后,利用Delphi实现一个对应函数: function CheckSignature(const signature, timestamp, nonce, token: string): boolean; var strs: TStringList;   tmpStr: string; begin strs := TStringList.Create;   try     strs.Add(token);     strs.A

weixin4j微信开发-零开发新手接入

其实在weixin4j中,已经为大家提供了一个默认的消息接入Filter,大家只需要将jar包引入,然后配置一下web.xml和weixin4j.properties,然后部署web项目,也可以实现新手接入. 首先先展示一下默认的Filter源码 /* * 微信公众平台(JAVA) SDK * * Copyright (c) 2014, Ansitech Network Technology Co.,Ltd All rights reserved. * * http://www.weixin4j

php微信开发接入指南

最近因为学长的项目需要,我被派去研究微信的开发= =. 稍微有那么一点心得,写下来,以便以后回头来看. 首先注册微信公众号,申请测试账号什么的我就不细说了. 一.关于微信公众号接入网址 这是从开发者文档上面弄下来的,下图就是接入的地方,在开发者中心-服务器的配置, 看一下微信开发者文档是怎么说的 URL:就是你的服务器的URL(要能响应TOKEN验证,还要能在外网访问到这个服务器,因为自己有服务器用就不说多了,没有服务器的可以用SAE,在上面申请,不过好像要实名认证,) TOKEN:这个算是自己

记微信开发(图灵机器人接入)

记微信开发(图灵机器人接入) 效果图: ()申请APIKEY步骤略) code: <?php/** * wechat php test */ //define your tokendefine("TOKEN", "jiekou");//定义识别码$wechatObj = new wechatCallbackapiTest();$wechatObj->responseMsg();//$wechatObj->valid(); class wechatC

微信开发系列----01.开发者的资格

利用第三方的SDK[Senparc.Weixin.MP]来开发属于自己的微信公众号. 此项目的GitHub地址:https://github.com/Andyahui/xgyxsh_WeiXin 这个系列是自己做的一个dome,主要想通过这个练习理清微信开发的基本流程和网站开发的思路,学会在项目实战中学习知识,使自己朝大牛的路上更近一步. 废话不多说--进入主题. 一:开发工具大礼包 微信公众平台开发者API: 微信公众号平台接口调试工具: Senparc.Weixin.MP的github地址:

微信开发系列----01:成为开发者

利用第三方的SDK[Senparc.Weixin.MP]来开发属于自己的微信公众号. 此项目的GitHub地址:https://github.com/Andyahui/xgyxsh_WeiXin 这个系列是自己做的一个dome,主要想通过这个练习理清微信开发的基本流程和网站开发的思路,学会在项目实战中学习知识,使自己朝大牛的路上更近一步. 废话不多说--进入主题. 一:开发工具大礼包 微信公众平台开发者API:    http://mp.weixin.qq.com/wiki/home/index