微信小程序菊花二维码生成

3 篇文章 0 订阅

欢迎大家访问我的博客 blog.ayla1688.cool


 

最近在做生成生成微信小程序菊花二维码, 发现其中有一个坑, 在此记录。另外,深深鄙视某度上的搜索结果,都是瞎写的,没有一点实践精神的垃圾代码。

废话不多说,先来看看微信官方文档给的解释:

链接:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html#method-http

 先来看看问题1, 网上大多数人,肯能都将access_token 拼在了post data 参数中了,导致出现错误。 

问题2, line_color 是个object 类型, 也就是个对象 。 刚开始博主没有意识到, 折腾了大概半小时,终于想明白是这里出了问题, 如何解决?

$line_color = [
'r' => 0,
'g' => 0,
'b' => 0
];

$line_color = json_decode(json_encode($line_color));

嘿嘿, 这不就OK了么。 

以下上代码, 获取access_token 部分就不贴出来了。

    /**
     * 生成微信小程序分享二维码
     * Function getWxAcode
     * @author mselect <445712421@qq.com>
     * @DateTime 2019/5/24
     * @return array
     * @param $fund_id          众筹ID
     */
    public function getWxAcode($path, $param){
        $accessToken = $this->getAccessToken();
        if(!$accessToken){
            return ['code' => -1, 'msg' => '获取access_token失败'];
        }else {
            //生成二维码
            $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $accessToken;
            $color = [
                'r' => 0,
                'g' => 0,
                'b' => 0,
            ];
            $data = [
                'scene' => 'param=' . $param ,
                'page' => $path,
                'width' => '200',
                'auto_color' => false,  //自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
                'line_color' => json_decode(json_encode($color)),   //auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
                'is_hyaline' => true,   //是否需要透明底色,为 true 时,生成透明底色的小程序
            ];
            //方式二
            //$url2 = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" . $accessToken;
//            $data2 = [
//                'path' => 'pages/ranktab/index/index',
//                'width' => 280
//            ];


//            $color = [
//                'r' => 0 ,
//                'g' => 0,
//                'b' => 0,
//            ];
            //方式三
//            $url3 = "https://api.weixin.qq.com/wxa/getwxacode?access_token=$accessToken";
//            $data3 = [
//                'path' => 'pages/ranktab/index/index?product_id=33',
//                'width' => 280,
//                'auto_color' => false,
//                'line_color' => json_decode(json_encode($color)),
//                'is_hyaline' => false,
//            ];

            $backData = curl_post($url,  json_encode($data) );
            return $backData;
        }
    }
    function curl_post($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))
        {
            $header = [
                'Content-Type: application/json',
                'Content-Length: ' . strlen($data)
            ];

            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值