0

0

微信开发之准备阶段的图文代码介绍

黄舟

黄舟

发布时间:2017-04-18 10:19:44

|

1743人浏览过

|

来源于php中文网

原创

  微信开发之准备阶段


所需资源:

1、微信公众平台账号

2、百度BAE平台账号

一、    微信公众账号申请  

登录微信公众平台    在右上角有注册

微信开发之准备阶段0

填写相关资料进行注册,在此我注册的是个人订阅号,如果有公司信息可以注册服务号。另外由于个人订阅号接口有限,对于个人开发不是很有利,微信还提供了测试账号,专为开发人员使用,进入如下地址申请测试号          微信开发之准备阶段1



微信开发之准备阶段2微信开发之准备阶段3

测试号权限对于开发来说还是很不错的~

由于微信接入开发者模式需要提供可供微信服务器发送请求的url地址所以你的服务端必须能接入公网,可以使用花生壳等dns服务商,在此由于我用的是小区宽带不能解析,所以改用了百度的bae,没有公网ip的可以试试,初步接入测试感觉挺方便的,,用百度账号就可登陆,需要注意的是在bae使用中要用svn等管理应用,但是用户名又不支持中文所以如果百度账号是中文的朋友还是重新注册一个英文的吧,

接下来准备工作做完了就开始编写代码成为微信公众平台的开发者吧,以下代码出自柳峰老师博客

核心类:

package com.vlive.action.connector;  
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.vlive.utils.SignUtil;  
public class URlresponse extends HttpServlet{  
    @Override  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
         // 微信加密签名    
        String signature = req.getParameter("signature");    
        // 时间戳    
        String timestamp = req.getParameter("timestamp");    
        // 随机数    
        String nonce = req.getParameter("nonce");    
        // 随机字符串    
        String echostr = req.getParameter("echostr");    
        PrintWriter out = resp.getWriter();    
        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败    
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {    
            out.print(echostr);    
        }    
        out.close();    
        out = null;    
    }  
}


此类用到 signutil的checksignature方法:      

标小兔AI写标书
标小兔AI写标书

一款专业的标书AI代写平台,提供专业AI标书代写服务,安全、稳定、速度快,可满足各类招投标需求,标小兔,写标书,快如兔。

下载

package com.vlive.utils;  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
import java.util.Arrays;  
public class SignUtil {  
    private static String token="vlive";  
    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;    
    }    
}

以下是web.xml

  
  
     
      
        URlresponse    
            
           com.vlive.action.connector.URlresponse    
            
        
        
        
        URlresponse    
        /urlresponse    
        
    
    index.jsp  
    


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

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


相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.7万人学习

Rust 教程
Rust 教程

共28课时 | 4.5万人学习

Vue 教程
Vue 教程

共42课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号