获取openID 步骤:
第一步请求微信服务器获取code
第二部 代上code 去请求微信服务器获取openID
注意:具体秘钥需要自己填写真实的秘钥,在微信中打开测试!
index.php 文件代码
<?php
session_start();
include './Base.php';
class WeiXinPay extends Base
{
/*
* 获取用户openID 当前登录微信用户的openID
*
*/
public function __construct()
{
}
}
$obi = new WeiXinPay();
$obi->getOpenId();
base.php 文件代码
<?php
header("Content-type: text/html; charset=utf-8");
/**
* Created by PhpStorm.
* User: lsh
* Date: 2099/3/25
* Time: 16:08
*/
class Base
{
//商户id
const KEY ='kkkkksdio87923';
//获取code 的微信服务器地址
const CODEURL = "https://open.weixin.qq.com/connect/oauth2/authorize?";
//你自己的APPID
const APPID = 'ssdfqwxx';
//获取openid 的微信服务器地址
const OPENIDURL = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
//开发者秘钥
const SECRET = 'b8sdjfi28379923834';
//支付秘钥
//获取openid
public function getOpenId()
{
//如果已经获取到用户的openId就存储在session中
if(isset($_SESSION['openid']))
{
return $_SESSION['openid'];
}
else
{
//1.用户访问微信服务器地址 先获取到微信get方式传递过来的code
//2.根据code获取到openID
if(! isset($_GET['code']))
{
//没有获取到微信返回来的code ,让用户再次访问微信服务器地址
//redirect_uri 解释
//跳转地址:你发起请求微信服务器获取code ,
//微信服务器返回来给你的code的接收地址(通常就是发起支付的页面地址)
//组装跳转地址
$redirect_uri = self::CODEURL .'appid='.self::APPID.'&redirect_uri='.$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&response_type=code&scope='.self::SCOPE.'&state=STATE#wechat_redirect';
// echo $redirect_uri;
//跳转 让用过去获取code
header("location:{$redirect_uri}");
}
else
{
//调用接口获取openId
$openidurl = self::OPENIDURL.'appid='.self::APPID.'&secret='.self::SECRET.'&code='.$_GET['code'].'&grant_type=authorization_code';
//请求获取用户的openID
$data = file_get_contents($openidurl);
$arr = json_decode($data,true);
//获取到的openid保存到session 中
$_SESSION['openid'] = $arr['openid'];
return $_SESSION;
}
}
}
}