微信支付笔记:微信浏览器分享设置和回调

在微信中分享给好友/分享至朋友围是效应应该是较常用之了,就以分享到对象围举例,分享出去的情在对象围的展示是盖同等摆放小图+一个粗略的牵线的形式来深受密友看到底,点击后才是详情,那么这么一来,这张小图及即时段小简介就直成为了此被分享后底情节的给点击率的重中之重。在默认情况下,这张图片会载入内容主题有的首先张老图片,而简介只会加载一个网址。这样的展示方式尚是一定不顺畅之,那咱们来拘禁一下及时部分情节,是通过什么形式来安的,拿PHP来开一个比喻:

 

率先我们用发出一个公众号,并且赢得appid及appsecret。

然后,我们经过appid和appsecret,就可于微信平台来换取access_token了。

define("APPID", $appid);
define("APPSECRET", $appsecret);

// 获取access_token
$token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . APPID . "&secret=" . APPSECRET;
$res = file_get_contents($token_access_url); //获取文件内容或获取网络请求的内容
$result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
$access_token = $result['access_token'];

通过access_token,我们得以向微信平台索取一个jsapi_ticket:

// 获取jsapi_ticket
$ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=TOKEN";

$res = file_get_contents($ticket_url); //获取文件内容或获取网络请求的内容
$result = json_decode($res, true); //接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
$ticket = $result['ticket'];

好了,准备干活就绪,我们可开始我们的安装了。

微信的享受设置是透过wx.config来展开的。

<script>
wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '<?php echo APPID;?>', // 必填,公众号的唯一标识
    timestamp: <?php echo $timestamp;?>, // 必填,生成签名的时间戳
    nonceStr: '<?php echo $noncestr;?>', // 必填,生成签名的随机串
    signature: '<?php echo $signature;?>',// 必填,签名
    jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表
});
</script>

高中档appid就是我们微信公众号的appid,timestamp是眼前底光阴戳,noncestr是随便的字符串,用来充分成签名的,signature是变的签字,jsapilist是我们得采取的微信接口,这边的语我们就算动分享给好友同享受至朋友围就点儿单接口就可以了。

简简单单列一下timestamp,noncestr,以及signature的生成流程:

// 生成签名
  // 生成随机字符串
class RandChar{
  function getRandChar($length){
   $str = null;
   $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
   $max = strlen($strPol)-1;

   for($i=0;$i<$length;$i++){
    $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
   }
   return $str;
  }
}
$randCharObj = new RandChar();
$noncestr = $randCharObj->getRandChar(16);


$timestamp = time();
if ($_SERVER['QUERY_STRING']){
    $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
}else{
    $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
}

$parameters = array("noncestr" => $noncestr,
                        "jsapi_ticket" => $ticket,
                        "timestamp" => $timestamp,
                        "url" => $url);
ksort($parameters);

$string1 = "";
foreach ($parameters as $key => $val){
    $string1 .= $key."=".$val."&";
}
$string1 = substr($string1,0,-1);
$signature = sha1($string1);

从那之后,我们对wx.config的一个部署就曾经就了,接下去就好随意设置我们心理测试正提到的稍图及简介内容了:

    wx.ready(function(){
        // 分享到朋友圈设置
        wx.onMenuShareTimeline({
            title: '测试标题', // 分享标题
            link: 'http://www.baidu.com', // 分享链接
            imgUrl: 'http://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png', // 分享图标
            success: function () { 
                alert("分享成功");
            },
            cancel: function () { 
                alert("分享失败");
            }
        });
        // 分享给好友
        wx.onMenuShareAppMessage({
            title: '测试标题', // 分享标题
            desc: '测试分享描述', // 分享描述
            link: 'http://www.baidu.com', // 分享链接
            imgUrl: 'http://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png', // 分享图标
            type: '', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () { 
                alert("分享成功");
            },
            cancel: function () { 
                alert("分享失败");
            }
        });
    })

中级提一下,success和cancel这半单之价为是一对一常用之,分别表示成功分享后底js回调以及取消分享后的回调,用来举行有断定用户享受朋友围后显得心理测试答案之类的略微作用还是充分有因此之啊。

 

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图