class Saoyisao {

private $appId;

private $appSecret;

public function __construct($appId, $appSecret) {

$this->appId = $appId;

$this->appSecret = $appSecret;

}

public function getSignPackage() {

$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"];

$timestamp = time();

$nonceStr = $this->createNonceStr();

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

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

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

//echo $string;

$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() {

$accessToken = $this->getAccessToken();

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

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

$ticket = $res->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";

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

$access_token = $res->access_token;

return $access_token;

}

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;

}

}

?>

php微信扫一扫教程,php调用微信扫一扫相关推荐

  1. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  2. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  3. python自动发微信天气预报_【教程】Python微信定时自动给女朋友发送天气预报

    原标题:[教程]Python微信定时自动给女朋友发送天气预报 先上效果图 主要思路 1.从wxpy获取好友列表 2.创建定时器 3.定时器触发函数 4.函数执行,遍历好友列表 5.好友对象执行带参函数 ...

  4. SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

    这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  5. 公众号向特定用户主动推送消息_SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据...

    这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs ...

  6. SAP系统和微信集成的系列教程之一:微信开发环境的搭建

    系列目录 (1) 微信开发环境的搭建 ( 本文 ) (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据 (4) 如何将SAP C4C主数据变化 ...

  7. 微信定位功能js、jquery调用微信wx js-jdk

    config接口注入权限验证配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息 ...

  8. 微信检测域名状态系统 如何调用微信官方的微信域名检测接口API

    背景:最近公司的公众号域名被封了,原因是公司网站被黑后上传了一个不符合微信规范的网页.所以...就进入了微信域名解封的流程. 百度微信域名解封发现很多微信域名检测的网站,还有Api:但是本人做微信公众 ...

  9. 微信公众号开发教程(六)获取微信用户信息-网页授权

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 在学习网页授权之前,我们先来了解下这次的需求: 我们的应用中有一个用来显示个人信息的页面,当微信用户在微信app中打开这个页面,希望可以获取 ...

最新文章

  1. ORBBuf : 一种鲁棒的协同视觉SLAM缓冲方法
  2. 免费申领Bio-protocol单细胞研究实验方法精选集
  3. 网络安全系列之九 WAF的基本配置
  4. Why you have so few friends?
  5. 布隆过滤器及其数学推导
  6. 【BZOJ 2301】[HAOI2011]Problem b
  7. 提交表单上传照片预览
  8. hugging face transformer文本分类运行
  9. 一亿融资在一家芯片初创公司可以烧多久?
  10. ads1115多片并联
  11. Unity3d 5 官方教程:UI
  12. java多个文件压缩并加密
  13. 国外优秀免费空间推荐 可用于测试或临时备份
  14. uipath对SAP的抓取
  15. 优麒麟 20.04 pro更换内核
  16. 视频封面如何统一修改怎么设置为同一张图片
  17. HTML 直播 RTMP流实时播放
  18. 如何对pdf电子文档进行手写签名
  19. 刨根问底Objective-C Runtime(1)- Self Super
  20. 数据分类分级是什么?分类与分级区别又在哪?

热门文章

  1. 从 Netflix 传奇看,结果导向的产品路线图如何制定?(下篇)
  2. linux crossover 乱码,解决ubuntu下crossover中qq中文字体乱码问题
  3. 数据库复习--数据库恢复技术
  4. 通信管理机——上位机组态(2)
  5. 在外包干了三年,我废了...
  6. react教程(2022-11-12)
  7. 神武3手游一直等待服务器响应,神武3手游怎么进不去
  8. Activity 页面跳转,打招呼
  9. delphi读音_delphi中获取汉字的拼音首字母
  10. 【2020 ACM Fellow 华人学者】 Wang Yi 乌普萨拉大学