微信开发生成带参数的二维码的讲解

简介: 生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微信公众号上

生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微信公众号上

用微信扫一扫推送到开发者网址那儿的数据如下:


   <ToUserName>gh_eb6940eed***</ToUserName>    <FromUserName>ofRsxuGNUpSuCBQVEF6YmbQ2y7dg</FromUserName>    <CreateTime>1445757243</CreateTime>    <MsgType>event</MsgType>    <Event>SCAN</Event>    <EventKey>123</EventKey>    <Ticket>gQH57zoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL3JrT0FPeG5tNjdhU3c5ZWpzRzI1AAIEAH8sVgMEgDoJAA==</Ticket>


可以看出是一个xml格式的字符串,Event里SCAN表示扫描,EventKey是生成二维码时在json设置的数值,EventKey是可以自己指定的,其它都是微信平台内定的。。。通过自定义EventKey的数据,可以做到自动回复指定的数据

更多的应用场景请自由发挥,比如:扫一扫,领取红包等功能也是可以实现的,还有微信签到等等,好了不多废话,之后我会主要讲下微信扫码自动登录网站!类似58同城的微信登录


http://passport.58.com


下面说下这部分流程:


1.获取access_token  这个没有什么可说的  需要注意的是 access_token 全局缓存下  代码里面有不多说


2.创建二维码ticket



http请求方式: POST

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN POST数据格式:json

POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}


正确的Json返回结果:


{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==","expire_seconds":60,"url":"http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI"}


3.


获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。


请求说明


HTTP GET请求(请使用https协议) https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET 提醒:TICKET记得进行UrlEncode



全部代码两个文件 step1.php  function.php :


step1.php :


<?php

include("function.php");

define("APPID","wx3f839ee5ed734***");

define("APPSECRET","1c9f66fa8d394bd410a821a91c47be3b");

//获取accesstoken

$access_token=getAccessToken(APPID,APPSECRET);

//获取二维码ticket

$url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";

$json='{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}';

$return=post_json($url,$json);

$arr=json_decode($return,1);

$ticket=urlencode($arr['ticket']);

//echo $ticket;

?>

<meta charset="utf-8">

<div style="width:500px;margin:0 auto;">

<div>请使用微信扫描二维码登陆</div>

<img src="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=<?php echo $ticket?>"  style="width:200px;height:200px;" >

<div>www.wlphp.com版权所有</div>

</div>


function.php:


<?php

function getAccessToken($appId,$appSecret) {

   // 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=$appId&secret=$appSecret";

     //$res = json_decode(httpGet($url));   //改用file_get_contents 注意需要环境支持 谢谢

     $res = json_decode(file_get_contents($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;

 }

    // 工具函数 //

    /* 使用curl来post一个json数据 */

    // CURLOPT_SSL_VERIFYPEER,CURLOPT_SSL_VERIFYHOST - 在做https中要用到

    // CURLOPT_RETURNTRANSFER - 不以文件流返回,带1

function post_json($url,$json){

$post_url = $url;

$post_data =$json;

$ch = curl_init();//初始化

curl_setopt($ch, CURLOPT_TIMEOUT, '30');//超时时间

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Keep-Alive: 300','Connection: keep-alive')) ;

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)');

curl_setopt($ch, CURLOPT_POST,1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_URL,$post_url);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  

$contents = curl_exec($ch);

if(curl_errno($ch)){}

return $contents;

  }


相关文章
|
4月前
|
Java API
wxid添加微信好友工具,免费微信wxid转换器二维码,jar实现仅供学习参考
本项目实现微信ID与wxid的转换及二维码生成功能,核心逻辑基于ZXing库完成QR编码,支持文件批量导入导出。
|
4月前
|
编解码 Java
wxid加微信好友工具,二维码转换工具,微信号转wxid插件【仅供学习参考】
本工具基于JAVA实现微信ID转换功能,支持wxid、微信号与二维码之间的相互转换。开发中使用ZXing库(版本3.5.1)完成二维码编解码,并设计核心类`WxidConverter`实现关键转换逻辑。
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
227 0
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
720 0
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
|
小程序
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
2660 0
|
小程序 JavaScript
微信小程序长按识别图片二维码功能
微信小程序长按识别图片二维码功能
1427 0
|
小程序 JavaScript
微信小程序显示二维码?
微信小程序显示二维码?

热门文章

最新文章