微信JSSDK实现微信自定义分享,微信扫一扫

前言:
由于微信使用的越来越多,也让大多数平台或者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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值