项目要求
公众号用户和小程序用户互通。所以把公众号和小程序绑定在同一个开放平台上
获取用户信息 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版权协议,转载请附上原文出处链接和本声明。