返回
快速导航关闭
当前搜索
网站分类
栏目推荐
实用工具
热门标签
子分类:
公众号运营 >公众号 » 正文

如何做公众号图文编辑,微信公众号小程序怎么做,公众号小程序服务端获取用户ID用户信息代码分享

公众号 更新时间: 发布时间: 公众号归档 最新发布 网站地图

<?php

namespace app\common\qccx\library;

class WxJsApi

{

//正式账号配置

private $appId = '填你的appId';

private $appSecret = '填你的appSecret';

public function __construct($appId, $appSecret)

{

$this->appId = $appId;

$this->appSecret = $appSecret;

}


//将方法变为私有

private function getSignPackage($url)

{

$jsapiTicket = $this->getJsApiTicket();

// 注意 URL 一定要动态获取,不能 hardcode.

//$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

//$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

//$url ="http://o2o.qchui.cn";

$timestamp = time();

$nonceStr = $this->createNonceStr();

// 这里参数的顺序要按照 key 值 ASCII 码升序排序

$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";

$signature = sha1($string);

$signPackage = array(

"appId" => $this->appId,

"nonceStr" => $nonceStr,

"timestamp" => $timestamp,

"url" => $url,

"signature" => $signature/*,

"rawString" => $string*/

);

return $signPackage;

}

private 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;

}

private function getJsApiTicket()

{

// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例

$data = json_decode(file_get_contents("jsapi_ticket.json"));

if ($data->expire_time < time()) {

$accessToken = $this->getAccessToken();

// 如果是企业号用以下 URL 获取 ticket

// $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";

$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";

$res = json_decode($this->httpGet($url));

$ticket = $res->ticket;

if ($ticket) {

$data->expire_time = time() + 7000;

$data->jsapi_ticket = $ticket;

$fp = fopen("jsapi_ticket.json", "w");

fwrite($fp, json_encode($data));

fclose($fp);

}

} else {

$ticket = $data->jsapi_ticket;

}

return $ticket;

}

private function getAccessToken()

{

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";

//查询缓存

$cache = new CacheFileService();

$access_token = $cache->get($this->appId);

if ($access_token) {

return $access_token;

} else {

$tk = $this->wx_api_request($url);

if (count($tk) > 0) {

//缓存1.9小时

$cache->set($this->appId, $tk['access_token'], 6840);

return $tk['access_token'];

}

}

return false;

}

private function wx_api_request($url)

{

$http_response = $this->httpGet($url);

$data = json_decode($http_response, true);

if (!empty($data['access_token'])) {

return $data;

}

return [];

}

// 获取用户信息

public function getUserInfo($openId)

{

$access_token = $this->getAccessToken();

$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openId&lang=zh_CN";

return json_decode($this->httpGet($url), true);

}

private function httpGet($url)

{

$curl = curl_init();

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_TIMEOUT, 500);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl, CURLOPT_URL, $url);

$res = curl_exec($curl);

curl_close($curl);

return $res;

}

}

转载请注明:文章转载自 http://ywclxp.com/
本文地址:http://ywclxp.com/gzh/11223.html
考高分网交流群

扫一扫加入QQ交流群

和更多志同道合朋友一起交流,分享干货资料!
公众号运营客服

扫一扫加客服微信

有疑问请咨询公众号运营微信号,在线为您解答!
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 Copyright Your WebSite.Some Rights Reserved. Powered · 创奇学院

ICP备案号:浙ICP备14032708号