作者 anyv
1 个管道 的构建 通过 耗费 1 秒

4

@@ -210,10 +210,7 @@ class SalesmangoodsController extends WeChatBaseController{ @@ -210,10 +210,7 @@ class SalesmangoodsController extends WeChatBaseController{
210 $ticketList = $this->getJsApiTicket($token['accessToken']); 210 $ticketList = $this->getJsApiTicket($token['accessToken']);
211 $ticket = $ticketList['ticket']; 211 $ticket = $ticketList['ticket'];
212 // 该URL为使用JSSDK接口的URL 212 // 该URL为使用JSSDK接口的URL
213 - $url = $_GET['url'];  
214 - if (!$url) {  
215 - $url = 'http://xxx.xxx.com/index/index.html';  
216 - } 213 + $url = 'http://xkeasy.w.bronet.cn/';
217 // 时间戳 214 // 时间戳
218 $timestamp = time(); 215 $timestamp = time();
219 // 随机字符串 216 // 随机字符串
@@ -222,7 +219,7 @@ class SalesmangoodsController extends WeChatBaseController{ @@ -222,7 +219,7 @@ class SalesmangoodsController extends WeChatBaseController{
222 $string = "jsapi_ticket=$ticket&noncestr=$nonceStr&timestamp=$timestamp&url=$url"; 219 $string = "jsapi_ticket=$ticket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
223 $signature = sha1($string); 220 $signature = sha1($string);
224 $signPackage = array ( 221 $signPackage = array (
225 - "appId" => C('WxPayConf_pub.APPID'), 222 + "appId" => "wxdf34ec2179e19b9a",
226 "nonceStr" => $nonceStr, 223 "nonceStr" => $nonceStr,
227 "timestamp" => $timestamp, 224 "timestamp" => $timestamp,
228 "url" => $url, 225 "url" => $url,
@@ -238,23 +235,18 @@ class SalesmangoodsController extends WeChatBaseController{ @@ -238,23 +235,18 @@ class SalesmangoodsController extends WeChatBaseController{
238 public function getAccessToken() { 235 public function getAccessToken() {
239 // access_token 应该全局存储与更新 236 // access_token 应该全局存储与更新
240 // 获取数据库中的access_token 237 // 获取数据库中的access_token
241 - $token = M('accesstoken')->limit(1)->find();  
242 - // 如果数据库存在token  
243 - if ($token) {  
244 - // 格式化数据库的timestamp  
245 - $time = strtotime($token['time']);  
246 - } 238 + $token = Db::name('token') -> where('id',1) -> find();
247 // accessToken过期或不存在时 239 // accessToken过期或不存在时
248 - if($time + $token['expiresIn'] < time() || $token['accessToken'] == NULL){  
249 - $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".C('WxPayConf_pub.APPID')."&secret=".C('WxPayConf_pub.APPSECRET'); 240 + if($token['time'] + $token['expiresIn'] < time() || $token['accessToken'] == NULL){
  241 + $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="."wxdf34ec2179e19b9a"."&secret="."133ced06db2a45843ab52abc691ee82d";
250 // 微信返回的信息 242 // 微信返回的信息
251 $returnData = json_decode($this->httpGet($url)); 243 $returnData = json_decode($this->httpGet($url));
252 // 组装数据 244 // 组装数据
253 $resData['accessToken'] = $returnData->access_token; 245 $resData['accessToken'] = $returnData->access_token;
254 $resData['expiresIn'] = $returnData->expires_in; 246 $resData['expiresIn'] = $returnData->expires_in;
255 - $resData['time'] = date("Y-m-d H:i",time()); 247 + $resData['time'] = time();
256 // 把数据存进数据库 248 // 把数据存进数据库
257 - M('accesstoken')->where(array('id' => $token['id']))->save($resData); 249 + Db::name('token') -> where('id',1) -> update($resData);
258 $res = $resData; 250 $res = $resData;
259 }else{ 251 }else{
260 $res = $token; 252 $res = $token;
@@ -262,6 +254,52 @@ class SalesmangoodsController extends WeChatBaseController{ @@ -262,6 +254,52 @@ class SalesmangoodsController extends WeChatBaseController{
262 return $res; 254 return $res;
263 } 255 }
264 256
  257 + public function getJsApiTicket($accessToken) {
  258 + // jsapi_ticket 应该全局存储与更新
  259 + // 获取数据库中的jsapi_ticket
  260 + $ticket = Db::name('token') -> where('id',2) -> find();
  261 + // 如果ticket失效
  262 + if($ticket['time'] + $ticket['expiresIn'] < time() || $ticket['ticket'] == NULL){
  263 + $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&&type=jsapi";
  264 + // 微信返回的信息
  265 + $returnData = json_decode($this->httpGet($url));
  266 + // 组装数据
  267 + $resData['ticket'] = $returnData->ticket;
  268 + $resData['expiresIn'] = $returnData ->expires_in;
  269 + $resData['time'] = time();
  270 + $resData['errcode'] = $returnData->errcode;
  271 + // 把数据存进数据库
  272 + Db::name('token') -> where('id',2) -> update($resData);
  273 + $res = $resData;
  274 + }else{
  275 + $res = $ticket;
  276 + }
  277 + return $res;
  278 + }
  279 +
  280 + // 创建随机字符串
  281 + private function createNoncestr($length = 16) {
  282 + $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  283 + $str = "";
  284 + for($i = 0; $i < $length; $i ++) {
  285 + $str .= substr ( $chars, mt_rand ( 0, strlen ( $chars ) - 1 ), 1 );
  286 + }
  287 + return $str;
  288 + }
  289 +
  290 +
  291 + private function httpGet($url) {
  292 + $curl = curl_init();
  293 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true );
  294 + curl_setopt($curl, CURLOPT_TIMEOUT, 500 );
  295 + curl_setopt($curl, CURLOPT_URL, $url );
  296 + $res = curl_exec($curl);
  297 + curl_close($curl);
  298 + return $res;
  299 + }
  300 +
  301 +
  302 +
265 303
266 304
267 305
@@ -305,8 +305,8 @@ @@ -305,8 +305,8 @@
305 305
306 function openCamera(){ 306 function openCamera(){
307 307
308 - $.post("{:url('/')}",{},function (data) {  
309 - 308 + $.post("{:url('Salesmangoods/getSignPackage')}",{},function (data) {
  309 + console.log(data);
310 }); 310 });
311 311
312 wx.chooseImage({ 312 wx.chooseImage({