因爲自己寫的圖片上傳存在兼容性問題,所以使用微信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×tamp=$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;
}
TP5 微信JS-SDKphp簽名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.