weichat 开发入门 微信

简介: 微信开发入门   ngrok 下载  http://download.csdn.net/download/knight_black_bob/9121979     ngrok 公网映射 ngrok -config ngrok.

微信开发入门

 

ngrok 下载

 http://download.csdn.net/download/knight_black_bob/9121979

 

 

ngrok 公网映射
 ngrok -config ngrok.cfg -subdomain curiousby 8080
获得 公网地址
http://curiousby.tunnel.mobi
http://www.tunnel.mobi/  这个网站停止运行了,所以连不上,请下载2.0.17或者2.0.19的版本,直接用ngrok的服务器,命令为:ngrok http 8080

  

 

 

 

 web.xml

  <servlet>
  	<servlet-name>weichatServlet</servlet-name>
  	<servlet-class>com.curiousby.cn.WeichatServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>weichatServlet</servlet-name> 
  	<url-pattern>/weichat.do</url-pattern>
  </servlet-mapping>

 

 WeichatServlet.java

package com.curiousby.cn;

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.curiousby.cn.util.WeichatCheckUtils;
 

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:06:42 
 * des:
 */
public class WeichatServlet extends HttpServlet{

	 
	private static final long serialVersionUID = 1L;
	private String signature; //微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
	private String timestamp; // 时间戳
	private String nonce; //随机数
	private String echostr; //随机字符串
	
	

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException { 
		signature = req.getParameter("signature");
		timestamp = req.getParameter("timestamp");
		nonce = req.getParameter("nonce");
		echostr = req.getParameter("echostr");
		System.out.println("signature timestamp  nonce  echostr  " + signature +" " + timestamp +" " + nonce  + " " + echostr ); 
		PrintWriter out = resp.getWriter();
        if (WeichatCheckUtils.checkSignature(signature, timestamp, nonce)) {
            out.print(echostr);
        }

	}
	 
}

 

 

 

CommonUtils.java

 

public class CommonUtils {

	public static String ArrayToString (String [] arr){
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < arr.length; i++) {
			sb.append(arr[i]);
		}
		return sb.toString();
	}
}

 

ShaUtils.java

package com.curiousby.cn.util;

import java.security.MessageDigest;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:36:04 
 * des:
 */
public class ShaUtils {

	private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
		'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
	
	
	public static String getSha1(String str){
		if (str == null || str.length() ==0) {
			return null;
		}
		
		try{
			
			MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
			messageDigest.update(str.getBytes("UTF-8"));
			
			byte[] md = messageDigest.digest(); 
			int j  = md.length;
			char [] buf  = new char[j*2];
			int k = 0;
			
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				buf[k++] =HEX_DIGITS[byte0 >>> 4 & 0xf ];
				buf[k++] =HEX_DIGITS[byte0  & 0xf ];
			}
			System.out.println(" before sha1 str :"+ str +"\r\n after sha1  string : "+new String(buf));
			return new String(buf);
		}catch(Exception e){
			return null;
		}
	}
}

 

 WeichatCheckUtils.java

package com.curiousby.cn.util;

import java.util.Arrays;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年9月20日 下午2:14:46 
 * des:
 */
public class WeichatCheckUtils {

	
	private static final String TOKEN ="xxxx";
	
	public  static boolean checkSignature(String signature, String timestamp,String nonce){
		String[] str = { TOKEN, timestamp, nonce };
		 Arrays.sort(str); // 字典序排序
		String string = CommonUtils.ArrayToString(str);
		
		String temp = ShaUtils.getSha1(string);
		
		
		 return temp.equals(signature);
	}
	
}

  

 

 

接入成功!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

目录
相关文章
|
2月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
2月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
3月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
150 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
6月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1314 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
5月前
|
监控 数据可视化 数据处理
微信养号脚本,全自动插件,AUTOJS开发版
这是一套自动化微信养号工具,包含主脚本`wechat_auto.js`与配置文件`config.json`。主脚本实现自动浏览朋友圈、随机阅读订阅号文章及搜索指定公众号三大功能,支持自定义滚动次数、阅读时长等参数。代码通过随机化操作间隔模拟真实用户行为,具备完善的错误处理和日志记录功能。配套UI模块提供可视化操作界面,可实时监控任务状态与运行日志,便于调整参数设置。控制器部分扩展了批量数据处理能力,如学生信息的增删改查操作,适用于多场景应用。下载地址:https://www.pan38.com/share.php?code=n6cPZ 提取码:8888(仅供学习参考)。
|
7月前
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
7月前
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
8月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
3110 11
|
9月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
2860 7

热门文章

最新文章