小程序
小游戏
企业微信
微信支付
扫描小程序码分享
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
出现这种问题 基本上是前端调用后端签名接口时所传当前url不对。
通常遇到这种情况的话,在分享的页面打印一下当前页面的url 和在wx.init 的页面打印一下url 如果不一样 分享是不会成功的,如果发现不一样的话 需要在wx.init的时候重新做一次init。单页面应用的history模式 会有一部分安卓机器出现这种问题
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
public
Map<String, String> SHA1(String url, String jsapiTicket) {
Map<String, String> map =
new
HashMap<>(
6
);
String nonceStr = getRandomStr(
16
);//生成16位随机字符串
String timestamp = createTimestamp();
String string1;
String signature =
""
; //签名
//注意这里参数名必须全部小写,且必须有序
string1 =
"jsapi_ticket="
+ jsapiTicket +
"&noncestr="
+ nonceStr +
"×tamp="
+ timestamp +
"&url="
+ url;
try
{
MessageDigest digest = MessageDigest
.getInstance(
"SHA-1"
digest.update(string1.getBytes());
byte
messageDigest[] = digest.digest();
StringBuffer hexStr =
StringBuffer();
for
(
int
i =
0
; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] &
0xFF
if
(shaHex.length() <
2
) {
hexStr.append(
}
hexStr.append(shaHex);
signature = hexStr.toString(); //签名
map.put(
"url"
, url);
"jsapi_ticket"
, jsapiTicket);
"nonceStr"
, nonceStr);
"timestamp"
, timestamp);
"signature"
, signature);
return
map;
catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
null
;
这个是签名生成方法
不管谁的问题,仔细比对参数,后端签名方法肯定没有问题了,就是参数没用对
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
出现这种问题 基本上是前端调用后端签名接口时所传当前url不对。
通常遇到这种情况的话,在分享的页面打印一下当前页面的url 和在wx.init 的页面打印一下url 如果不一样 分享是不会成功的,如果发现不一样的话 需要在wx.init的时候重新做一次init。单页面应用的history模式 会有一部分安卓机器出现这种问题
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4
public
Map<String, String> SHA1(String url, String jsapiTicket) {
Map<String, String> map =
new
HashMap<>(
6
);
String nonceStr = getRandomStr(
16
);//生成16位随机字符串
String timestamp = createTimestamp();
String string1;
String signature =
""
; //签名
//注意这里参数名必须全部小写,且必须有序
string1 =
"jsapi_ticket="
+ jsapiTicket +
"&noncestr="
+ nonceStr +
"×tamp="
+ timestamp +
"&url="
+ url;
try
{
MessageDigest digest = MessageDigest
.getInstance(
"SHA-1"
);
digest.update(string1.getBytes());
byte
messageDigest[] = digest.digest();
StringBuffer hexStr =
new
StringBuffer();
for
(
int
i =
0
; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] &
0xFF
);
if
(shaHex.length() <
2
) {
hexStr.append(
0
);
}
hexStr.append(shaHex);
}
signature = hexStr.toString(); //签名
map.put(
"url"
, url);
map.put(
"jsapi_ticket"
, jsapiTicket);
map.put(
"nonceStr"
, nonceStr);
map.put(
"timestamp"
, timestamp);
map.put(
"signature"
, signature);
return
map;
}
catch
(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return
null
;
}
这个是签名生成方法
不管谁的问题,仔细比对参数,后端签名方法肯定没有问题了,就是参数没用对