分享按钮

微信小程序码生成(不限制数据的码)

微信 / 2477人浏览 / 0人评论

微信文档地址 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html


第一步需要获取 ACCESS_TOKEN

public static function getAppletAccessToken()
{

   //获取access_token

   $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";

   $json =$this->httpRequest( $access_token );

   $json = json_decode($json,true);
   $ACCESS_TOKEN = $json["access_token"];

   return $ACCESS_TOKEN;

}

/**
* @param $url
* @param string $data
* @param string $method
* @return mixed
* curl_init 请求
*/

public function httpRequest($url, $data='', $method='GET')
{
   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
   curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
   curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
   if($method=='POST')
   {
       curl_setopt($curl, CURLOPT_POST, 1);
       if ($data != '') {
           curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
       }
   }
   curl_setopt($curl, CURLOPT_TIMEOUT, 30);
   curl_setopt($curl, CURLOPT_HEADER, 0);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   $result = curl_exec($curl);
   curl_close($curl);
   return $result;
   
}


第二步 生成二维码

public function actionInviteFriends()
{
       header('content-type:text/html;charset=utf-8');
       $ACCESS_TOKEN =$this->getAppletAccessToken();
       //构建请求二维码参数
       $url ="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$ACCESS_TOKEN";
       $scene = $invite_code;
       $page = "";
       $param = json_encode(['scene'=>$scene,'page'=>$page]);
       //POST参数
     $result =$this->httpRequest( $url, $param,"POST");
       //保存图片-生成二维

     file_put_contents("qrcode.png", $result);

       $base64_image ="data:image/jpeg;base64,".base64_encode( $result );

     

       return json(['code'=>1,'data'=>$base64_image ]);
 
}


3,微信的 ACCESS_TOKEN 是有上限的,有效时间 2小时。实际项目中需要做一个缓存,防止量大



感谢博主,喝杯咖啡~