• tp6 小程序码生成(带参数)


     首先到微信小程序平台配置服务器信息 

    小程序必须是验证的,而且已经发布审核过的页面路径

    创建Wxcode类

    生成小程序码业务类

    1. declare (strict_types = 1);
    2. namespace app\controller\Index;
    3. class Wxcode
    4. {
    5. public function getAccesstoken(){
    6. $appid = ''; /*字符串小程序appid*/
    7. $srcret = ''; /*字符串小程序秘钥*/
    8. $tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$srcret;
    9. $getArr=array();
    10. $tokenArr=json_decode($this->send_post($tokenUrl,$getArr,"GET"));
    11. $access_token=$tokenArr->access_token;
    12. return $access_token;
    13. }
    14. public function send_post($url, $post_data,$method='POST') {
    15. $postdata = http_build_query($post_data);
    16. $options = array(
    17. 'http' => array(
    18. 'method' => $method, //or GET
    19. 'header' => 'Content-type:application/x-www-form-urlencoded',
    20. 'content' => $postdata,
    21. 'timeout' => 15 * 60 // 超时时间(单位:s)
    22. )
    23. );
    24. $context = stream_context_create($options);
    25. $result = file_get_contents($url, false, $context);
    26. return $result;
    27. }
    28. public function api_notice_increment($url, $data){
    29. $ch = curl_init();
    30. $header=array('Accept-Language:zh-CN','x-appkey:114816004000028','x-apsignature:933931F9124593865313864503D477035C0F6A0C551804320036A2A1C5DF38297C9A4D30BB1714EC53214BD92112FB31B4A6FAB466EEF245710CC83D840D410A7592D262B09D0A5D0FE3A2295A81F32D4C75EBD65FA846004A42248B096EDE2FEE84EDEBEBEC321C237D99483AB51235FCB900AD501C07A9CAD2F415C36DED82','x-apversion:1.0','Content-Type:application/x-www-form-urlencoded','Accept-Charset: utf-8','Accept:application/json','X-APFormat:json');
    31. curl_setopt($ch, CURLOPT_URL, $url);
    32. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    33. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    34. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    35. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    36. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    37. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    38. curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    39. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    40. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    41. $tmpInfo = curl_exec($ch);
    42. if (curl_errno($ch)) {
    43. return false;
    44. }else{
    45. return $tmpInfo;
    46. }
    47. }
    48. /*上面生成的是数量限制10万的二维码,下面重写数量不限制的码*/
    49. /*getWXACodeUnlimit*/
    50. public function mpcode($page,$cardid){
    51. //传过来的参数
    52. $postdata['scene']=$cardid;
    53. // 宽度
    54. $postdata['width']=430;
    55. // 传过来的页面
    56. $postdata['page']=$page;
    57. // 线条颜色
    58. $postdata['auto_color']=false;
    59. //auto_color 为 false 时生效
    60. $postdata['line_color']=['r'=>'0','g'=>'0','b'=>'0'];
    61. // 是否有底色为true时是透明的
    62. $postdata['is_hyaline']=true;
    63. $post_data = json_encode($postdata);
    64. $access_token=$this->getAccesstoken();
    65. $url="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_token;
    66. $result=$this->api_notice_increment($url,$post_data);
    67. $data='data:image/jpg;base64,'.base64_encode($result);
    68. //需要上传文件图片的
    69. //$data='image/png;base64,'.base64_encode($result);
    70. return $data;
    71. }
    72. }

    调用的方法

    1. declare (strict_types = 1);
    2. namespace app\controller\Index;
    3. use app\BaseController;
    4. class Order_Details_Controller extends BaseController
    5. {
    6. // 生成小程码
    7. public function hexiao_number()
    8. {
    9. $wxcode = new Wxcode();
    10. $page='pages/index/index'; //页面地址
    11. $cardid= '123-abc'; //用-不用&区分,因为二次刷新&会转换%27,容易出错 注意:微信官方规定参数长度不能超过32
    12. $mpcodeimg=$wxcode->mpcode($page,$cardid);
    13. if (!$mpcodeimg) {
    14. return json(['code' => 201, 'msg' => '图片生成失败']);
    15. }else {
    16. return json(['code' => 200, 'imginfo' => $mpcodeimg, 'msg' => '图片生成成功']);
    17. }
    18. // 上传文件(需要上传图片的 mpcode函数中'data:image/jpg;base64,'
    19. 改为 'image/png;base64,')
    20. // $dataret['mpcodeimg']=$mpcodeimg;
    21. // $imageName = "25220_".date("His",time())."_".rand(1111,9999).'.png';
    22. // if (strstr($dataret['mpcodeimg'],",")){
    23. // $image = explode(',',$dataret['mpcodeimg']);
    24. // $image = $image[1];
    25. // }
    26. // $path = "uploads/".date("Ymd",time());
    27. // if (!is_dir($path)){ //判断目录是否存在 不存在就创建
    28. // mkdir($path,0777,true);
    29. // }
    30. // $imageSrc= $path."/". $imageName; //图片名字
    31. // $r = file_put_contents($imageSrc, base64_decode($image));//返回的是字节数
    32. // if (!$r) {
    33. // return json(['code' => 201, 'data' => '', 'msg' => '图片生成失败']);
    34. // }else {
    35. // $imginfo = 'https://***.***.***/' . $imageSrc; //自己的服务器域名/地址
    36. // return json(['code' => 200, 'imginfo' => $mpcodeimg, 'msg' => '图片生成成功']);
    37. // }
    38. }
    39. /* 图片没显示,就先下载图片看下报错了什么信息
    40. 40169 scene参数不能超过32
    41. 45009 调用分钟频率受限(目前5000次/分钟,会调整),如需大量小程序码,建议预生成。
    42. 41030 所传page页面不存在,或者小程序没有发布*/
    43. }

    uniapp 获取参数

    1. onLoad(e) {
    2. let scene = decodeURIComponent(e.scene);
    3. //&是我们定义的参数链接方式
    4. let userId = scene.split("-")[0];
    5. let recommendId = scene.split('-')[1];
    6. console.log(userId)
    7. console.log(recommendId)
    8. }

  • 相关阅读:
    nginx 反向代理 与缓存功能
    Uniapp有奖猜歌游戏系统源码 带流量主
    Android-Framework 时间格式默认使用24小时制、时区为上海
    创建阿里云的免费镜像仓库
    08 数据库查询(2) | OushuDB 数据库使用入门
    宇视大屏蓝屏排查步骤
    hive with tez:无法从链中的任何提供者加载aws凭据
    月薪2w+的测试,到底强在哪里?
    echarts 解决tooltip显示框随鼠标移动,且显示不全问题_付月半子的博客-CSDN博客
    第六十五章 符号概览
  • 原文地址:https://blog.csdn.net/weixin_43453621/article/details/128147536