TP5 微信JS-SDKphp签名

来源:互联网 发布:淘宝户外运动店铺 编辑:程序博客网 时间:2024/06/05 16:33
    因为自己写的图片上传存在兼容性问题,所以使用微信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;}
原创粉丝点击