前台js
<!-- 引入js文件 -->
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
var title="{$data.title}";//标题文字
var present="{$data.present}";//介绍文字
var image="{$Request.domain}{$data.image}";//拼接的图片地址 域名+路径
$.ajax({
url: '/index/wx/weixin',//控制器路径
type: 'post',
data: {url1:location.href},//当前页面的完整路径 域名+路径
success: function (res) {
var json = eval('(' + res + ')');
wx.config({
debug: false,
appId:json.appid,
timestamp: json.timestamp,
nonceStr: json.nonceStr,
signature: json.signature,
jsApiList: [
'onMenuShareAppMessage'
]
});
wx.ready(function () {
wx.checkJsApi({
jsApiList: [
'onMenuShareAppMessage',
],
});
//分享到微信朋友
wx.onMenuShareAppMessage({
title: title,
desc: present,
link: location.href,
imgUrl: image,
success: function (res) {
if (res.errMsg == 'sendAppMessage:ok' || res.errMsg == 'onMenuShareAppMessage:ok') {
share({gid: id, is_zhuan: $('#is_zhuan').val()});
} else {
alert('用户取消分享')
}
}
});
});
}
});
</script>
tp5后台
<?php
namespace app\index\controller;
use think\Controller;
class Wx extends Controller
{
public function weixin(){
$url = input('url1');;//获取当前页面的url,接收请求参数
$root['url'] = $url;
//获取access_token,并缓存
$file = RUNTIME_PATH.'/access_token';//缓存文件名access_token
$appid='XXXXXXXXX'; // 填写自己的appid
$secret='XXXXXXXXXXXXXXXXXXX'; // 填写自己的appsecret
$expires = 3600;//缓存时间1个小时
if(file_exists($file)) {
$time = filemtime($file);
if(time() - $time > $expires) {
$token = null;
}else {
$token = file_get_contents($file);
}
}else{
fopen("$file", "w+");
$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'];
// write('access_token', $token, 3600);、、
@file_put_contents($file, $token);
}
//获取jsapi_ticket,并缓存
$file1 = RUNTIME_PATH.'/jsapi_ticket';
if(file_exists($file1)) {
$time = filemtime($file1);
if(time() - $time > $expires) {
$jsapi_ticket = null;
}else {
$jsapi_ticket = file_get_contents($file1);
}
}else{
fopen("$file1", "w+");
$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'];
@file_put_contents($file1, $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."×tamp=".$timestamp."&url=".$url."";
$signature=sha1($string1);
$root['appid'] = $appid;
$root['nonceStr'] = $nonceStr;
$root['timestamp'] = $timestamp;
$root['signature'] = $signature;
$root['token'] = $token;
echo json_encode($root);
}
}