獲取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; } } } }