微信公众号jssdk
2018-07-30 本文已影响0人
ozil_oo
step1:获取accesss_token
//获取accesstoken
public function getAccessToken()
{
$APPID = 'wxe43ed0c0c91b2f3c';
$APPSECRET = '47e1bda71e378527cc0c80a394c779f4';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$APPSECRET;
// 微信返回的信息
$returnData = json_decode($this->curlHttp($url));
$resData['accessToken'] = $returnData->access_token;
$resData['expiresIn'] = $returnData->expires_in;
$resData['time'] = date("Y-m-d H:i",time());
$res = $resData;
return $res;
}
// 服务端发起请求
public function curlHttp($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt($curl, CURLOPT_TIMEOUT, 500 );
curl_setopt($curl, CURLOPT_URL, $url );
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,false);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
step2:获取api_ticket
public function getJsApiTicket($accessToken) {
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$accessToken."&&type=jsapi";
// 微信返回的信息
$returnData = json_decode($this->curlHttp($url));
$resData['ticket'] = $returnData->ticket;
$resData['expiresIn'] = $returnData ->expires_in;
$resData['time'] = date("Y-m-d H:i",time());
$resData['errcode'] = $returnData->errcode;
return $resData;
}
step3:获取签名
// 获取签名
public function getSignPackage() {
$this->load->helper('url');
// 获取token
$token = $this->getAccessToken();
// 获取ticket
$ticketList = $this->getJsApiTicket($token['accessToken']);
$ticket = $ticketList['ticket'];
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
// var_dump('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
// 生成时间戳
$timestamp = time();
// 生成随机字符串
$nonceStr = $this->createNoncestr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序 j -> n -> t -> u
$string = "jsapi_ticket=".$ticket."&noncestr=".$nonceStr."×tamp=".$timestamp."&url=".$url;
$signature = sha1($string);
$signPackage = array (
"appId" => 'wxe43ed0c0c91b2f3c',
"nonceStr" => $nonceStr,
"timestamp" => $timestamp,
"url" => $url,
"signature" => $signature,
"rawString" => $string,
"ticket" => $ticket,
"token" => $token['accessToken']
);
// 返回数据给前端
return $signPackage;
}
// 创建随机字符串
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;
}
至此,后端工作完成
step4:前端config
wx.confg({})