EasyWeChat 公众号 jssdk 获取签名 功能 ------> 公众号自定义分享

使用easyWeChat  官方文档上描述的  前端直接使用会出现 签名错误   errMsg":"config:fail,invalid signature

https://easywechat.com/5.x/basic-services/jssdk.html

/**
	 * 公众号签名
	 * @return void
	 * @throws \Psr\SimpleCache\InvalidArgumentException
	 */
	public function getOfficialAccount1()
	{
		$url = $this->request->param('url');
		$config = [
			'app_id' => 'your app_id',
			'secret' => 'your app_secret',

			// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
			'response_type' => 'array',

			//...
		];

		$app    = Factory::officialAccount($config);

		if($url)
		{
//			$url = explode('#',$request->url);
			$app->jssdk->setUrl(urldecode($url));
		}

		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),true),true);

		$this->success("获取成功",$data);


	}

使用 https://www.weixinsxy.com/jssdk/#menu-location 查看权限

返回值---->  singtrue  提示  errMsg":"config:fail,invalid signature

解决  获取token  jsapi_ticket 来验证 签名是否正确

验证签名 ----->https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign


	public function getOfficialAccount()
	{
		$url = $this->request->param('url');

		$config =  [
			'app_id' => 'your app_id',
			'secret' => 'your app_secret',

			// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
			'response_type' => 'array',

			//...
		];
		$app    = Factory::officialAccount($config);
		$access_token = $app->access_token->getToken();
		$jsapi_ticket = $app->jssdk->getTicket();


		if($url)
		{
//			$url = explode('#',$url);
			$app->jssdk->setUrl(urldecode($url));
//			$app->jssdk->setUrl($url);
		}
//		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),true),true);
		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),false),true);

//		$info = ['access_token'=>$access_token,'jsapi_ticket'=>$jsapi_ticket];
//		$this->success("",['info'=>$info,'data'=>$data]);

		$signature = "jsapi_ticket=".$jsapi_ticket['ticket']."&noncestr=".$data['nonceStr']."&timestamp=".$data['timestamp']."&url=".$url;
		$res = [
			"debug"=>$data['debug'],
			"beta"=>$data['beta'],
			"jsApiList"=>$data['jsApiList'],
			"openTagList"=>$data['openTagList'],
			"appId"=>$data['appId'],
			"nonceStr"=>$data['nonceStr'],
			"timestamp"=>(string)$data['timestamp'],
			"url"=>$data['url'],
			'signature_old'=>$signature,
			'jsapi_ticket'=>$jsapi_ticket['ticket'],
			'access_token'=>$access_token['access_token'],
			"signature"=>sha1($signature),
		];
		$this->success("获取成功",$res);
	}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值