Blogger Information
Blog 4
fans 1
comment 1
visits 7665199
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
微信小程序生成带参数的二维码以及小程序码
马冠亚的博客
Original
1896098 people have browsed it

微信小程序生成带参数的二维码

官方共给了三个接口调用,大家可以根据自己的实际情况来使用,我这里使用的是接口B和接口C。
官方文档地址

业务需求:
扫描二维码进入指定商品页面,需要的参数为商品id(goods_id)。

一、先看效果图:

在这里插入图片描述在这里插入图片描述

二、PHP代码实现

  1. public function pathImg(){
  2. $goods_id = '20'; //商品id
  3. //配置APPID、APPSECRET
  4. $APPID = "填写你的小程序appid";
  5. $APPSECRET = "填写你的小程序APPSECRET";
  6. //获取access_token
  7. $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";
  8. $json = $this->httpRequest($access_token);
  9. $json = json_decode($json,true);
  10. $ACCESS_TOKEN = $json['access_token'];
  11. //如果要获取小程序码,请求这个接口
  12. $qcode ="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$ACCESS_TOKEN";
  13. $param = json_encode(array("page"=>"pages/comm_details/comm_details","scene"=>$goods_id));
  14. //如果要获取二维码,请求这个接口
  15. // $qcode ="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN";
  16. // $param = json_encode(array("path"=>"pages/comm_details/comm_details?goods_id=19","width"=> 150));
  17. //POST参数
  18. $result = $this->httpRequest($qcode, $param, "POST");
  19. //生成二维码
  20. file_put_contents("qrcode.png", $result);
  21. //qrcode.png这个就是你生成的二维码图片,可以存到你指定的路径,例如:/update/img/qrcode.png
  22. $base64_image ="data:image/jpeg;base64,".base64_encode($result);
  23. echo $base64_image;
  24. }
  25. //curl请求
  26. public function httpRequest($url, $data='', $method='GET'){
  27. $curl = curl_init();
  28. curl_setopt($curl, CURLOPT_URL, $url);
  29. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  30. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  31. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  32. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  33. curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
  34. if($method=='POST'){
  35. curl_setopt($curl, CURLOPT_POST, 1);
  36. if ($data != ''){
  37. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  38. }
  39. }
  40. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  41. curl_setopt($curl, CURLOPT_HEADER, 0);
  42. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  43. $result = curl_exec($curl);
  44. curl_close($curl);
  45. return $result;
  46. }

注:微信小程序js文件中接收scene所带的参数方法(小程序码需要这么接收)

  1. Page({
  2. onLoad: function(options) {
  3. // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
  4. var scene = decodeURIComponent(options.scene)
  5. console.log(scene)
  6. }
  7. })

备注

1、前端接收scene值解析:
你在php代码中scene传的什么,接收到的就是上面,我这里scene传的20,打印出来就是20,如果scene传的goods_id=20, 那么前端打印出来就是goods_id=20

2、微信开发者工具里面有一个通过二维码编译选项,也可以用这个测试你的生成的码,见下图:
在这里插入图片描述
3、手机扫描二维码或者小程序码默认进入线上版本,具体能不能设置为访问开发版本或者体验版本,我也不知道。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post