‘壹’ 如何使用微信sdk java版
1.首先我们新建一个Java开发包WeiXinSDK
2.包路径:com.ansitech.weixin.sdk
测试的前提条件:
假如我的公众账号微信号为:vzhanqun
我的服务器地址为:http://www.vzhanqun.com/
下面我们需要新建一个URL的请求地址
我们新建一个Servlet来验证URL的真实性,具体接口参考
http://mp.weixin.qq.com/wiki/index.php?title=接入指南
3.新建com.ansitech.weixin.sdk.WeixinUrlFilter.java
这里我们主要是获取微信服务器法师的验证信息,具体验证代码如下
[java] view plain print?
package com.ansitech.weixin.sdk;
import com.ansitech.weixin.sdk.util.SHA1;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WeixinUrlFilter implements Filter {
//这个Token是给微信开发者接入时填的
//可以是任意英文字母或数字,长度为3-32字符
private static String Token = "vzhanqun1234567890";
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("WeixinUrlFilter启动成功!");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
//微信服务器将发送GET请求到填写的URL上,这里需要判定是否为GET请求
boolean isGet = request.getMethod().toLowerCase().equals("get");
System.out.println("获得微信请求:" + request.getMethod() + " 方式");
if (isGet) {
//验证URL真实性
String signature = request.getParameter("signature");// 微信加密签名
String timestamp = request.getParameter("timestamp");// 时间戳
String nonce = request.getParameter("nonce");// 随机数
String echostr = request.getParameter("echostr");//随机字符串
List<String> params = new ArrayList<String>();
params.add(Token);
params.add(timestamp);
params.add(nonce);
//1. 将token、timestamp、nonce三个参数进行字典序排序
Collections.sort(params, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
//2. 将三个参数字符串拼接成一个字符串进行sha1加密
String temp = SHA1.encode(params.get(0) + params.get(1) + params.get(2));
if (temp.equals(signature)) {
response.getWriter().write(echostr);
}
} else {
//处理接收消息
}
}
@Override
public void destroy() {
}
}
好了,不过这里有个SHA1算法,我这里也把SHA1算法的源码给贴出来吧!
4.新建com.ansitech.weixin.sdk.util.SHA1.java
[java] view plain print?
/*
* 微信公众平台(JAVA) SDK
*
* Copyright (c) 2014, Ansitech Network Technology Co.,Ltd All rights reserved.
* http://www.ansitech.com/weixin/sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ansitech.weixin.sdk.util;
import java.security.MessageDigest;
/**
* <p>Title: SHA1算法</p>
*
* @author qsyang<[email protected]>
*/
public final class SHA1 {
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
/**
* Takes the raw bytes from the digest and formats them correct.
*
* @param bytes the raw bytes from the digest.
* @return the formatted bytes.
*/
private static String getFormattedText(byte[] bytes) {
int len = bytes.length;
StringBuilder buf = new StringBuilder(len * 2);
// 把密文转换成十六进制的字符串形式
for (int j = 0; j < len; j++) {
buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
}
return buf.toString();
}
public static String encode(String str) {
if (str == null) {
return null;
}
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(str.getBytes());
return getFormattedText(messageDigest.digest());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
5.把这个Servlet配置到web.xml中
[html] view plain print?
<filter>
<description>微信消息接入接口</description>
<filter-name>WeixinUrlFilter</filter-name>
<filter-class>com.ansitech.weixin.sdk.WeixinUrlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>WeixinUrlFilter</filter-name>
<url-pattern>/api/vzhanqun</url-pattern>
</filter-mapping>
好了,接入的开发代码已经完成。
6.下面就把地址URL和密钥Token填入到微信申请成为开发者模式中吧。
‘贰’ 微信公众平台发送客服消息基于java怎么实现,求具体代码谢谢
这个代码可能比较多。。看微信公众平台的api,里面写的很清楚,其实就是一个http请求,加上指定的报文就可以了,用java写还比较简单的。。
‘叁’ 如何使用jsp开发微信公众平台,或者使用java语言开发公众平台
一句话 按照微信的规定开发:网络微信公众号开API ; 申请服务器 ; 申请公众号 ;绑定 ,开通权限等 ;我们一直在用 jsp 、java开发。
‘肆’ java有哪些免费的开放api平台类似安卓的聚合数据平台。想找一些有趣的接口开发微信公众号
网络 api store 里面有接口 有免费的
公众号 安卓巴士 android开发者门户
‘伍’ 微信公众平台,开发者配置,“请求URL超时”问题解决
在进行微信公众平台,开发配置时,出现一系列问题,在此记录,与网友共享:
1.服务器配置,需要填写url,但不知该如何填写,后经查阅,得知,所填url必须为可访问的接口,于是重新按网友提供的思路,整理接口如下,一共两个类文件:
package com.**.**.wxgzh.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.jubao.dling.wxgzh.utils.CheckUtil;
import io.swagger.annotations.Api;
@RestController
@RequestMapping(value="/wxgzh")
@Api(description="微信公众号操作")
public class WeiXinController {
@RequestMapping(value="/getWxInform",method=RequestMethod.GET)
@ResponseBody
public String getWeiXinMethod(HttpServletRequest request) throws IOException{
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
if(CheckUtil.checkSignature(signature, timestamp, nonce)){
return echostr;
}
return "error";
}
}
package com.**.**.wxgzh.utils;
import java.security.MessageDigest;
import java.util.Arrays;
public class CheckUtil {
private static final String token = "yuliusa2018";
public static boolean checkSignature(String signature,String timestamp,String nonce){
String[] arr = new String[]{token,timestamp,nonce}; //排序 Arrays.sort(arr);
//生成字符串
StringBuffer content = new StringBuffer();
for(int i=0;i>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (Exception e) {
return null;
}
}
}
2.回到公众号平台,进行配置,注意token随便写,但必须和接口中定义的token保持一致
3.点击提交,出现【系统错误,请稍后重试】
对上错误进行排查,最终把端口号443去掉,然后在提交,居然又出现“请求URL超时”,如下:
查阅网上的各种方案都没解决,后看到有网友说可能是服务器配置低,于是换了台服务器,竟然提交成功了。
以上记录是自己开发过程中的问题总结,也希望能帮助他人。
‘陆’ 如何实现java程序与微信公众平台之间实现消息推送
java程序与微信公众平台之间实现消息推送方法:‘柒’ 微信API是什么意思
微信api即为公众平台消息接口为开发者提供了一种新的消息处理方式。
微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。
‘捌’ 《微信公众平台应用开发方法、技巧与案例》epub下载在线阅读,求百度网盘云资源
《微信公众平台应用开发》(柳峰)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1IqH140HJQ10-TTXZWwRvPQ
书名:微信公众平台应用开发
作者:柳峰
豆瓣评分:5.9
出版社:机械工业出版社
出版年份:2014-3
页数:319
内容简介:
本书是目前微信公众平台应用开发领域内容最全面、系统和深入的一本书,也是技术版本最新的。由着名的资深微信公众平台应用开发工程师根据最新的微信5.1版撰写,全面解读了微信公众平台开放的所有API的各项功能和用法,系统讲解了微信公众平台应用开发的流程、方法和技巧。更为重要的是,它还深入讲解了微信公众平台应用开发的高级技术和技巧,如何与LBS等多种技术结合使用,如何调用其他第三方的数据和资源,等等。实战性非常强,包含大量小案例和3个有代表性的综合案例。
全书共11章,分为四个部分:第一部分(第1~2章)介绍了公众平台的使用、公众账号的认证、编辑模式的使用等基础知识;第二部分(第3~4章)首先讲解了如何启用开发模式,然后详细讲解了公众平台的消息接口(包括请求校验、请求消息、事件推送和响应消息),包含一个能够接收与响应任何类型消息的项目,读者可以将该项目导出成WAR包,作为公众平台的基础开发包(适用于订阅号和服务号),在开发公众账号时,只需要关注业务逻辑;第三部分(第5~6章)重点介绍了公众平台的自定义菜单接口和高级接口,并配有完整的接口调用示例和说明,读者可以将这部分的接口调用代码作为公众平台的高级开发包;第四部分(第7~11章)首先总结了一些实用的公众平台开发技巧,如使用表情、识别微信浏览器、图文消息使用、公众账号无响应处理、服务多个账号等,然后逐步详细地讲解了“周边搜索”、“猜数字”(游戏)和“聊天机器人”3个综合案例的开发过程,其中还包含如何与其他技术的结合使用及如何调用第三方的数据和资源,学习完本部分,读者完全有能力胜任大型企业公众账号的开发。附录为公众平台接口的返回码说明,以及公众平台接口的调用次数限制说明。
作者简介:
刘运强,网名“柳峰”,资深微信公众平台应用开发工程师,国内微信公众平台应用开发的先驱之一,项目经验丰富。他还是一位资深的Java软件开发工程师和Android/iOS移动应用开发工程师,活跃于CocoaChina、OSChina、CSDN等社区,并在CSDN博客撰写了系列微信公众平台二次开发的教程,深受欢迎并被广泛传播,也因此获得CSDN博客移动开发版块的“博客冠军”。
‘玖’ 微信公众号开发之模板消息
欢迎留言、转发
微信极速开发系列文章: 点击这里
此文来聊聊微信中的业务通知----微信模板消息
其实这个问题很简单,在 【微信公众平台】 现在已经可以直接查看 自己 的公众号都能使用那些接口。
登录 【微信公众平台】 进入首页>添加插件功能>找到模板消息按照指引流程操作即可。
关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。
按照上文 添加模板消息插件 之后 【微信公众平台】 首页左侧栏就会出现 模板消息 菜单,收取点击进去需要同意协议并设置公众账号服务所处的2个行业。
以上设置好了就可以通过关键词查模板库中已有的模板,如果没有找到可以自己申请。
找到合适的模板消息点击详情,进去查看模板详情,如果需要添加即可。添加完成会在我的模板中生成模板消息的 模板ID , 模板ID 在后面会用到。
com.javen.weixin.controller.WeixinMsgController.java
官方参考文档 具体实现 com.jfinal.weixin.sdk.api.TemplateMsgApi.java
json数据的封装
com.jfinal.weixin.sdk.api.TemplateData.java
‘拾’ 一个java后台网站如何给微信公众号(android)做api
应该是公众号上自定义菜单的接口吧。根据菜单需求提供对应的接口就行了。