今天没事研究了一下后台用es和前端开发一个和微信h5的一个it项目,在验证这块出了问题,老是报63002错误,在前端调用后台接口时候在调用成功函数里给wx.config发的参数赋值,但是签名无效,看过很多办法,,最后解决如下
一,配置easychat的config
`use EasyWeChat\Factory;
$config = [
‘app_id’ => ‘’,//微信appId
‘secret’ => ‘’,//微信秘钥
// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
'response_type' => 'array',
//...
];
a
p
p
=
F
a
c
t
o
r
y
:
:
o
f
f
i
c
i
a
l
A
c
c
o
u
n
t
(
app = Factory::officialAccount(
app=Factory::officialAccount(config);公众号
在此之前,需要安装easywechat
$ composer require overtrue/wechat:~4.0 -vvv
代码实现:
前端代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>分享按钮测试</title>
</head>
<body>
<div>
<p>测试微信分享功能</p>
</div>
<script src="/kandian/js/jquery.1.8.3.min.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.5.0.js"></script>
<script>
$(document).ready(function () {
// alert(location.href.split('#')[0]);
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '<?php echo $jssdk['appId'];?>', // 必填,公众号的唯一标识
timestamp:'<?php echo $jssdk['timestamp'];?>', // 必填,生成签名的时间戳
nonceStr:'<?php echo $jssdk['nonceStr'];?>', // 必填,生成签名的随机串
signature:'<?php echo $jssdk['signature'];?>',
jsApiList:['checkJsApi', 'updateAppMessageShareData', 'updateTimelineShareData']
});
wx.ready(function () {
wx.updateAppMessageShareData({
title: '微信分享接口-分享标题',
desc: '分享文案' ,
link: 'http://t6cws8.natappfree.cc/index/index/share',
imgUrl:'http://t6cws8.natappfree.cc/uploads/20191128/5ddf8436c82388686.jpg' ,
success: function () {
}
});
wx.updateTimelineShareData({
title: '微信分享接口-分享标题',
desc: '分享文案' ,
link: 'http://t6cws8.natappfree.cc/index/index/share',
imgUrl:'http://t6cws8.natappfree.cc/uploads/20191128/5ddf8436c82388686.jpg' ,
type: 'link',
dataUrl: '',
success: function () {
}
});
});
})
</script>
</body>
</html>
后端php代码
use EasyWeChat\Factory;
public function jssdk()
{
if (request()->isAjax()) {
return true;
}
$config = config('account.easywechat2');
$app = Factory::officialAccount($config);
$jssdk = json_encode([]);
try {
$jssdk = $app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'), $debug = true, $beta = false, $json = false);
} catch (\Exception $e) {
var_dump($e->getMessage());die;
}
return $jssdk;
// $this->assign('jssdk',$jssdk);
}
public function share()
{
$jssdk = $this->jssdk();
$this->assign('jssdk',$jssdk);
return $this->fetch('share');
}
希望能够有帮助。