微信JS-SDK应用DEMO
首先需要将以下函数写入TinkPHP的公用function.php文件中以便调用
// 基于ThinkPHP
/**
* php curl 请求链接
* 当$post_data为空时使用GET方式发送
* @param unknown $url
* @param string $post_data
* @return mixed
*/
function curlSend($url,$post_data=""){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
if($post_data != ""){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
} /**
* 调用接口获取 $ACCESS_TOKEN
* 微信缓存 7200 秒,这里使用thinkphp的缓存方法
* @param unknown $APP_ID
* @param unknown $APP_SECRET
* @return Ambigous <mixed, Thinkmixed, object>
*/
function get_accesstoken($APP_ID,$APP_SECRET){
$ACCESS_TOKEN = S($APP_ID);
if($ACCESS_TOKEN == false){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APP_ID."&secret=".$APP_SECRET;
$json = curlSend($url);
$data=json_decode($json,true);
S($APP_ID,$data[access_token],7000);
$ACCESS_TOKEN = S($APP_ID);
} return $ACCESS_TOKEN;
} /**
* 微信网页JSSDK 调用接口获取 $jsapi_ticket
* 微信缓存 7200 秒,这里使用thinkphp的缓存方法
* @param unknown $ACCESS_TOKEN
* @return Ambigous <mixed, Thinkmixed, object>
*/
function get_jsapi_ticket($ACCESS_TOKEN){
$jsapi_ticket = S($ACCESS_TOKEN);
if($jsapi_ticket == false){
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$ACCESS_TOKEN."&type=jsapi";
$json = curlSend($url);
$data = json_decode($json,true); S($ACCESS_TOKEN,$data[ticket],7000);
$jsapi_ticket = S($ACCESS_TOKEN);
}
return $jsapi_ticket;
} /**
* 微信网页JSSDK 获取签名字符串
* 所有参数名均为小写字符
* @param unknown $nonceStr 随机字符串
* @param unknown $timestamp 时间戳
* @param unknown $jsapi_ticket
* @param unknown $url 调用JS接口页面的完整URL,不包含#及其后面部分
*/
function get_js_sdk($APP_ID,$APP_SECRET){
$protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER[SERVER_PORT] == 443) ? "https://" : "http://";
$url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; $argu = array();
$argu[appId] = $APP_ID;
$argu[url] = $url;
$argu[nonceStr] = createNonceStr();
$argu[timestamp] = time(); $ACCESS_TOKEN = get_accesstoken($APP_ID, $APP_SECRET);
$argu[jsapi_ticket] = get_jsapi_ticket($ACCESS_TOKEN); $string = "jsapi_ticket=".$argu[jsapi_ticket]."&noncestr=".$argu[nonceStr]."×tamp=".$argu[timestamp]."&url=".$argu[url];
$argu[signature] = sha1(trim($string));
return $argu;
} /**
* 获取随机字符串
* @param number $length
* @return string
*/
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;
}
其次在程序里面调用JSSDK的配置信息,如下:
$confinfo = get_js_sdk("你的APPID","你的APP_SECRET");
$this->assign("confinfo",$confinfo);
最后创建html文件,其中JS内容如下:
//引入微信JS支持文件//=============这里博主用的是SMARTY引擎,所以代码自然就是smarty代码 var timestamp = "{$confinfo[timestamp]}"; var nonceStr = "{$confinfo[nonceStr]}"; var signature = "{$confinfo[signature]}"; var appId = "{$confinfo[appId]}"; /*******以下JS仅仅在微信浏览器下有效*********/ wx.config({ debug:false, appId:appId, timestamp:timestamp, nonceStr:nonceStr, signature:signature, jsApiList:[onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ] }); wx.ready(function(){ 这个地方就是你的分享代码了,具体您可以去微信官网看看那个让人蛋疼的JSSDK文档吧,最主要的内容在上面,仔细看哦! });
微信JS-SDK应用DEMO的更多相关文章
- 微信JS SDK PHP Demo
一.JSSDK类定义 <?php class JSSDK { private $appId; private $appSecret; public function __construct($a ...
- 实战微信JS SDK开发:贺卡制作与播放(1)
前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...
- 微信JS SDK接入的几点注意事项
微信JS SDK接入,主要可以先参考官网说明文档,总结起来有几个步骤: 1.绑定域名:先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.备注:登录后可在“开发者中心”查看对 ...
- 微信js sdk上传多张图片
微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="111111111111 ...
- 微信js SDK接口
微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...
- 调用微信js sdk
场景:需要调用微信获取当前位置的借口. 途径:查看微信 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 .后 ...
- 微信JS SDK配置授权,实现分享接口
微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...
- 微信JS SDK使用权限签名算法
jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据.正常情况下,jsapi_ticket的有效期为7200秒, ...
- 微信js sdk分享开发摘记java版
绑定域名和引入js的就不说了 废话不说直接上代码 public void share(HttpServletRequest request) throws Exception { StringBuff ...
- 微信JS SDK Demo 官方案例[转]
摘要: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用 ...
随机推荐
- SharePoint 2013 开发——发布SharePoint应用程序
博客地址:http://blog.csdn.net/FoxDave 前几篇我们介绍了开发.部署和调试SharePoint应用程序的基础,本篇介绍更实用的操作,当我们开发一个SharePoint应用 ...
- MySQL表的增删改查和列的修改(二)
一.使用Like模糊查找搜索前缀为以“exam_”开头的表名 show tables like 'exam_%' ; 语句结束符号是:也是用\G来表示 二.MySQL表的CRUD 2.1 创建表: C ...
- IOS的变量前加extern和static字段
IOS的变量前加extern和static字段 前一阵子,做项目的时候到网上找Demo,打开运行的时候发现其中变量前有关键字extern和static,所以我研究了一下子 对于extern来说可以理解 ...
- 2016 - 1 -19 初学HTML5 第一天
1.HTML COMMANDS MHTL commands called elements.Usually, an element has a start tag and an end tag e.g ...
- 自动获取UILabel的宽度高度
在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需要的长度 CGSize titleSize = [aSt ...
- iOS 开发之推力动画效果
步骤: 1.使用single view application 创建新的项目 2.在.h文件中需要遵守两个协议<UICollisionBehaviorDelegate,UIGestureReco ...
- 查看ubuntu文件目录的大小和文件夹包含的文件数 zT
查看ubuntu文件目录的大小和文件夹包含的文件数 查看linux文件目录的大小和文件夹包含的文件数 统计总数大小 du -sh xmldb/ du -sm * | sort -n //统计当前目录大 ...
- PHP中使用mysql处理结果集
一.从结果集中将记录取出 mysql_fetch_row($result); 从结果集中取得一行作为枚举数组 mysql_fetch_row($result mysql_fetch_assoc( ...
- iptables_forward
FORWARD 好了,我们接着往下走,这个包已经过了两个PREROUTING链了,这个时候,出现了一个分支转折的地方,也就是图中下方的那个菱形(FORWARD),转发!这里有一个对目的地址的判断(这里 ...
- 2、SQL基础整理(聚合函数)
聚合函数 --求平均 select AVG(age) as 年龄 from xuesheng select AVG(chinese) as 语文 from xuesheng where class ...