微信小程序菊花二維碼生成

最近在做生成生成微信小程序菊花二維碼, 發現其中有一個坑, 在此記錄。另外,深深鄙視某度上的搜索結果,都是瞎寫的,沒有一點實踐精神的垃圾代碼。

廢話不多說,先來看看微信官方文檔給的解釋:

鏈接: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 <[email protected]>
     * @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;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章