微信扫一扫

HTML

<!-- 开启扫一扫 -->
<input type="button" id="wxcode" style="width:100%;height:10%;font-size:80px" value="微信扫一扫">

JavaScript

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
<!-- 
	扫一扫
 -->
 <script>
	$(function(){
             //获取URL地址后的参数 传到后台处理
		var urltail = String(window.location.search);
		$.ajax({
			type:"post",
			dataType:"json",
			data:{urltail:urltail},
			url:"{pigcms::U('Wechat/getSignPackage')}",
			success:function(data){
		 		wx.config({
	                debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
	                appId : data.appId, // 必填,公众号的唯一标识
	                timestamp :data.timestamp, // 必填,生成签名的时间戳
	                nonceStr : data.nonceStr, // 必填,生成签名的随机串
	                signature : data.signature,// 必填,签名,见附录1
	                jsApiList : ['translateVoice','scanQRCode']
	                // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
	            });
				$('#wxcode').click(function(){
					// alert(1);
					wx.scanQRCode({
						needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
						scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
						success: function (res) {
						var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
					}
					});
				})
			}
		})
	})
 </script>

PHP

<?php

Class WechatAction extends Action
{
	/**
	 * [getSignPackage 主程序]
	 * @return [type] [description]
	 */
	public function getSignPackage() {
		if(IS_POST){
			$urltail = I('post.urltail');
			$urltail = str_replace('amp;','',$urltail); //打印出链接中有 amp; 用这步
		}
		$jsapiTicket = $this->getJsApiTicket();
		//自动识别 http 或者 https
		$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
		//拼接url地址
		$url = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$urltail;

		$nonceStr = $this->createNonceStr();
		$Parameters["jsapi_ticket"]=$jsapiTicket;
		$Parameters['url'] = $url;
		//测试时候可以先用当前访问的url地址 固定值测试
        // $Parameters["url"]= "http://m.lingdie.com/index.php?g=Wap&m=Yangrui&a=index&token=xylbpw1535431552&diymenu=1";
        $Parameters["timestamp"]= time();
        $Parameters["noncestr"] = $nonceStr;
        $signature =$this->genSha1Sign($Parameters);
		$signPackage = array(
		"appId" => "wx380b174948da9a37",
		"nonceStr" => $Parameters["noncestr"],
		"timestamp" => $Parameters["timestamp"],
		"signature" => $signature,
		"url" => $Parameters['url']
		);
		echo json_encode($signPackage);
	}

	/**
	 * [genSha1Sign 生成 signature]
	 * @param  
	 * @return 
	 */
	public function genSha1Sign($Parameters){
        $signPars = '';
        ksort($Parameters);
        foreach($Parameters as $k => $v) {
            if("" != $v && "sign" != $k) {
                if($signPars == '')
                    $signPars .= $k . "=" . $v;
                else
                    $signPars .=  "&". $k . "=" . $v;
            }
        }
        //$signPars = http_build_query($Parameters);
        $sign = SHA1($signPars);
        $Parameters['sign'] = $sign;
        return $sign;
    }
    /**
     * [createNonceStr 生成随机码]
     * @param  integer $length [description]
     * @return [type]          [description]
     */
	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;
	}

	/**
	 * [getJsApiTicket 获取jsapi-ticket]
	 * @return [type] [description]
	 */
	private function getJsApiTicket() {
		$url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$this->getAccessToken()."&type=jsapi";
        $jsapi_data=$this->httpGet($url);
        $jsapi_array=json_decode($jsapi_data,true);
        $ticket=$jsapi_array['ticket'];
		return $ticket;
	}

	/**
	 * [getAccessToken 获取access_token]
	 * @return [type] [description]
	 */
	private function getAccessToken() {
		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx380b174948da9a37&secret=4eee68a97a7b566e5babc78af0d53005";
		$res = json_decode($this->httpGet($url));
		$access_token = $res->access_token;
		return $access_token;
	}

	/**
	 * [httpGet http请求]
	 */
	public function httpGet($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值