weixin.popular.util.JsUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of weixin-popular Show documentation
Show all versions of weixin-popular Show documentation
The weixin-popular is a JAVA SDK for weixin. Weixin web url is https://mp.weixin.qq.com.
package weixin.popular.util;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.codec.digest.DigestUtils;
public abstract class JsUtil {
//2.5.3 2.8.2 更新
public static final String[] ALL_JS_API_LIST = {
//基础接口--------------------
"checkJsApi", //判断当前客户端版本是否支持指定JS接口
//分享接口--------------------
"onMenuShareTimeline", //分享到朋友圈
"onMenuShareAppMessage", //分享给朋友
"onMenuShareQQ", //分享到QQ
"onMenuShareWeibo", //分享到腾讯微博
"onMenuShareQZone", //分享到QQ空间
//图像接口--------------------
"chooseImage", //拍照或从手机相册中选图
"previewImage", //预览图片
"uploadImage", //上传图片
"downloadImage", //下载图片
//音频接口--------------------
"startRecord", //开始录音
"stopRecord", //停止录音
"onVoiceRecordEnd", //监听录音自动停止
"playVoice", //播放语音
"pauseVoice", //暂停播放
"stopVoice", //停止播放
"onVoicePlayEnd", //监听语音播放完毕
"uploadVoice", //上传语音
"downloadVoice", //下载语音
//智能接口-------------------
"translateVoice", //识别音频并返回识别结果
//设备信息-------------------
"getNetworkType", //获取网络状态
//地理位置-------------------
"openLocation", //使用微信内置地图查看位置
"getLocation", //获取地理位置
//摇一摇周边-----------------
"startSearchBeacons", //开启查找周边ibeacon设备
"stopSearchBeacons", //关闭查找周边ibeacon设备
"onSearchBeacons", //监听周边ibeacon设备
//界面操作-------------------
"hideOptionMenu", //隐藏右上角菜单
"showOptionMenu", //显示右上角菜单
"closeWindow", //关闭当前网页窗口
"hideMenuItems", //批量隐藏功能按钮
"showMenuItems", //批量显示功能按钮
"hideAllNonBaseMenuItem", //隐藏所有非基础按钮
"showAllNonBaseMenuItem", //显示所有功能按钮
//微信扫一扫-----------------
"scanQRCode", //调起微信扫一扫
//微信小店-------------------
"openProductSpecificView", //跳转微信商品页
//微信卡券-------------------
"chooseCard", //拉取适用卡券列表并获取用户选择信息
"addCard", //批量添加卡券
"openCard", //查看微信卡包中的卡券
//微信支付-------------------
"chooseWXPay" //发起一个微信支付
};
/**
* 生成 config接口 signature
* @param noncestr noncestr
* @param jsapi_ticket jsapi_ticket
* @param timestamp timestamp
* @param url url
* @return sign
*/
public static String generateConfigSignature(String noncestr,String jsapi_ticket,String timestamp,String url){
Map map = new HashMap();
map.put("noncestr", noncestr);
map.put("jsapi_ticket", jsapi_ticket);
map.put("timestamp", timestamp);
map.put("url", url);
Map tmap = MapUtil.order(map);
String str = MapUtil.mapJoin(tmap,true,false);
return DigestUtils.shaHex(str);
}
/**
* 生成 config接口注入权限验证 JSON
* @param jsapi_ticket jsapi_ticket
* @param debug debug
* @param appId appId
* @param url url
* @param jsApiList 可以为空
* 基础接口
*checkJsApi 判断当前客户端版本是否支持指定JS接口
* 分享接口
*onMenuShareTimeline 分享到朋友圈
*onMenuShareAppMessage 分享给朋友
*onMenuShareQQ 分享到QQ
*onMenuShareWeibo 分享到腾讯微博
*onMenuShareQZone 分享到QQ空间
* 图像接口
*chooseImage 拍照或从手机相册中选图
*previewImage 预览图片
*uploadImage 上传图片
*downloadImage 下载图片
* 音频接口
*startRecord 开始录音
*stopRecord 停止录音
*onVoiceRecordEnd 监听录音自动停止
*playVoice 播放语音
*pauseVoice 暂停播放
*stopVoice 停止播放
*onVoicePlayEnd 监听语音播放完毕
*uploadVoice 上传语音
*downloadVoice 下载语音
* 智能接口
*translateVoice 识别音频并返回识别结果
* 设备信息
*getNetworkType 获取网络状态
* 地理位置
*openLocation 使用微信内置地图查看位置
*getLocation 获取地理位置
* 摇一摇周边
*startSearchBeacons 开启查找周边ibeacon设备
*stopSearchBeacons 关闭查找周边ibeacon设备
*onSearchBeacons 监听周边ibeacon设备
* 界面操作
*hideOptionMenu 隐藏右上角菜单
*showOptionMenu 显示右上角菜单
*closeWindow 关闭当前网页窗口
*hideMenuItems 批量隐藏功能按钮
*showMenuItems 批量显示功能按钮
*hideAllNonBaseMenuItem 隐藏所有非基础按钮
*showAllNonBaseMenuItem 显示所有功能按钮
* 微信扫一扫
*scanQRCode 调起微信扫一扫
* 微信小店
*openProductSpecificView 跳转微信商品页
* 微信卡券
*chooseCard 拉取适用卡券列表并获取用户选择信息
*addCard 批量添加卡券
*openCard 查看微信卡包中的卡券
微信支付
*chooseWXPay 发起一个微信支付
* @return 配置JSON数据
*/
public static String generateConfigJson(String jsapi_ticket,boolean debug,String appId,String url,String... jsApiList){
long timestamp = System.currentTimeMillis()/1000;
String nonceStr = UUID.randomUUID().toString();
String signature = generateConfigSignature(nonceStr, jsapi_ticket, timestamp + "", url);
Map map = new LinkedHashMap<>();
map.put("debug", debug);
map.put("appId", appId);
map.put("timestamp", timestamp);
map.put("nonceStr", nonceStr);
map.put("signature", signature);
map.put("jsApiList", jsApiList == null ? ALL_JS_API_LIST : jsApiList);
return JsonUtil.toJSONString(map);
}
/**
* 生成微信支付JSON
* @since 2.8.1
* @param prepay_id 预支付订单号
* @param appId appId
* @param key 商户支付密钥
* @return json
*/
public static String generateChooseWXPayJson(String prepay_id,String appId,String key){
String json = PayUtil.generateMchPayJsRequestJson(prepay_id, appId, key);
json = json.replaceAll("\"timeStamp\"","\"timestamp\"")
.replaceAll(",?\"appId\":\"[^\"]*\",?","");
return json;
}
}