微信小程序获取用户信息 openid unionid 微信小程序获取用户手机号

项目要求

公众号用户和小程序用户互通。所以把公众号和小程序绑定在同一个开放平台上

获取用户信息 openid unionid 示例

微信文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/user-info/auth.getPaidUnionId.html

    /**
     * 登录时获取openid session_key unionid 
     * @param $code
     * @return mixed
     */
    public function getopenid($code){
        $appid = WX_APPID;
        $secret= WX_SECRET;
        $xu= WX_URL.'sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
        $result = http_curl_common($xu);
        Log::write('getopenid-result:'.$result,'NOTIC');
        $data = json_decode($result,true);
        return $data;//$data 里包含 openid session_key unionid 等信息
    }
	/**
	 * curl 提交
	 * @param $url
	 * @param string $type
	 * @param string $arr
	 * @return bool|string
	 */
	function http_curl_common($url, $type = 'get', $arr = '')
    {
        $cl = curl_init();
        curl_setopt($cl, CURLOPT_URL, $url);
        curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
        if ($type == 'post') {
            curl_setopt($cl, CURLOPT_POST, 1);
            curl_setopt($cl, CURLOPT_POSTFIELDS, $arr);
        }
        $result = curl_exec($cl);
        curl_close($cl);
        return $result;
    }

获取手机号示例

微信获取手机号文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

前端传参 后端返回:
在这里插入图片描述
代码示例:

<?php

namespace Wap\Controller;
use Org\Util\Aes\wxBizDataCrypt;
use Org\Util\Wxpayv3;
use Think\Log;


class AesController {

    public function index(){
        $_get_data = I('post.');
        $encryptedData = $_get_data['encryptedData'];
        $iv = $_get_data['iv'];
        $sessionKey = $_get_data['session_key'];
        $appid = WX_APPID;

        if(empty($encryptedData)){
            $this->jsonecho('未获取到encryptedData信息,请重新进入',parameter_error);
        }
        if(empty($sessionKey)){
            $this->jsonecho('未获取到session_key信息,请重新进入',parameter_error);
        }
        if(empty($iv)){
            $this->jsonecho('未获取到iv信息,请重新进入',parameter_error);
        }

        $data = '';
        $pc = new wxBizDataCrypt($appid, $sessionKey);//wxBizDataCrypt 微信提供的加解密
        $errCode = $pc->decryptData($encryptedData, $iv, $data );
        Log::write('Aes errCode'.print_r($errCode,true));

        if ($errCode == 0) {
            $arr = json_decode($data,true);
            $this->jsonecho($arr);
        } else {
            $this->jsonecho('错误码'.$errCode,operation_failed);
        }
    }
    /**
     * TP的接口可以用这个返回 YII接口可以用这个方法返回
     * larveral 存session情况下可用自带的 return response()->json($array);
     *  因为 exit会影响larveral里存储session的方法
     */
    private function jsonecho($params,$status=0) {
        $arr = array();
        $arr['code'] = $status; //状态码
        $arr['result'] = $status==0 ? 'ok':$params; //成功返回ok 不成功返回错误提示
        if($status==0){
            $arr['data'] = $params; //成功返回成功信息
        }
        header('Content-Type:application/json; charset=utf-8');
        echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
        exit;
    }

}

wxBizDataCrypt下载地址

微信下载地址 :https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip

目录位置
在这里插入图片描述


版权声明:本文为qq_32550561原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。