前言:
由于微信使用的越来越多,也让大多数平台或者APP与微信建立了比较深的合作关系,我们公司自主研发的产品也是比较依赖于微信,最近也写了几篇关于微信的博客,本文针对在微信浏览器中使用微信自身的控件进行调用,主要介绍微信自定义分享功能,当然微信暴露出来的接口并不能让你直接调起他们的分享控件,只能自定义分享内容,然后手动触发微信右上角的...
进行间接的分享,另外就是微信的扫一扫功能,扫一扫分为两种,一种是直接返回扫码内容,另一种就是让微信自主处理,跳转处理后的结果页面。
由于我的博客都比较注重代码,今天呢依旧是一样的,当然也会介绍操作步骤
第一、登录公众平台设置满足条件
1、设置-公众号设置-功能设置-JS安全域名(JSSDK接口访问域名)
注:
MP_verify_SksIbfInd6JMk57k.txt
该文件必须下载保存到服务器域名所在的根路径,如果不知道是否放置正确,可以根据访问地址进行判断。例如:域名为t.link.cn
,那么可以通过t.link.cn/MP_verify_SksIbfInd6JMk57k.txt
进行直接访问,如果存在返回结果,那么配置成功,如果没有返回结果或者找不到路径,则表示放置的位置不正确
2、设置-公众号设置-功能设置-网页授权域名(必须与JS安全域名一致)
3、开发-基础配置-IP白名单(设置接口可访问的IP地址)
3、创建WxCommon.java
(公共配置文件)
package com.casom.base.wechat.common;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Map;
import org.springframework.core.io.ClassPathResource;
import com.casom.base.wechat.entity.wx.AccessToken;
import com.casom.base.wechat.entity.wx.JsapiTicket;
/**
* 微信公共配置
*
*/
public class WxCommon implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 微信公众号唯一标识
*/
public static final String APP_ID = "";
/**
* 微信公众密码
*/
public static final String APP_SECRET = "";
/**
* 获取access_token的地址
*/
public static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APP_ID&secret=APP_SECRET";
/**
* 获取微信临时票据的地址
*/
public static final String JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
/**
* access_token文件名
*/
public static final String ACCESS_TOKEN_FILE_NAME = "access_token.txt";
/**
* jsapi-ticket文件名
*/
public static final String JSAPI_TICKET_FILE_NAME = "jsapi_ticket.txt";
/**
* 保存access_token
*/
public static final String ACCESS_TOKEN_FILE_PATH = "/js-sdk/" + ACCESS_TOKEN_FILE_NAME;
/**
* 保存jsapi-ticket
*/
public static final String JSAPI_TICKET_FILE_PATH = "/js-sdk/" + JSAPI_TICKET_FILE_NAME;
/**
* 获取resources目录下的源文件
*
* @param path
* @return
*/
public static ClassPathResource getResource(String... paths) {
return new ClassPathResource(paths.length == 0 ? ACCESS_TOKEN_FILE_PATH : paths[0]);
}
/**
* Linux系统
*/
public static final class Linux {
/**
* access_token 存储地址
*/
public static final String SAVE_FILE_PATH_ACCESS_TOKEN = "/usr/local/src/temp/wechat";
/**
* jsapi_ticket 存储地址
*/
public static final String SAVE_FILE_PATH_JSAPI_TICKET = "/usr/local/src/temp/wechat";
}
/**
* Windows系统
*/
public static final class Windows {
/**
* access_token 存储地址
*/
public static final String SAVE_FILE_PATH_ACCESS_TOKEN = "F:\\temp\\wechat";
/**
* jsapi_ticket 存储地址
*/
public static final String SAVE_FILE_PATH_JSAPI_TICKET = "F:\\temp\\wechat";
}
/**
* 得到保存的地址
*
* @return
*/
public static File initFile(String... fileNames) {
String filePath = "";
if (System.getProperty("os.name").toLowerCase().contains("linux")) {
if (fileNames.length == 0 || ACCESS_TOKEN_FILE_NAME.equals(fileNames[0])) {
filePath = Linux.SAVE_FILE_PATH_ACCESS_TOKEN;
} else {
filePath = Linux.SAVE_FILE_PATH_JSAPI_TICKET;
}
} else {
if (fileNames.length == 0 || ACCESS_TOKEN_FILE_NAME.equals(fileNames[0])) {
filePath = Windows.SAVE_FILE_PATH_ACCESS_TOKEN;
} else {
filePath = Windows.SAVE_FILE_PATH_JSAPI_TICKET;
}
}
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
File writeFile = new File(filePath, fileNames.length == 0 || ACCESS_TOKEN_FILE_NAME.equals(fileNames[0])
? ACCESS_TOKEN_FILE_NAME : JSAPI_TICKET_FILE_NAME);
if (!writeFile.exists()) {
try {
writeFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return wr