微信开发获取签名wx.config
目录
- 1 开发条件
- 2 在后台使用动态url方式获取signature
- 3 改为接口进行访问
1 开发条件
1 申请一个微信公众号,并确认在开发–接口权限中拥有分享功能的权限。
2 公众号设置–功能设置:在JS接口安全域名中添加安全域名,这个安全域名不是url,只需添加一级域名即可。
3 开发,基本配置中,需要获得开发者id,开发者密码,ip白名单,ip白名单是服务器的ip。
4 获得jsapi_ticket:
先获取access_token:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
接口调用获取:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
参数 说明
grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret
获取jsapi_ticket https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
5 signature获取:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
2 在后台使用动态url方式获取signature
前台:
$(document).ready(function(){initPage();});function initPage() {//alert(window.location.href);/***用于获得当前连接url用**//***用户点击分享到微信圈后加载接口接口*******/$.post("/business/businessAction.do?method=getSharData",{"url":location.href.split('#')[0]},function(data,status){data=eval("("+data+")");console.log(data);wx.config({debug: false,appId: 'wx071f25226923fc00',timestamp:data.timestamp,nonceStr:data.nonceStr,signature:data.signature,jsApiList: ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','hideOptionMenu',]});wx.ready(function(){wx.hideOptionMenu();/***隐藏分享菜单****/ }); });};
后台:
import java.util.UUID;
import java.util.Map;
import java.util.HashMap;
import java.util.Formatter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.io.UnsupportedEncodingException;
/**
*用来获得微信验证的所有参数
*/
public class Sign {public static void main(String[] args) {String jsapi_ticket = "bxLdikRXVbTPdHSM05e5u7pfX712TBiu6cLRUR0dNkywjZCMepIQeCTufMFPO6ARKcFQ1B_SkwMCD1MlAS-96Q";// 注意 URL 一定要动态获取,不能 hardcodeString url = "http://vip.cioe.cn";Map<String, String> ret = sign(jsapi_ticket, url);for (Map.Entry entry : ret.entrySet()) {System.out.println(entry.getKey() + ", " + entry.getValue());}};public static Map<String, String> sign(String jsapi_ticket, String url) {Map<String, String> ret = new HashMap<String, String>();String nonce_str = create_nonce_str();String timestamp = create_timestamp();String string1;String signature = "";//注意这里参数名必须全部小写,且必须有序string1 = "jsapi_ticket=" + jsapi_ticket +"&noncestr=" + nonce_str +"×tamp=" + timestamp +"&url=" + url;System.out.println(string1);try{MessageDigest crypt = MessageDigest.getInstance("SHA-1");crypt.reset();crypt.update(string1.getBytes("UTF-8"));signature = byteToHex(crypt.digest());}catch (NoSuchAlgorithmException e){e.printStackTrace();}catch (UnsupportedEncodingException e){e.printStackTrace();}ret.put("url", url);ret.put("jsapi_ticket", jsapi_ticket);ret.put("nonceStr", nonce_str);ret.put("timestamp", timestamp);ret.put("signature", signature);return ret;}private static String byteToHex(final byte[] hash) {Formatter formatter = new Formatter();for (byte b : hash){formatter.format("%02x", b);}String result = formatter.toString();formatter.close();return result;}private static String create_nonce_str() {return UUID.randomUUID().toString();}private static String create_timestamp() {return Long.toString(System.currentTimeMillis() / 1000);}
}
3 改为接口进行访问
@ApiOperation(value = "2.获取企业微信签名", notes = "2.获取企业微信签名")@ApiImplicitParams({@ApiImplicitParam(name = "url", paramType = "query", value = "url" ,required = true)})@GetMapping("/getSign")public ResponseEntity<Map<String, String>> getSign(String url) throws ApiException {AccessTokenVO accessToken = WeComUtil.getAccessToken();String access_token = accessToken.getAccess_token();ResponseEntity<String> forEntity = restTemplate.getForEntity("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + access_token, String.class);String body = forEntity.getBody();com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(body);String ticket = jsonObject.getString("ticket");Map<String, String> sign = Sign.sign(ticket, url);return new ResponseEntity<>(sign,HttpStatus.OK);}@ApiOperation(value = "3.获取微信公众号签名", notes = "3.获取微信公众号签名")@ApiImplicitParams({@ApiImplicitParam(name = "url", paramType = "query", value = "url" ,required = true)})@GetMapping("/getWechatMpSign")public ResponseEntity<Map<String, String>> getWechatMpSign(String url) throws ApiException {AccessTokenVO mpAccessToken = WeChatMpUtil.getMpAccessToken();String access_token = mpAccessToken.getAccess_token();ResponseEntity<String> forEntity = restTemplate.getForEntity("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi", String.class);String body = forEntity.getBody();com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(body);String ticket = jsonObject.getString("ticket");Map<String, String> sign = Sign.sign(ticket, url);return new ResponseEntity<>(sign,HttpStatus.OK);}
微信开发获取签名wx.config相关推荐
- 微信开发:配置 wx.config 实现图像接口(详细配置 wx.config 接口)
前言 描述一下大概的应用场景,就是微信的移动端需要拍摄实时图像上传,然后传输到后台,由于我们需要的是直接可以显示的图片,所以要转换成 base 加密后的图片,然后放到 img 标签里进行展示 概述 ...
- Android开发之微信支付获取签名小工具分享
老套路,先看图: 大家支付的时候下面的签名一般是如何弄出来的? 1.一个字母一个字母手写?容易出错 2.用QQ截图然后使用QQ的图片文字识别功能?(我一般用这个) 但是都特别麻烦,于是乎我自己把微信官 ...
- 微信开发获取地理位置实例(java,非常详细,附工程源码)
在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一些必要的配置,以及如何调用微信接口. 2.微信开发之通过代理调试 ...
- 微信开发 - 获取用户地理位置定位
在项目的逻辑业务当中,有时候需要获取用户当前所在的地理位置.那么,我们怎么去获取用户的地理位置定位呢? 可以采用百度地图接口获取用户的地理位置定位.要使用该服务,你得先注册成为百度地图开发者.http ...
- 微信开发--获取用户信息中文乱码的解决方案
为什么80%的码农都做不了架构师?>>> 在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq ...
- 微信开发获取access_token(凭证)接口的详解
在微信开发中,就有一些接口会涉及到获取接口凭证的接口,开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp142114018 ...
- 微信开发--获取用户信息 48001 问题
获取用户信息接口:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID 我用的是这个接口 ...
- 微信开发获取昵称乱码 emoji表情
起因: 由于数据库及属性一致设为utf8,而utf8只支持1-3个字节.当用户昵称为emoji表情时,获取用户基本信息时会乱码. 解决步骤: 升级mysql到5.5以上,即建库时可以使用utf8mb4 ...
- android开发获取签名错误,android开发打包签名出现-failed to export application的解决思路...
在app发布到应用平台的时候需要打包签名,这个时候会遇到一些头疼的事情,比如打包失败会出现failed to export application错误等.我这里就给大家讲一下我的深刻体会.本文为什么说 ...
- mysql保存emoji表情(比如微信开发用户昵称)
使用mysql数据库的时候,如果字符集是UTF-8并且在php服务器上,当存储emoji表情的时候,会抛出以上异常(比如微信开发获取用户昵称,有的用户的昵称用的是emoji的图像) 这是由于字符集不支 ...
最新文章
- 无法远程分发安装软件原因
- [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一
- 《libGDX移动游戏开发从入门到精通》一第2章 libGDX的架构分析
- 移动通信网络频段大全,含5G、4G,各种公开频段汇总
- 使用pyspider爬取巨量淘宝MM图片
- oracle high watermark,Elasticsearch high disk watermark 问题
- 1001:Hello,World!
- python使用redis_使用Redis和Python构建自行车共享应用
- swoole mysql 连接池_基于Swoole的通用连接池 - 数据库连接池
- 专业摄影旗舰!vivo X30系列正式发布:支持60倍超级变焦
- 新手CrossApp 之demo SecondViewController小结
- linux查看是否安装了dns,Linux系统怎么查看和修改DNS配置
- 如何像专业人士一样使用 Google 学术搜索
- 计算机和软件专业大学排名,全国计算机软件专业大学排名TOP20,清华居然不是第一!...
- PHP获取上周一,获取指定日期的上周日期,上周一
- Excel 解决高次方程求解的方法
- 树莓派 zero 通过 max31865 连接 PT100 热电阻 测量温度
- Mysql中的三种循环
- js获取时间戳,将时间戳转换为年月日时分秒
- 迪士尼也追踪游客数据,但它为什么没有被批判?
热门文章
- Greenplum小把戏 - 官方布尔类型转换为文本类型(bool to text)的进步
- 用python画一条虚线_Python3 tkinter基础 Canvas create_line 画实线与虚线
- 两个对称正定阵的乘积是正定的吗?
- ‘lengths‘ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor
- 华为薪资等级结构表_2018华为等级工资表一览
- 《Android开发偶遇有趣算法问题》---获得地图方圆r米内的一个随机坐标点(求单位圆内随机点)
- 拼接、比较与计算——哥德尔读后之十四
- android 视频解决方案,短视频SDK升级为短视频解决方案
- iphoneX适配-客户端H5页面
- 美国大学计算机科学专业研究生排名,美国大学计算机科学专业研究生排名介绍...