实例
test.php
<?php
/**
* 微信JS-SDK
* 定义:微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包
* 开发步骤:
* 1、绑定域名,“JS接口安全域名”
* 2、引入JS文件
* 3、通过config接口注入权限验证设置
* 4、通过ready接口处理成功验证
* 5、通过error接口处理失败验证
*
*
* 本次实例:微信分享接口:分享朋友圈,分享给朋友(接口即将废弃),拍照或从手机相册中选图接口,预览图片接口
* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
*/
/**
* 获取config配置选项中的参数:
* 签名文档地址:https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.9420729498129117#62
* 签名步骤:
* 1.获取票据:jsapi_ticket,有效期7200秒,次数限制,做好缓存
* 2.获取access_token
* 3.用access_token调用https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi,换取jsapi_ticket,请求方式get
*
*/
//获取jsapi_ticket
/*
$ch = curl_init();
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$tokenArr['access_token']."&type=jsapi";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$outPut = curl_exec($ch);
curl_close($ch);
$arr = json_decode($outPut,true);
print_r($arr);//HoagFKDcsGMVCIY2vOjf9l25caYhqwncbGyHpx4PqKNv9c4xlJHq3pwkkJ8w58wMh4xbDBcP395fgmPP-KT6UQ
*/
//signature算法
//步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:
$jsapi_ticket = 'HoagFKDcsGMVCIY2vOjf9l25caYhqwncbGyHpx4PqKMU7UW4nHmMWCD_dJZqqLLI1-4wvq4hYXanX5DvliAlHg';
$timestamp = time();
$nonceStr = "Wm3WZYTPz0wzccnW";//自定义,长度和类型都未限制,推荐16位数字和字母
$url = "http://wx.smallzhou.cn/share.html";
$signature = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$nonceStr."×tamp=".$timestamp."&url=".$url;//必须按照jsapi_ticket,noncestr,timestamp,url顺序
//步骤2.对string1进行sha1签名
$signature = sha1($signature);
echo $timestamp;
echo "<hr>";
echo $signature;
//可能出现的原因:1.url invalid domain 解决方法:在JS接口安全域名出去除填写域名的http://部分
share.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewpoint" content="initial-scale=1.0;width=device-width">
<title>微信分享实例</title>
<!--1、绑定域名-->
<!--2、引入JS文件-->
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
</head>
<body>
<script>
//3、通过config接口注入权限验证配置
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: 'wxc7991ed87e25dc13', // 必填,公众号的唯一标识
timestamp: 1531890990, // 必填,生成签名的时间戳
nonceStr: 'Wm3WZYTPz0wzccnW', // 必填,生成签名的随机串
signature: 'ed933bc9ce7d7f2ea1a61fb5792c44d8d85dee14',// 必填,签名
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'chooseImage',
'previewImage',
'scanQRCode'
] // 必填,需要使用的JS接口列表
});
//4、通过ready接口处理成功验证
wx.ready(function () {
wx.onMenuShareTimeline({//分享朋友圈
title: '分享标题', // 分享标题
link: 'http://wx.smallzhou.cn/test1.php', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: 'https://www.baidu.com/img/bd_logo1.png?where=super', // 分享图标
success: function () {
// 用户点击了分享后执行的回调函数
},
cancle: function () {
//用户取消分享后执行的回调函数
}
});
wx.onMenuShareAppMessage({//分享给朋友
title: '朋友标题', // 分享标题
desc: '朋友描述', // 分享描述
link: 'http://wx.smallzhou.cn/test1.php', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: 'https://www.baidu.com/img/bd_logo1.png?where=super', // 分享图标
type: 'link', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户点击了分享后执行的回调函数
},
cancle: function () {
//用户取消分享后执行的回调函数
}
});
});
function show() {
wx.chooseImage({//拍照或从手机相册中选图接口
count: 2, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
wx.previewImage({//图片预览接口
current: '', // 当前显示图片的http链接
urls: [localIds[0],localIds[1]] // 需要预览的图片http链接列表
});
}
});
}
function sacn() {//微信扫一扫
wx.scanQRCode({
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
}
});
}
//5、通过error接口处理失败验证
wx.error(function (res) {
alert(res);
});
</script>
<button onclick="show()">相册</button>
<button onclick="sacn()">扫一扫</button>
</body>
</html>