2020 微信開發、微信支付之獲取openID(PHP版本)

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

    }
    
}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章