微信目前为止 就会报这么一个错误。不管哪里错都是这个一个提示。慢慢猜,总有一天可以猜到的。 很幸运,我的问题我猜到了。 看看你获取jsapi_ticket的时候,那个url对不对。type=jsapi还是type=wx_card。 两天的坑总结的经验
微信h5好友分享出现 config:invalid signature微信h5好友分享出现 config:invalid signature,通过官方签名工具看的是没问题的,各位大神有遇到过吗
2019-09-29看看你获取jsapi_ticket的时候,那个url对不对。type=jsapi还是type=wx_card。 两天的坑总结的经验
63002,invalid signature?公众号开发,调分享 一直提示这个错误; 加密出来的密文和微信官方的工具加密出来的是一样的 也确定了appid没错 wx6d6ae50f960508a5
2019-09-29虽然url的可能性大,但是写死可以测出来。 看看你获取jsapi_ticket的时候,那个url对不对。type=jsapi还是type=wx_card。 两天的坑总结的经验 送给坑里的兄弟,希望微信早日倒闭
JSSDK调用,怎么一直提示invalid signature?调用微信JSSDK一直提示无效签名,用微信提供的工具检查了签名,都是比对得上的,也按照官方文档对url进行截取掉#,前后台的appid也是一样的,还是出现invalid signature,然后同样的前后台代码,用我同事的电脑调用是可以调微信jssdk的摄像头接口的,防火墙也是关闭了,都不行,这是什么问题呢? [图片] [图片] 下面是调用的代码 $(function(){ $(".butt").bind("click",function(){ console.log((location.href.split('#')[0])) var signUrl = encodeURIComponent(window.location.href.split('#')[0]); $.ajax({ url: "http://hzf.free.idcfengye.com/ncgascip-app/weixinsdk/config", method: "post", data: { url: signUrl }, success: function (data) { console.log(data); console.log("wx.config() ---> 接收后台返回的参数"); wx.config({ debug: true, appId: "wx7728a7e3070b5acd", timestamp: data.data.timestamp, nonceStr: data.data.nonceStr, signature: data.data.signature, jsApiList: [ 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'chooseWXPay', 'getLocalImgData' ] }); wx.error(function (res) { console.log(res); }); wx.ready(function(){ wx.chooseImage({ count: 1, // 默认9 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { $("#photolist").html(""); //每次选择图片完成后都清空之前已经添加的html节点 let rows = ""; //声明一个空字符串用于保存循环出来的html // var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 images.localId = images.localId.concat(res.localIds); if (window.__wxjs_is_wkwebview) { //判断ios是不是用的 wkwebview 内核 for (var i = 0; i < images.localId.length; i++) { wx.getLocalImgData({ //循环调用 getLocalImgData localId: res.localIds[i], // 图片的localID success: function(res) { var localData = res.localData; // localData是图片的base64数据,可以用img标签显示 localData = localData.replace('jgp', 'jpeg'); //iOS 系统里面得到的数据,类型为 image/jgp,因此需要替换一下 ioslocId.push(localData) //把base64格式的图片添加到ioslocId数组里 这样该数组里的元素都是base64格式的 rows = ""; for (var j = 0; j < ioslocId.length; j++) { rows += `<div class = "z_file" style = "background-image: url(` + ioslocId[j] + `);height:100px;"> <div class = "delete"data - id = "` + j + `" > </div></div> `; } $("#photolist").html(rows); }, fail: function(res) { alert("res"); } }); } alert(rows) } else { //如果不是用的wkwebview 内核 或者是用的安卓系统 执行下面的循环 $.each(images.localId, function(index, el) { rows += `<div class = "z_file" style = "background-image: url(` + el + `); height:100px;" > <div class = "delete" data-id= "` + index + `"> </div></div>`; } ); $("#photolist").html(rows); } } }); }) } }); }); });后台代码 package com.ucap.ncgascip.app.controller.weixin; import com.ucap.ncgascip.app.util.WeiXinUtil; import com.ucap.ncgascip.base.data.RestResultBuilder; import com.ucap.ncgascip.base.data.ResultModel; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Formatter; import java.util.HashMap; import java.util.Map; import java.util.UUID; @RestController @RequestMapping("/weixinsdk") public class WeixinJsSdkController { private static final String jsapi_ticket = ""; @RequestMapping(value = "/config") public ResultModel getConfig(@RequestParam(name = "url") String url) { System.out.println(url); Map<String, String> ret = new HashMap<>(); String jsapi_ticket = WeiXinUtil.getJsapiTicket(); System.out.println(URLDecoder.decode(url)); ret = sign(jsapi_ticket,URLDecoder.decode(url)); return RestResultBuilder.builder().data(ret).build(); } public 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 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 String create_nonce_str() { return UUID.randomUUID().toString(); } private String create_timestamp() { return Long.toString(System.currentTimeMillis() / 1000); } } public synchronized static String getJsapiTicket() { //将用户信息写入redis String jsApiTicket = null; String key = WX_JSAPITICKET; // 获取redis的微信token Object jsApiTicketObject = CacheUtil.getCache(CacheCodeEnum.APPWEB.getValue()).get(key); if (jsApiTicketObject != null) { jsApiTicket = String.valueOf(jsApiTicketObject); } else { try { Ticket ticket = getJsSdkComponent().getJsApiTicket(); if (ticket != null) { jsApiTicket = ticket.getTicket(); long overTime = ticket.getExpires_in() / 60; CacheUtil.getCache(CacheCodeEnum.APPWEB.getValue()).add(key, jsApiTicket, overTime); logger.info("catch的jsApiTicket值" + jsApiTicket); } } catch (Exception e) { e.printStackTrace(); } } return jsApiTicket; }
2019-09-29本来想骂人,不过搞定了心情特别好,所以就不骂人了。 反正就是坑。不要相信是url的问题 问题点: 在获取jsapi_ticket的时候,https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=access_token&type=jsapi 在微信的js接口当中 type不是固定的,微信也不会告诉你是干什么的。反正你自己猜测就好了。 type=jsapi获取的是 wx.config使用的 type=wx_card获取的是卡包使用的
wx.config的时候总是报错63002,什么原因?[图片] 心好累,两天了。总是这个错误! 贴一下后台的打印,前台的打印,报错的信息。 [图片] [图片] [图片] [图片] jsapi_ticket:IpK_1T69hDhZkLQTlwsAX-mH_18Uyfme0Wr7TmuOGnwlAYQ2vHhLsR8DHjLOAChBFNIsT0NPFFyOxy6p2BL0gQ url:http://ym.15822255455.com/chezhihui/wechat/home.html string1:jsapi_ticket=IpK_1T69hDhZkLQTlwsAX-mH_18Uyfme0Wr7TmuOGnwlAYQ2vHhLsR8DHjLOAChBFNIsT0NPFFyOxy6p2BL0gQ&noncestr=832049ec69942b72×tamp=1569671258&url=http://ym.15822255455.com/chezhihui/wechat/home.html signature:1aae25e4c7881c9f371c15bf679169d9e76a6dc5 json:{"debug":true,"jsApiList":["chooseWXPay","getLocation","scanQRCode"],"signature":"1aae25e4c7881c9f371c15bf679169d9e76a6dc5","appId":"","nonceStr":"832049ec69942b72","timestamp":"1569671258"} 哪个大神能帮忙解答一下吗?
2019-09-29是的,公众号的
模板消息带图片[图片]
2019-09-28问题解决了吗? 怎么解决的? 我也遇到同样的问题了。 一直63002,直接把以前项目上的代码搬过来也是这个报错
微信公众号开发调用jssdk,配置时总是 invalid signature ,提示非法签名?首先贴上必要信息: 开发者ID(AppID):wx3806a4c78e7bf173 原始ID:gh_2314fcde77a4 [图片] [图片] 以上是公众号本身的配置 接下来放一下,我这边的config代码 [代码]const modeList = [[代码][代码] [代码][代码]'updateAppMessageShareData'[代码][代码],[代码][代码] [代码][代码]'updateTimelineShareData'[代码][代码],[代码][代码] [代码][代码]'onMenuShareAppMessage'[代码][代码],[代码][代码] [代码][代码]'onMenuShareTimeline'[代码][代码],[代码][代码]];[代码] [代码]const initConfig = async (res) => {[代码][代码] [代码][代码]const options = {[代码][代码] [代码][代码]debug: !isProd,[代码][代码] [代码][代码]appId: res.appId, [代码][代码]// 必填,公众号的唯一标识[代码][代码] [代码][代码]timestamp: res.timestamp, [代码][代码]// 必填,生成签名的时间戳[代码][代码] [代码][代码]nonceStr: res.nonceStr, [代码][代码]// 必填,生成签名的随机串[代码][代码] [代码][代码]signature: res.signature, [代码][代码]// 必填,签名,见附录1[代码][代码] [代码][代码]jsApiList: modeList,[代码][代码] [代码][代码]}[代码][代码] [代码][代码]console.log([代码][代码]'config options::----------------------------'[代码][代码], options);[代码][代码] [代码][代码]wx.config(options);[代码][代码] [代码][代码]// ready[代码][代码] [代码][代码]wx.ready(() => {[代码][代码] [代码][代码]console.log([代码][代码]'config success::----------------------------'[代码][代码]);[代码][代码] [代码][代码]// 分享到朋友圈[代码][代码] [代码][代码]wx.updateTimelineShareData({[代码][代码] [代码][代码]title: [代码][代码]''[代码][代码], [代码][代码]// 分享标题[代码][代码] [代码][代码]link: [代码][代码]''[代码][代码], // 分享链接[代码][代码] [代码][代码]imgUrl: [代码][代码]''[代码][代码], [代码][代码]// 分享图标[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// 用户确认分享后执行的回调函数[代码][代码] [代码][代码]},[代码][代码] [代码][代码]cancel: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// 用户取消分享后执行的回调函数[代码][代码] [代码][代码]},[代码][代码] [代码][代码]});[代码][代码] [代码][代码]// 分享给朋友[代码][代码] [代码][代码]wx.updateAppMessageShareData({[代码][代码] [代码][代码]title: [代码][代码]''[代码][代码], [代码][代码]// 分享标题[代码][代码] [代码][代码]link: [代码][代码]''[代码][代码], // 分享链接[代码][代码] [代码][代码]imgUrl: [代码][代码]''[代码][代码], [代码][代码]// 分享图标[代码][代码] [代码][代码]desc: [代码][代码]''[代码][代码], [代码][代码]// 分享描述[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// 用户确认分享后执行的回调函数[代码][代码] [代码][代码]},[代码][代码] [代码][代码]cancel: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// 用户取消分享后执行的回调函数[代码][代码] [代码][代码]},[代码][代码] [代码][代码]});[代码][代码] [代码][代码]})[代码][代码] [代码][代码]// error[代码][代码] [代码][代码]wx.error((res) => {[代码][代码] [代码][代码]console.log([代码][代码]'catch config error :: =============== ::'[代码][代码], res);[代码][代码] [代码][代码]})[代码][代码]}[代码]以上代码执行之后出现如下问题 [代码]{[代码][代码] errMsg: [代码][代码]"config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][]"[代码][代码] jsApiList: [][代码][代码]}[代码]差了错误代码之后,发现是非法签名,好了,我先去了https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign这个校验网站校验了,signature 没有问题两边一致,但是config一直提示非法。 然后我去了https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html这边看常见解决办法。试了个遍。然而并没有效果,另外,恕我直言这个文档真实辣鸡。可能你们的核心已经是小程序了,但是小程序的BUG也一堆没修。 [图片] 然后吐槽一下,这个错误码的返回,之前有返回过config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][undefind] 这样的格式,还不容易变成 config:fail,Error: 系统错误,错误码:63002,invalid signature [20190919 17:06:41][] 这样我也不知道啥问题,就这几个参数,咱写写明白行不,URL错就提示URL错,就一个签名错误???wtf,这里太笼统了! 好了说到URL错,好网上说99%的错误都是URL导致的,好的尝试了各种办法,并没有什么用,已经调试了不知道几天了,最后只能哀求官方帮我解决一下,帮我看看问题到底在哪里,头发都要秃了。 我用的是SPA (vue) HASH模式(https://xxx.com/#/)取得地址为 https://xxx.com/ 单凡我有一点办法都不会来这请教 综上,请赐教!求快速反馈! 顺便吐槽,标题为什么一定要问号,我就是个陈述句,阐述问题而已!
2019-09-28楼主解决了吗?分享一下啊
模板消息顶部带有图片[图片] 模板消息顶部带有图片,想问下这个是接入了对应插件还是需要对应的api接口?
2019-07-23解决了吗?能不能分享一下?
模板消息怎么带图片?如下图,在公众号内发出了一笔消费成功通知带图片(像是广告)的模板消息(在公众号内的不是微信支付的消费凭证)。这是怎么做到的?MP后台需要添加新的插件?开发者需要调用什么接口? [图片]
2019-07-23