微信小程序 php解密获取手机号 + -41003错误

 

 

public function getInfo()
    {
        if (IS_POST) {
            $post = input('post.');
            require VENDOR_PATH . 'wechatgetphone/wxBizDataCrypt.php';
            $appInfo = $this->modelObj->getValue('minipro');
            //通过code获得 access_token + openid
            $url = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appInfo['appId']
                . "&secret=" . $appInfo['appSecret'] . "&js_code=" . $post['code'] . "&grant_type=authorization_code";

            $jsonResult = file_get_contents($url);
            if (!empty($jsonResult)) {
                $resultArray = json_decode($jsonResult, true);
                $post['encryptedData'] = urldecode($post['encryptedData']);
                $post['iv'] = urldecode($post['iv']);
                $pc      = new \WXBizDataCrypt($appInfo['appId'], $resultArray['session_key']);
                $errCode = $pc->decryptData($post['encryptedData'], $post['iv'], $data);

                if ($errCode == 0) {
                    exit($data);
                } else {
                    exit(json_encode($errCode));
                }
            }
        }
    }

此处需要注意的是,很多人解密的时候会报-41003
这是因为传过来的encryptedData的值有问题,
一定要在小程序端使用encodeURIComponent()进行数据编码后再传,
不然+号会变成空格,然后一直解密不成功......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值