奇葩啊奇葩
今天遇到一个奇怪的问题,就是在微信中分享 卡片携带标题以及图片的问题。
基本配置 去 微信公众平台 都能找到 , 遇到的问题 去百度 大部分都能解。
我的问题 有个别网页能分享出卡片并且也能携带出卡片的标题,但是也有个别网页分享不出标题与图片 做法都一摸一样 ,可恶啊 排查了好久, 还得打开调试模式 "debug:true" 或者 在微信开发工具中可以看到
有问题的网页都提示了同一个错误”config:fail,invalid signature“,哦 原来是签名的问题, 那问题是我之前没问题的网页 也是这种做法啊。 然后我又去看了官网
终于我看官网上说url的问题,在生成签名的时候也要拼接请求中的参数(key1=value1&key2=value2…) ,我回去看了一下 ,果然成功能分享出卡片的 都是无参url ,那些携带参数的url全部失效 导致签名失败的问题。
我当初的做法是单纯的使用了 request.getRequestURL() 的方法 做了签名参数 ,这也怪自己当初为了省事没细看说明的问题。
改成 request.getRequestURL() + ” ? “ + request.getQueryString() 即可解决
关键代码
String nonceStr = WXPayUtil.generateNonceStr( ); set("appId",WeChatUtil.APPID); long timestamp = new Date( ).getTime( ); set("timestamp", timestamp); set("nonceStr", nonceStr); set("signature", WeChatUtil.getSignature(timestamp + "", nonceStr, getRequest( ).getRequestURL( ).toString( ) + "?"+getRequest().getQueryString()));