国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

php微信小程序登陸完整流程

這篇具有很好參考價值的文章主要介紹了php微信小程序登陸完整流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

小程序登陸流程:
1、使用wx.login 獲取code,
2、使用wx.getUserInfo 獲取用戶信息,然后上傳到服務(wù)端,
3、服務(wù)端在通過codee獲取access_token,openid 或 unionid
4、根據(jù)wx.getUserInfo 上傳encryptdata 和 iv 解密獲得用戶的基本信息
5、執(zhí)行注冊流程返回注冊信息

小程序端代碼


    // 登錄
    wx.login({
      success: res => {
        console.log(res.code)
        // 獲取用戶信息
        wx.getUserInfo({
          success: rs => {
            console.log(rs)
            // 發(fā)送 res.code 到后臺換取 openId, sessionKey, unionId
            wx.request({
              url: 'http://api.****.com/v1/login/wx_login', 
              method:"POST",
              data: {
                code: res.code, iv: rs.iv, encryptdata: rs.encryptedData
              },
              header: {
                'content-type': 'application/json' // 默認(rèn)值
              },
              success(res) {
                console.log(res.data)
              }
            })
          }
        })
      },
    })

php服務(wù)端代碼

 /**
     * 微信登陸
     * @Author wzb
     * @Date 2022/9/7 21:16
     */
    function wx_login()
    {
        $encryptdata = input('encryptdata', '', 'strip_tags,trim');
        $iv = input('iv', '', 'strip_tags,trim');
        $code = input('code', '', 'strip_tags,trim');
        if (empty($code) || !$encryptdata || !$iv) {
            $this->ThrowExcption('請求數(shù)據(jù)不能為空');
        }

        $appId = config('wx_appid');
        $secret = config('wx_secret');
        // 根據(jù)拿的code來拿access_token
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$secret}&js_code={$code}&grant_type=authorization_code";
        $return = $this->https_request($url);
        $jsonrt = json_decode($return, true);
        if (isset($jsonrt['errcode'])) {
            $this->ThrowExcption("微信授權(quán)發(fā)生錯誤:{$jsonrt['errmsg']},錯誤代碼:" . $jsonrt['errcode']);
        }
		// 文檔 https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/functional-pages/user-info.html
        $sessionKey = $jsonrt['session_key'] ?? '';
		// 根據(jù)encryptdata 和 iv 解密獲得用戶的基本信息
        $pc = new WxBizDataCrypt($appId, $sessionKey);
        $errCode = $pc->decryptData($encryptdata, $iv, $data);
        if ($errCode != 0) {
            $this->ThrowExcption("數(shù)據(jù)解析錯誤,代碼:" . $errCode);
        }
        $userInfo = json_decode($data);
//        $unionid = $userInfo->unionId;
        $openid = $userInfo->openId;
        $avatar = $userInfo->avatarUrl;
        $nickname = $userInfo->nickName;
        $data = [];
        $data['sex'] = max(0, intval($userInfo->gender)); // 用戶的性別,值為 1 時是男性,值為 2 時是女性,值為 0 時是未知
        $data = [
            'nickname' => $nickname, 'avatar' => $avatar, 'openid' => $openid
        ];
		// 業(yè)務(wù)代碼 
        $data['uid'] = $uid; 
        $this->successReturn($data);
    }

    function https_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

解密類

目錄 my文章來源地址http://www.zghlxwxcb.cn/news/detail-577415.html

  1. WXBizDataCrypt.php 文件
 <?php


namespace my;


class WxBizDataCrypt
{
    private $appid;
    private $sessionKey;

    /**
     * 構(gòu)造函數(shù)
     * @param $sessionKey string 用戶在小程序登錄后獲取的會話密鑰
     * @param $appid string 小程序的appid
     */
    public function __construct( $appid, $sessionKey)
    {
        $this->sessionKey = $sessionKey;
        $this->appid = $appid;
    }


    /**
     * 檢驗(yàn)數(shù)據(jù)的真實(shí)性,并且獲取解密后的明文.
     * @param $encryptedData string 加密的用戶數(shù)據(jù)
     * @param $iv string 與用戶數(shù)據(jù)一同返回的初始向量
     * @param $data string 解密后的原文
     *
     * @return int 成功0,失敗返回對應(yīng)的錯誤碼
     */
    public function decryptData( $encryptedData, $iv, &$data )
    {
        if (strlen($this->sessionKey) != 24) {
            return ErrorCode::$IllegalAesKey;
        }
        $aesKey=base64_decode($this->sessionKey);


        if (strlen($iv) != 24) {
            return ErrorCode::$IllegalIv;
        }
        $aesIV=base64_decode($iv);

        $aesCipher=base64_decode($encryptedData);

        $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);

        $dataObj=json_decode( $result );
        if( $dataObj  == NULL )
        {
            return ErrorCode::$IllegalBuffer;
        }
        if( $dataObj->watermark->appid != $this->appid )
        {
            return ErrorCode::$IllegalBuffer;
        }
        $data = $result;
        return ErrorCode::$OK;
    }
}


/**
 * error code 說明.
 * <ul>

 *    <li>-41001: encodingAesKey 非法</li>
 *    <li>-41003: aes 解密失敗</li>
 *    <li>-41004: 解密后得到的buffer非法</li>
 *    <li>-41005: base64加密失敗</li>
 *    <li>-41016: base64解密失敗</li>
 * </ul>
 */
class ErrorCode
{
    public static $OK = 0;
    public static $IllegalAesKey = -41001;
    public static $IllegalIv = -41002;
    public static $IllegalBuffer = -41003;
    public static $DecodeBase64Error = -41004;
}

到了這里,關(guān)于php微信小程序登陸完整流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序支付完整流程

    微信小程序支付完整流程

    1、注冊微信支付商戶號(由上級或法人注冊) 注冊鏈接:https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal#none 此商戶號,需要由主管及更上級領(lǐng)導(dǎo)進(jìn)行注冊,會成為公司收款賬戶 企業(yè)注冊需要材料:營業(yè)執(zhí)照,對公銀行賬戶信息,法人身份證 2、注冊小程序賬號(由上級或

    2024年02月10日
    瀏覽(26)
  • php版 短信跳轉(zhuǎn)微信小程序

    php版 短信跳轉(zhuǎn)微信小程序

    實(shí)現(xiàn)這功能首先,小程序端添加業(yè)務(wù)域名? php代碼 下面使用js的 location.href location.href = \\\'https://***.***.com\\\' 我前端用的是uniapp,vue的話要安裝axios或者jq 短信內(nèi)容放前端鏈接地址,這樣就可以通過打開游覽器跳轉(zhuǎn)到小程序了 注意 1.必須是發(fā)布的小程序才會被喚醒 2.接口有上限,

    2024年02月09日
    瀏覽(95)
  • 微信小程序-微信小程序登錄流程(一)

    微信小程序-微信小程序登錄流程(一)

    微信小程序,小程序的一種,英文名Wechat Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應(yīng)用 冷啟動: 小程序首次打開或銷毀后再次被打開,此時小程序需要重新加載啟動,即冷啟動。會檢查小程序是否

    2024年02月11日
    瀏覽(24)
  • 微信小程序藍(lán)牙授權(quán)完整流程

    微信小程序藍(lán)牙授權(quán)完整流程

    ? ? ? ? 1.1 authorize: ????????????????提前向用戶發(fā)起授權(quán)請求。調(diào)用后會立刻彈窗詢問用戶是否同意授權(quán)小程序使用某項功能或獲取用戶的某些數(shù)據(jù),但不會實(shí)際調(diào)用對應(yīng)接口。如果用戶之前已經(jīng)同意授權(quán),則不會出現(xiàn)彈窗,直接返回成功。更多用法詳見 用戶授權(quán)。

    2024年04月27日
    瀏覽(103)
  • PHP 合并圖片,微信小程序合并海報,合并文字

    PHP 合并圖片,微信小程序合并海報,合并文字

    //業(yè)務(wù)需求:我們需要一個微信小程序碼,但是是需要提供給別人掃碼的但是只有一個純粹的小程序碼是不好看的,所以需要推廣的海報圖片。再結(jié)合文字 ? 最終效果 ? ? 準(zhǔn)備工作? 1、需要海報的底圖? 2、小程序碼的圖片? 代碼部分結(jié)合YII2但不影響使用 完整過程 第一步:

    2024年02月08日
    瀏覽(24)
  • 微信小程序使用騰訊地圖完整流程

    微信小程序使用騰訊地圖完整流程

    前言:開發(fā)小程序需要得到定位和位置的省市區(qū)文字信息,看了所有的文章都沒有一個完整和像樣的,全是copy來,copy去的文章 - _ -!,一怒之下,開始了自己的踩坑之路 騰訊地圖地址:騰訊位置服務(wù) - 立足生態(tài),連接未來 1.常規(guī)的申請賬號登錄 2.新建應(yīng)用 ?3.點(diǎn)擊添加key ?

    2023年04月09日
    瀏覽(18)
  • 基于php微信小程序座位預(yù)約系統(tǒng)設(shè)計與實(shí)現(xiàn)

    基于php微信小程序座位預(yù)約系統(tǒng)設(shè)計與實(shí)現(xiàn)

    開發(fā)概要 開發(fā)操作系統(tǒng):windows10 + 4G內(nèi)存 + 500G 小程序開發(fā):微信開發(fā)者工具(MINA框架) 后臺環(huán)境:IIS +PHP 后臺開發(fā)語言:PHP 后臺開發(fā)工具:Dreamweaver +PhpStorm 數(shù)據(jù)庫:mysql8 數(shù)據(jù)庫管理工具:navicat 其他開發(fā)語言:html + css +javascript

    2024年02月11日
    瀏覽(24)
  • 基于php微信小程序共享洗衣系統(tǒng)設(shè)計與實(shí)現(xiàn)

    基于php微信小程序共享洗衣系統(tǒng)設(shè)計與實(shí)現(xiàn)

    開發(fā)概要 開發(fā)操作系統(tǒng):windows10 + 4G內(nèi)存 + 500G 小程序開發(fā):微信開發(fā)者工具(MINA框架) 后臺環(huán)境:IIS +PHP 后臺開發(fā)語言:PHP 后臺開發(fā)工具:Dreamweaver +PhpStorm 數(shù)據(jù)庫:mysql8 數(shù)據(jù)庫管理工具:navicat 其他開發(fā)語言:html + css +javascript

    2024年02月11日
    瀏覽(22)
  • 基于php微信小程序就餐預(yù)約系統(tǒng)設(shè)計與實(shí)現(xiàn)

    基于php微信小程序就餐預(yù)約系統(tǒng)設(shè)計與實(shí)現(xiàn)

    開發(fā)概要 開發(fā)操作系統(tǒng):windows10 + 4G內(nèi)存 + 500G 小程序開發(fā):微信開發(fā)者工具(MINA框架) 后臺環(huán)境:IIS +PHP 后臺開發(fā)語言:PHP 后臺開發(fā)工具:Dreamweaver +PhpStorm 數(shù)據(jù)庫:mysql8 數(shù)據(jù)庫管理工具:navicat 其他開發(fā)語言:html + css +javascript

    2024年02月10日
    瀏覽(23)
  • 微信小程序JSAPI下單支付PHP前后端教程

    微信小程序JSAPI下單支付PHP前后端教程

    準(zhǔn)備數(shù)據(jù): 微信支付API證書,微信支付商戶號,小程序appid,微信支付API證書序列號 獲取微信支付api證書教程:如何下載微信支付證書(API證書)_荒~的博客-CSDN博客_微信支付證書 獲取微信支付API證書序列號:點(diǎn)擊管理證書即可看到 ? 第一步:生成預(yù)支付交易單 參考文檔:

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包