微信小程序checkSessionKey签名方法

以下是PHP版实现,重点是,checkSessionKey接口要求加密的内容是空的,不能给空数组,需要对空字符串加密。(不包含openid,accesstoken,sig_method等)

hash_hmac加密时,key是用户的sessionKey。

private function signature(array &$data, string $openid): string
{
    $sessionKey = $this->getSessionKey($openid);
    $s = empty($data) ? "" : json_encode($data);
    return hash_hmac('sha256', $s, $sessionKey);
}



private function sign(array &$data, string $openid): array
{
	$data['signature'] = $this->sign($data, $openid);
	$data['sig_method'] = 'hmac_sha256'; // 固定参数
	$data['access_token'] = "后端保存的access_token";
	$data['openid'] = $openid;// 用户openid
	
	return $data;
}

$data = [];
$this->sign($data, $openid);

// 以下是laravel的http客户端请求方法,重点是签名完的数据用http_build_query拼接成query,并发送get请求。
$response = Http::acceptJson()->get('https://api.weixin.qq.com/wxa/checksession', http_build_query($data));

 

        

  • 当前日期:
  • 北京时间:
  • 时间戳:
  • 今年的第:18周
  • 我的 IP:3.128.153.112
农历
五行
冲煞
彭祖
方位
吉神
凶神
极简任务管理 help
+ 0 0 0
Task Idea Collect