TP小程序授權(quán)

首先呢,先進入微信公眾平臺,獲取APPID和APPsecret。

1、控制器

進入自己的項目中,創(chuàng)建一個控制器,WeChatPay.class.php;具體代碼如下

/*

* 這里接受兩個參數(shù),signature => 簽名,code =>?

*/

public functionwxLogin($code='', $signature='') {

? ? ? ?$APPID = C('WX.appid');

???????$AppSecret = C('WX.AppSecret');

???????$url ="https://api.weixin.qq.com/sns/jscode2session?appid=".$APPID."&secret=".$AppSecret."&js_code=".$code."&grant_type=authorization_code";

???????$arr = curlGet($url);? //一個使用curl實現(xiàn)的get方法請求

???????$arr = json_decode($arr,true);

???????$openid = $arr['openid'];? //微信openid

???????$session_key = $arr['session_key'];

???????$rawData = $_GET['rawData'];

???????//數(shù)據(jù)簽名校驗

???????$signature2 = sha1($rawData.$session_key);? //記住不應(yīng)該用TP中的I方法,會過濾掉必要的數(shù)據(jù)

???????if ($signature != $signature2) {

???????????????echo '-1'.','.'數(shù)據(jù)簽名驗證失敗';die;

???????}

???????//開發(fā)者如需要獲取敏感數(shù)據(jù),需要對接口返回的加密數(shù)據(jù)( encryptedData )進行對稱解密

???????Vendor("PHP.wxBizDataCrypt");?//加載解密文件,在官方有下載

???????$encryptedData = $_GET['encryptedData'];

???????$iv = $_GET['iv'];

???????$pc = new \WXBizDataCrypt($APPID, $session_key);

???????$errCode = $pc->decryptData($encryptedData, $iv, $data);? //其中$data包含用戶的所有數(shù)據(jù)

???????if ($errCode != 0) {

???????????????echo '-1'.','.'解密數(shù)據(jù)失敗';die;

???????}else {

???????????//用戶信息入庫,這里我將用戶的基本信息存入數(shù)據(jù)庫中

???????????$wxuser = M('users');

???????????$user_info = $wxuser->where(array('openid'=>$openid))->find();

???????????$user_id = $user_info['user_id'];

???????????$raw = json_decode($rawData,true);

???????????$raw['nickname'] = trim($raw['nickName']);

???????????$raw['name'] = $raw['nickName'];

???????????$raw['last_time'] = time();

???????????$new_user = 0; //老用戶

???????????if(!$user_info){

??????????????? $raw['openid'] = $openid;

??????????????? $raw['add_time'] = time();

??????????????? $user_id =$wxuser->add($raw); //新用戶id

??????????????? if(!$user_id){

??????????????????????? echo '-1'.','.'服務(wù)器出錯,授權(quán)失敗。';die;

??????????????? }

??????????????? $new_user = 1; //新用戶

???????????}else {

??????????????????? $ures =$wxuser->where(array('user_id'=>$user_id))->setField($raw);

???????????}

???????????$nickName = $raw['nickName']?:$user_info['nickName']; //用戶昵稱

???????}

???????//生成第三方3rd_session

???????$session3rd? = null;

???????$strPol ="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";

???????$max = strlen($strPol)-1;

???????for($i=0;$i<16;$i++){

???????????????$session3rd .=$strPol[rand(0,$max)];

???????}

???????$result = '1'.','.$session3rd.','.$user_id.','.$nickName.','.$new_user;

???????echo $result;die;

???????? }

2、配置文件

我把配置文件放在了 Common/Conf/config.php 里面

3、SDK

SDK后面再上傳

到這里小程序授權(quán)就全部完成了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 去微信開放平臺創(chuàng)建應(yīng)用 審核通過后會得到AppID和AppSecret(這兩個很重要) 2 接入自己的網(wǎng)站 (...
    史史小子閱讀 1,365評論 0 2
  • 很早前就想了解下微信公眾號開發(fā),懶和拖延癥讓這計劃遲遲沒落實,正巧新項目有了微信公眾號的業(yè)務(wù),我心中沒數(shù)地回應(yīng),我...
    英文名叫夏天閱讀 4,696評論 1 4
  • 一、遇到授權(quán) 最近開發(fā)微信小程序,做登錄功能時遇到下圖。 看太懂,有幾處疑惑地方: 同事告訴我這是認證和授權(quán),之前...
    dkvirus閱讀 15,081評論 3 21
  • 前段時間公司網(wǎng)站登錄注冊改版,做了基于微信的第三方授權(quán)登錄和注冊,下面說的是網(wǎng)站應(yīng)用微信授權(quán)實現(xiàn)登錄注冊,。踩了一...
    浮生若夢_7777閱讀 8,693評論 0 7
  • 今天我們通了電話你還是一如既往的呆呆傻傻,不善于和我在電話中溝通,問你為什么,你告訴我想把這些話留著待我回來時...
    等風(fēng)來Ethel閱讀 179評論 0 0

友情鏈接更多精彩內(nèi)容