小程序获取手机号

16 篇文章 0 订阅
4 篇文章 0 订阅

WXBizDataCrypt.php

<?php



/**

 * 对微信小程序用户加密数据的解密示例代码.

 *

 * @copyright Copyright (c) 1998-2014 Tencent Inc.

 */





include_once "errorCode.php";





class WXBizDataCrypt

{

    private $appid;

	private $sessionKey;



	/**

	 * 构造函数

	 * @param $sessionKey string 用户在小程序登录后获取的会话密钥

	 * @param $appid string 小程序的appid

	 */

	public function WXBizDataCrypt( $appid, $sessionKey)

	{

		$this->sessionKey = $sessionKey;

		$this->appid = $appid;

	}





	/**

	 * 检验数据的真实性,并且获取解密后的明文.

	 * @param $encryptedData string 加密的用户数据

	 * @param $iv string 与用户数据一同返回的初始向量

	 * @param $data string 解密后的原文

     *

	 * @return int 成功0,失败返回对应的错误码

	 */

	public function decryptData( $encryptedData, $iv, &$data )

	{

		if (strlen($this->sessionKey) != 24) {

			return ErrorCode::$IllegalAesKey;

		}

		$aesKey=base64_decode($this->sessionKey);



        

		if (strlen($iv) != 24) {

			return ErrorCode::$IllegalIv;

		}

		$aesIV=base64_decode($iv);



		$aesCipher=base64_decode($encryptedData);



		$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);



		$dataObj=json_decode( $result );

		if( $dataObj  == NULL )

		{

			return ErrorCode::$IllegalBuffer;

		}

		if( $dataObj->watermark->appid != $this->appid )

		{

			return ErrorCode::$IllegalBuffer;

		}

		$data = $result;

		return ErrorCode::$OK;

	}



}



 接口方法

<?php
/**
 * 
 *
 * @author 张先森 
 * 
 */
defined('IN_IA') or exit('Access Denied');
require_once IA_ROOT."/addons/hc_pdd/inc/model.class.php";
require_once IA_ROOT."/addons/hc_pdd/wxBizDataCrypt.php";
require_once IA_ROOT."/addons/hc_pdd/inc/api.class.php";  
class Hc_pddModuleWxapp extends WeModuleWxapp {
    
 
    
     public function doPagePhones()
    {
    	   require IA_ROOT .'/addons/hc_pdd/wxBizDataCrypt.php';

        $appid = ''; // 小程序APPID
        $secret = ''; // 小程序secret
        $code = $_GPC['codes'];//code
        $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
        
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 5000);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);
        

        $ress = json_decode($res,TRUE);
        $data ="";
        $encryptedData = trim($_GPC['encryptedData']);
        $iv            = trim($_GPC['iv']);
        $sessionKey    = $ress['session_key'];

        $pc = new WXBizDataCrypt($appid, $sessionKey);
                    // return $this->result(1,$pc);

        $errCode = $pc->decryptData($encryptedData, $iv, $data);
        // return $this->result(1,$errCode);
      //return $this->result(1, array('errcode'=>$errCode,'sessionKey'=>$sessionKey));
      //errcode: "{"phoneNumber":"","purePhoneNumber":"","countryCode":"86","watermark":{"timestamp":1596086925,"appid":""}}"

    

        // return $this->result(0, '获取成功',array('errcode'=>$errCode,'aa'=>$data));
        if ($errCode == 0) {
                $aa =json_decode($data,TRUE);
                $aa['openid']=$ress['openid'];
            return $this->result(0, '获取成功',$aa);
        } else {
            return $this->result(1, '获取失败',$errCode);
      
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值