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. Linux vim编辑器命令总结(转载)
  2. 在Win10下安装python+tensorflow-gpu-2.4 虚拟环境
  3. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
  4. TestNG中的参数化– DataProvider和TestNG XML(带有示例)
  5. 使用Camel在来自不同来源的Solr中索引数据
  6. 前端学习(3068):vue+element今日头条管理-日期处理
  7. java servlet文件下载_Servlet实现文件下载功能
  8. Sql Server之旅——第十二站 sqltext的参数化处理
  9. python实时监控文件目录_c#教程之c#使用filesystemwatcher实时监控文件目录的
  10. 如何实现SSH断开后 进程仍然在后台运行
  11. java:通过Calendar类正确计算两日期之间的间隔
  12. vue2.0项目的环境配置以及有哪些的坑
  13. Python网页简单小爬虫
  14. MyBatis官方下载地址(含mybatis-spring)
  15. U盘安装fedora 9
  16. 谭浩强c程序设计试题汇编第三版 第四章解析
  17. 概念辨析理解--TEX、LATEX、TEXLive和Lyx的区别和联系
  18. pkpm弹性时程分析计算书怎么出_【原创总结】结构菜鸟浅谈为何进行弹性时程分析(附操作详图)...
  19. 反思中国十大失败企业
  20. win10edge启用html5,Win 10 Edge浏览器极速运行的设置方法

热门文章

  1. 苹果6如何截屏_苹果iPhone 11的5个隐藏使用技巧 学会了让你的手机更好用
  2. java计算机毕业设计流浪动物收容与领养源码+系统+数据库+lw文档+mybatis+运行部署
  3. 基本命令 Linux操作系统与实训 CentOS 7.4 RHEL 7.4
  4. 《QQ自由幻想》带你体验自由诱惑
  5. [转] 高数原来可以这么诗意
  6. 蒙特梭利 部首和偏旁 练习册(一)蒙氏语言蒙氏素材
  7. 从Java Future 到 Guava ListenableFuture实现异步非阻塞调用
  8. Linux下python的命令,linux下python相关命令
  9. jQuery动画效果大全
  10. 手机网游开发基础知识之Wap协议