//测试
$APPID='*************************';
$SECRET='***********************'; $url = trim($_REQUEST['url']); $root['url'] = $url; $memcache = getRedis();
$mem_valid_time = 7100; //获取access_token,并缓存
$memcache_key = 'wx_share_sign_access_token';
$mem_list = $memcache->get($memcache_key); //缓存中没有数据
if (empty($mem_list)) { $token = null; if (!$token || strlen($token) < 6) {
$res = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$SECRET."");
$res = json_decode($res, true);
$token = $res['access_token'];
} $new_list = $token;
//更新缓存
$memcache->set($memcache_key,$new_list,$mem_valid_time); } else { $token = $mem_list;//缓存中的数据
}
$root['access_token'] = $token;
//获取jsapi_ticket,并缓存
$memcache_key = 'sign_jsapi_ticket';
$mem_list = $memcache->get($memcache_key);
//缓存中没有取数据库
if (empty($mem_list)) { $jsapi_ticket = null; if (!$jsapi_ticket || strlen($jsapi_ticket) < 6) {
$ur = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";
$res = file_get_contents($ur);
$res = json_decode($res, true);
$jsapi_ticket = $res['ticket'];
} $new_list = $jsapi_ticket;
//更新缓存
$memcache->set($memcache_key,$new_list,$mem_valid_time); } else {
$jsapi_ticket = $mem_list;//缓存中的数据
} $root['jsapi_ticket'] = $jsapi_ticket; $timestamp = time();//生成签名的时间戳
$metas = range(0, 9);
$metas = array_merge($metas, range('A', 'Z'));
$metas = array_merge($metas, range('a', 'z'));
$nonceStr = '';
for ($i=0; $i < 16; $i++) {
$nonceStr .= $metas[rand(0, count($metas)-1)];//生成签名的随机串
} $string1="jsapi_ticket=".$jsapi_ticket."&noncestr=".$nonceStr."&timestamp=".$timestamp."&url=".$url."";
$signature=sha1($string1);
$root['appid'] = $APPID;
$root['nonceStr'] = $nonceStr;
$root['timestamp'] = $timestamp;
$root['signature'] = $signature;

return $tag;

php-微信分享签名的更多相关文章

  1. 微信分享签名Java代码实现

    最近写了一个小微信签名功能,记录一下希望用到的朋友可以参考下. RestController @RequestMapping("/api/wx") public class Wei ...

  2. 微信分享jssdk config:invalid signature 签名错误

    使用微信分享时,按照官方给的demo,使用时一直提示签名错误. 根据微信开发文档(http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd ...

  3. 微信分享JSSDK-invalid signature签名错误的解决方案

    核对官方步骤,确认签名算法. 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认con ...

  4. Android集成微信分享功能应用签名生成方法及分享不生效的问题

    通过友盟sdk集成微博.微信.qq等分享功能时,微博和qq很顺利,但在做微信集成时一直不成功.主要问题还是之前在微信开放平台申请创建移动应用时,对应用签名没有填写对,走了很多弯路现总结出来,加深记忆避 ...

  5. Android:用签名打包后微信分享失效

    刚开始使用微信分享,申请的微信appid也可以在直接使用,分享成功! 当我使用自己的签名打包分享时却分享失败,一闪而过,好郁闷的说,为什么之前没有打包就可以,签名打包后就不可以了... 开始查找各种资 ...

  6. php 微信jssdk 微信分享一直报config:fail,Error: invalid signature(签名生成是一致的)

    php 微信jssdk 微信分享一直报config:fail,Error: invalid signature(签名生成是一致的) 里面url必须是当前的url比方说在A地址 请求获取jssdk参数 ...

  7. android微信分享不出去?四步搞定!

    现在做的项目中集成了友盟分享,产品要求集成微信.朋友圈.QQ.QQ空间.短信这几个分享平台.按照友盟的文档集成一切都很顺利,集成成功以后测试QQ.QQ空间.短信都没有问题,唯独微信和朋友圈一直分享不出 ...

  8. ionic 微信分享值各种坑

    去前段时间公司的app需要做微信分享,然后网上找的教程,在做的时候发现网上的教程各种坑,现在将做得过程分享出来 在做功能之前你需要做几步预备工作, 1.安装jdk,jre,并加入全局变量[这个网上还是 ...

  9. PHP 微信分享

    share.php <?php //公众号设置一下 JS接口安全域名,不要http,www的一级域名,比如http://www.baidu.com域名下的某个路径要分享,js安全域名中只需填上 ...

  10. android微信分享要注意的地方

    最近在做android端分享的功能,在微信开放平台查看了下官网上的开发文档,一步一步的按文档上的步骤来: 1.申请你的AppID 2.下载开发工具包 3.搭建开发环境,引入libammsdk.jar文 ...

随机推荐

  1. 前端常见的HTML+CSS面试题(附答案)

    HTML 1. <image>标签上title属性与alt属性的区别是什么? alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的.且长度必须少于100个英文字符或者用户必须保 ...

  2. Designing Data-Intensive Applications笔记

    <Designing Data-Intensive Applications>书看完很久了,前段时间陈皓来公司技术分享也推荐了这本书.读起来酣畅淋漓,写篇系统总结的意愿强烈,无耐内容属实太 ...

  3. Nginx 核心配置-作为上传服务器配置

    Nginx 核心配置-作为上传服务器配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.关键参数说明 client_max_body_size 1m: 设置允许客户端上传单 ...

  4. <人人都懂设计模式>-状态模式

    同样是水,固态,气态,液态的变化,是由温度引起. 引此为思考状态模式. from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmeth ...

  5. Codeforces Round #605 (Div. 3)

    地址:http://codeforces.com/contest/1272 A. Three Friends 仔细读题能够发现|a-b| + |a-c| + |b-c| = |R-L|*2 (其中L ...

  6. 洛谷P4549 裴蜀定理 / Min

    原题链接 题目描述 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1X1+...AnXn>0,且S的值最小 输入输出格式 输入格式: 第一行给出数字N,代表有N个数 下 ...

  7. springboot2.0整合logback日志(详细)

    <div class="post"> <h1 class="postTitle"> springboot2.0整合logback日志(详 ...

  8. hdu5285-wyh2000 and pupil-(染色法二分图判定)

    http://acm.hdu.edu.cn/showproblem.php?pid=5285 题意:把互不认识的人分到两个组,第一组人数尽可能多. 题解:把互不认识的人连起来,当作二分图,二分图可能有 ...

  9. linux command lynx

    [Purpose]        Learning linux command  lynx   [Eevironment]        Ubuntu 16.04 terminal   apt-get ...

  10. P3258 [JLOI2014]松鼠的新家题解

    题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有\(n\)个房间,并且有\(n-1\)根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树& ...