小程序Openid 获取,服务器 encryptedData 解密 遇到的坑

获取客户 openId 和 unionId 需要以下步骤(都为必须步骤)

1.从验证从客户端传上来code, 获取sessionKey (需要配合小程序appid ,secret 发送到微信服务器)

$params = [
   'appid' => $this->appid,
   'secret' => $this->secret,
   'js_code' => $this->code,
   'grant_type' => $this->grant_type
];

 2.获取到微信服务器 返回信息
(通过客户端传来的 原始数据 + 获取的sessionKey 与客户端传来的 签名对比)

$signature = sha1($this->rawData . $this->sessionKey);
if ($signature !== $this->signature){ return $this->ret_message("signNotMatch"."sessionKey 签名不匹配"); }

3.重要环节:

通过 服务器返回的 session_key 解密 客户端上传的加密数据

/* 3.通过 服务器返回的 session_key 解密 客户端上传的加密数据
* 需要参数
* [
     "appid"=>$this->appid,
     "sessionKey"=>$sessionKey,
     "encryptedData"=>$this->encryptedData,
     "iv"=>$this->iv,
    ];
*/

 

坑:客户端上传的 encryptedData 需要用encodeURIComponent方法进行URL编码,对应服务端需要URL解码

坑:客户端上传的 encryptedData 需要用encodeURIComponent方法进行URL编码,对应服务端需要URL解码

坑:客户端上传的 encryptedData 需要用encodeURIComponent方法进行URL编码,对应服务端需要URL解码

重要的事情说三遍!

小程序:

encodeURIComponent(data.encryptedData);//一定要把加密串转成URL编码

对应服务端需要进行URL解码 否则出现解密结果 为NULL的错误

 服务端

<?php
//php 端接受数据 时做url解码
$encryptedData=urldecode($_GET["encryptedData"]);

 

转载于:https://www.cnblogs.com/zjhblogs/p/9082304.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值