TP5 微信JS-SDKphp簽名

    因爲自己寫的圖片上傳存在兼容性問題,所以使用微信JS-SDK中的圖像上傳功能,在使用微信JS-SDK以前需要再後臺生成相應的簽名才能正常使用微信的JS-SDK,在使用JS-SDK以前需要前臺AJXS傳過來網頁地址 現保存一份以備後續使用
    直接上代碼:
     public function getdataOp()
{   
    $datas = input('param.');
    if($datas){//判斷前臺是否傳輸地址過來
        $appid = config('weixin.appID');
        $appsecret = config('weixin.appsecret');
        $model=model('access_token');
        $data=$model->where('status',2)->select();
        $access_token=$this->getAccessTokenOp();
        $Length=count($data);
        $ticketurl="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$access_token&type=jsapi";
        if($Length<1){//因爲我把jsapi存入數據庫而不是放入緩存 所以我判斷了數據長度,沒有jsapi就獲取
            $ticket=json_decode($this->https_request($ticketurl));
            $ticketdata= array(
                'access_token'=>$ticket->ticket,
                'status'=>'2',
                'addtime'=>time()+7000//有效期爲7200秒 每7000秒刷新一次
            );
            $status=$model->allowField(true)->save($ticketdata);
            $jsapiTicket=$ticket->ticket;
        }else{
            if($data[$Length-1]['addtime']>time()){
                $jsapiTicket=$data[$Length-1]['access_token'];
            }else{
                $ticket=json_decode($this->https_request($ticketurl));
                $ticketdata= array(
                    'access_token'=>$ticket->ticket,
                    'status'=>'2',
                    'addtime'=>time()+7000
                );
            $status=$model->allowField(true)->save($ticketdata);
            $jsapiTicket=$ticket->ticket;
            }
        }
        $timestamp = time();
        $url = $datas['url'];
        $nonceStr =$this->createNonceStr();
        $tmpArr = array(
            'noncestr' => $nonceStr,
            'timestamp' => $timestamp,
            'jsapi_ticket' => $jsapiTicket,
            'url' => $url
        );
        ksort($tmpArr, SORT_STRING);
        $string1 = http_build_query( $tmpArr );
        $string1 = urldecode( $string1 );
        $signature = sha1( $string1 );
        $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
        $signPackage = array(
            "appId"     =>$appid,
            "nonceStr"  => $nonceStr,
            "timestamp" => $timestamp,
            "signature" => $signature,
            'string'=>$string 
        );
        return $signPackage;
    }else{
        return 2;
    }       
}
/*
 +--------------------------------------------------------------
 |生成16位隨機字符串
 +--------------------------------------------------------------
 */
public function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
        $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章