微信自定义分享config配置参数详解

第一步:获取accesstoken

第二步:用accesstoken获取ticket,然后将ticket写入缓存,过期时间7200秒

第三步:获取前端传递的分享页面的url

第四步:将参数进行拼接,然后使用sha1()进行加密生成sign

第五步:将参数返回给前端配置

下面的代码示例我用的是Tp5.0框架,每一步都有注释,不明白的地方仔细看注释。

//分享获取token
    public function jksb_accesstoken(){
        $appid = '微信公众号id';
        $secret = '微信公众号秘钥';
        //拼接调用api接口获取accesstoken
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret; 
        
        //调用curl get请求
        $token = $this->curlHttp($url); 
      	
        //获取到accesstoken之后再调接口获取ticket
      	$jsapi_ticket_url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?            access_token='.$token['access_token'].'&type=jsapi'; 
		
        //调用curl get请求
        $jsapi_ticket = $this->curlHttp($jsapi_ticket_url);
        //将返回的ticket写入缓存,ticket过期时间7200秒
      	Cache::set('jsapi_ticket', $jsapi_ticket['ticket'], 7100);
        //返回ticket
      	return $jsapi_ticket['ticket'];
    }
  

    
    //接受前端传递过来的url参数
    public function jksb_sign(){
      	$post = $this->request->param();

      	//从缓存里面获取ticket
    	$jsapi_ticket = Cache::get('jsapi_ticket');

        //判断是否过期
        if(!$jsapi_ticket){
            //过期了就调用获取ticket的方法,重新获取
			$jsapi_ticket = $this->jksb_accesstoken();
        }
      
      	//noncestr 是自定义的随机字符串,这里随便写
      	$noncestr='GlfeZYTPz0wzccnW';

        //time  = 当前时间
      	$time = time();

        //url是前端传递的url
      	$url =$post['url'];

        //将要加密的内容拼接为字符串
        $sign_str ='jsapi_ticket='.$jsapi_ticket.'&noncestr='.$noncestr.'&timestamp='.$time.'&url='.$url;
		
        //使用sha1()进行加密
        $sign = sha1($sign_str);

        //将参数返回给前端配置
		$return['time'] = $time; //时间
    	
        $return['url'] = $url; //当前分享页面的地址,由前端传递给后端,后端加密完之后再返回给前端
        $return['sign'] = $sign; //加密之后的签名
      	
        $return['noncestr'] = $noncestr;//随机字符串

        return json_encode($return); //返回
     }




   /**
     * 发送get请求
     */
    public function curlHttp($url){

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $output = curl_exec($ch);
        //释放curl句柄
        curl_close($ch);
        return json_decode($output,true);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值