PHP微信公众平台开发高级篇--微信JS-SDK

实例

test.php

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 "
"
; echo $signature; //可能出现的原因:1.url invalid domain 解决方法:在JS接口安全域名出去除填写域名的http://部分

share.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewpoint" content="initial-scale=1.0;width=device-width">
    <title>微信分享实例title>
    
    
    <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>

你可能感兴趣的:(微信)