class JSSDK { |
private $appId ; |
private $appSecret ; |
public function __construct( $appId , $appSecret ) { |
$this ->appId = $appId ; |
$this ->appSecret = $appSecret ; |
} |
public function getSignPackage() { |
$jsapiTicket = $this ->getJsApiTicket(); |
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]" ; |
$timestamp = time(); |
$nonceStr = $this ->createNonceStr(); |
// 这里参数的顺序要按照 key 值 ASCII 码升序排序 |
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url" ; |
$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() { |
// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 |
$data = json_decode( file_get_contents ( "jsapi_ticket.json" )); |
if ( $data ->expire_time < time()) { |
$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; |
if ( $ticket ) { |
$data ->expire_time = time() + 7000; |
$data ->jsapi_ticket = $ticket ; |
$fp = fopen ( "jsapi_ticket.json" , "w" ); |
fwrite( $fp , json_encode( $data )); |
fclose( $fp ); |
} |
} else { |
$ticket = $data ->jsapi_ticket; |
} |
return $ticket ; |
} |
private function getAccessToken() { |
// access_token 应该全局存储与更新,以下代码以写入到文件中做示例 |
$data = json_decode( file_get_contents ( "access_token.json" )); |
if ( $data ->expire_time < time()) { |
$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; |
if ( $access_token ) { |
$data ->expire_time = time() + 7000; |
$data ->access_token = $access_token ; |
$fp = fopen ( "access_token.json" , "w" ); |
fwrite( $fp , json_encode( $data )); |
fclose( $fp ); |
} |
} else { |
$access_token = $data ->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_URL, $url ); |
$res = curl_exec( $curl ); |
curl_close( $curl ); |
return $res ; |
} |
} |
$appid = 'wx8304ad33eda1cbfe' ; |
$appsecret = '48f9a8342d4db04cb7b9abe1d4bc99b7' ; |
$jssdk = new JSSDK( $appid , $appsecret ); |
$signPackage = $jssdk ->GetSignPackage(); |
extract( array ( "signPackage" => $signPackage )); |
include ( "./wxindex2.html" ); |
前端js实现 |
<script> |
|
|
wx.config({ |
debug: false, |
appId: '<?php echo $signPackage["appId"];?>' , |
timestamp: <?php echo $signPackage [ "timestamp" ];?>, |
nonceStr: '<?php echo $signPackage["nonceStr"];?>' , |
signature: '<?php echo $signPackage["signature"];?>' , |
jsApiList: [ |
// 所有要调用的 API 都要加到这个列表中 |
'onMenuShareTimeline' , |
'onMenuShareAppMessage' |
] |
}); |
|
|
wx.ready( function (){ |
wx.onMenuShareTimeline({ |
title: '看了我的购物车,马云都给跪了!' , // 分享标题 |
link: 'http://www.flyinjoy.com/wxcallback/share.php?preview=' + '<?php echo $preview; ?>' + '&inname=' + '<?php echo $_GET[' inname '] ?>' + '&bg_img=' + '<?php echo $bg_img; ?>' , // 分享链接 |
imgUrl: 'http://www.flyinjoy.com/wxcallback/imges/LOGO.jpg' , // 分享图标 |
desc: '扫扫二维码,微信关注“飞享购”,你也可以晒出属于你的购物车!' , |
success: function () { |
// 用户确认分享后执行的回调函数 |
alert( "分享成功" ); |
}, |
cancel: function () { |
// 用户取消分享后执行的回调函数 |
} |
}); |
wx.onMenuShareAppMessage({ |
title: '看了我的购物车,马云都给跪了!' , // 分享标题 |
desc: '扫扫二维码,微信关注“飞享购”,你也可以晒出属于你的购物车!' , // 分享描述 |
link: 'http://www.flyinjoy.com/wxcallback/share.php?preview=' + '<?php echo $preview; ?>' + '&inname=' + '<?php echo $_GET[' inname '] ?>' + '&bg_img=' + '<?php echo $bg_img; ?>' , // 分享链接 |
imgUrl: 'http://www.flyinjoy.com/wxcallback/imges/LOGO.jpg' , // 分享图标 |
type: '' , // 分享类型,music、video或link,不填默认为link |
dataUrl: '' , // 如果type是music或video,则要提供数据链接,默认为空 |
success: function () { |
// 用户确认分享后执行的回调函数 |
alert( "分享成功" ); |
}, |
cancel: function () { |
// 用户取消分享后执行的回调函数 |
} |
}); |
|
|
}) |
|
</script> |
by: 发表于:2017-10-16 17:25:26 顶(0) | 踩(0) 回复
??
回复评论