jkd微信扫一扫php苹果手机不能,Thinkphp5.1调用微信扫一扫实例,学会再也不怕客户在微信提的奇葩要求了...

namespace WxJDK;

class JSSDK

{

//公众号appid ,公众号开发配置处可查看

public    $appId;

//公众号appi , 公众号开发配置处可查看

private $appSecret;

/**

* @name        初始化参数

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

public function __construct($appId ,$appSecret ){

$this    -> appId            = $appId;

$this    -> appSecret        = $appSecret;

}

/**

* @name        获取accessToken

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

public function getAcc(){

return $this -> getAccessToken();

}

/**

* @name        获取config接口注入权限验证配置

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

public function getWxConfig(){

# - 获取 jsapi_ticket

$jsapiTicket = $this -> getJsApiTicket();

# - 获取调用页面的url

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

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

# - 时间戳

$timestamp = time();

# - 获取随机字符串

$nonceStr = $this -> createNonceStr();

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

# - 亦可把参数以数组存值,ksort() - 以升序对关联数组进行排序

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

# - sha1获取签名

$signature = sha1($string);

# - 页面所需注入参数

$WxConfig = array(

"appId"    => $this -> appId,

"nonceStr"  => $nonceStr,

"timestamp" => $timestamp,

"url"      => $url,

"signature" => $signature,

"rawString" => $string

);

# - 返回

return $WxConfig;

}

/**

* @name        获取JsApiTicket

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

private function getJsApiTicket(){

# - 判断缓存

$ticket = session('ticket');

if(!$ticket){

# - 获取

$accessToken = $this->getAccessToken();

# - 获取Ticket

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

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

# - get请求,转换数组

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

$ticket = $result['ticket'];

# - 全局缓存

if ($ticket){

# - 官方返回

# - {

# -        "errcode":0,

# -        "errmsg":"ok",

# -        "ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

# -    "expires_in":7200

# - }

//                session('ticket',$ticket,$result['expires_in']);

session('ticket',$ticket);

}

}

# - 返回

return $ticket;

}

/**

* @name        获取AccessToken

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

private function getAccessToken(){

# - 判断缓存

$access_token = session('accesToken');

if(!$access_token){

# - 如果是企业号用以下URL获取access_token

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

# - get请求,转换数组

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

$access_token = $result['access_token'];

# - 全局缓存

if ($access_token){

//                session('accesToken',$result['access_token'],$result['expires_in']);

session('accesToken',$result['access_token']);

}

}

# - 返回

return $access_token;

}

/**

* @name        GET请求

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

private function httpGet($url){

# - 初始化

$curl = curl_init();

# - 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。

# - 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。

curl_setopt($curl,CURLOPT_URL,$url);

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);

curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

curl_setopt($curl,CURLOPT_TIMEOUT,500);

# - 请求

$res = curl_exec($curl);

//        $res = json_decode($res, true);

# - 关闭

curl_close($curl);

# - 返回

return $res;

}

/**

* @name        POST请求

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

private function httpPost($url,$query_data){

# - 初始化

$curl = curl_init();

# - 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。

# - 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。

curl_setopt($curl,CURLOPT_URL,$url);

curl_setopt($curl,CURLOPT_POSTFIELDS,$query_data);

curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);

curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

curl_setopt($curl,CURLOPT_TIMEOUT,500);

# - 请求

$res = curl_exec($curl);

//        $res = json_decode($res, true);

# - 关闭

curl_close($curl);

# - 返回

return $res;

}

/**

* @name        产生随机字符串

* @author        cq

* @copyright    zydbbt 2018-10-27

*/

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;

}

public function getCommodityInfo($sub){

//聚合数据接口

# - 如果是企业号用以下URL获取access_token

$url = "http://feedback.api.juhe.cn/ISBN?key=c74a5cde7c1e58709624454f18447a54&sub=".$sub;

# - get请求,转换数组

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

halt($result);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值