怎么在php中使用laravel 实现一个二维码签到功能(laravel,php,开发技术)

时间:2024-05-10 06:22:24 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

怎么在php中使用laravel 实现一个二维码签到功能

框架及拓展包

laravelovertrue/laravel-wechat安装方式:composerrequire"overtrue/laravel-wechat:^6.0"

详细了解请看:laravel-wechat

配置文件及对应信息

config/wechat.php /**公众号*/'official_account'=>['default'=>['app_id'=>env('WECHAT_OFFICIAL_ACCOUNT_APPID','your-app-id'),//AppID'secret'=>env('WECHAT_OFFICIAL_ACCOUNT_SECRET','your-app-secret'),//AppSecret'token'=>env('WECHAT_OFFICIAL_ACCOUNT_TOKEN','your-token'),//Token'aes_key'=>env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY',''),//EncodingAESKey],],

生成二维码

<?phpnamespaceApp\Model\WeChat;useIlluminate\Database\Eloquent\Model;classQrcodeextendsModel{ privatestatic$app; publicfunction__construct(){ self::$app=app('wechat.official_account'); }/***@title生成临时二维码*@param$action_info*@paramfloat|int$expire_seconds*@return$result*@return$result[ticket]获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。*@return$result[expire_seconds]该二维码有效时间,以秒为单位。最大不超过2592000(即30天)*@return$result[url]二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片*@return$result[url1]通过ticket换取二维码后地址*/ publicfunctiontemporary($action_info,$expire_seconds=30*24*60*60){ $result=self::$app->qrcode->temporary($action_info,$expire_seconds); $ticket=$result['ticket']; $url=$this->qrcode_url($ticket); $result['url1']=$url; $result['action_info']=$action_info; return$result; }/***@title生成永久二维码*@param$action_info*@return$result*@return$result[ticket]获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码*@return$result[expire_seconds]该二维码有效时间,以秒为单位。最大不超过2592000(即30天)*@return$result[url]二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片*@return$result[url1]通过ticket换取二维码后地址*/ publicfunctionforever($action_info){ $result=self::$app->qrcode->forever($action_info); $ticket=$result['ticket']; $url=$this->qrcode_url($ticket); $result['url1']=$url; $result['action_info']=$action_info; return$result; }/***@title获取二维码url*@param$ticket*@return$url二维码url*/ publicfunctionqrcode_url($ticket){ $url=self::$app->qrcode->url($ticket); return$url; }}

实现一个简单的推送

<?phpnamespaceApp\Http\Controllers;useApp\Http\Controllers\Controller;useIlluminate\Support\Facades\Log;classWeChatControllerextendsController{/***处理微信的请求消息**@returnstring*/publicfunctionserve(){Log::info('requestarrived.');#注意:Log为Laravel组件,所以它记的日志去Laravel日志看,而不是EasyWeChat日志$app=app('wechat.official_account');$app->server->push(function($message){return"helloeveryone!";});return$app->server->serve();}}

处理事件

<?phpnamespaceApp\Http\Controllers;useApp\Http\Controllers\Controller;useIlluminate\Support\Facades\Log;useIlluminate\Http\Request;useApp\Model\SCAN;classWeChatControllerextendsController{/***处理微信的请求消息**@returnstring*/publicfunctionserve(){Log::info('requestarrived.');#注意:Log为Laravel组件,所以它记的日志去Laravel日志看,而不是EasyWeChat日志$app=app('wechat.official_account');$app->server->push(function($message){case'event':switch($message['Event']){case'subscribe'://关注事件,扫描带参数二维码事件(用户未关注时,进行关注后的事件推送)return"helloeveryone!";break;case'unsubscribe'://取消关注事件break;case'SCAN'://扫描带参数二维码事件(用户已关注时的事件推送) $obj=newSCAN();//处理扫码相关业务逻辑 $info=$obj->index($message); Log::info($info);return$info;break;default:return$message['Event'];break;} break;});return$app->server->serve();}}

业务模块并推送模版消息

<?phpnamespaceApp\Model;useIlluminate\Database\Eloquent\Model;useIlluminate\Support\Facades\DB;classSCANextendsModel{//扫码 publicfunctionindex($message){ $openid=$message['FromUserName']; $evenkey=$message['EventKey']; $preg='/^aaa-/'; preg_match_all($preg,$evenkey,$evenkey_arr); if(!empty($evenkey_arr[0])){ $new_evenkey=$evenkey_arr[0][0]; $reg="/^$new_evenkey/"; $evenkey=trim(preg_replace($reg,'',$evenkey)); if($new_evenkey=="aaa-"){//生成二维码时所传人的参数 $this->operation($evenkey,$openid); } }else{ return; } }/***@paramevenkey参数*@paramopenid要向哪个用户推送信息*/publicfunctionoperation($evenkey,$openid){//此处省略业务逻辑根据一个状态判断大家直接套用就好$status=1;if($status==1){$this->success($openid);}else{$this->error($openid);}}/***@title扫码成功*@paramopenid用户openid*/ publicfunctionsuccess($openid){ $app=app('wechat.official_account');//这里可以填写您选择的公众号中模版消息的模版id$template_id='';//$data是模版中的详细内容按照微信中的内容进行填写下面只是一个例子 $data=array("first"=>'',"keyword1"=>'',"keyword2"=>'', "keyword3"=>date('Y-m-dH:i'), "keyword4"=>'',"remark"=>'');//最后发送的信息 $info=[ 'touser'=>$openid, 'template_id'=>$template_id, 'url'=>'', 'data'=>$data, ]; return$app->template_message->send($info); }/***@title扫码失败*@paramopenid用户openid*/ publicfunctionerror($openid){ $app=app('wechat.official_account');//这里可以填写您选择的公众号中模版消息的模版id$template_id='';//$data是模版中的详细内容按照微信中的内容进行填写下面只是一个例子 $data=array("first"=>'',"keyword1"=>'',"keyword2"=>'', "keyword3"=>date('Y-m-dH:i'), "keyword4"=>'',"remark"=>'');//最后发送的信息 $info=[ 'touser'=>$openid, 'template_id'=>$template_id, 'url'=>'', 'data'=>$data, ]; return$app->template_message->send($info); }}

PHP开发环境搭建工具有哪些

一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServer也同样的也是和phpStudy一样操作简单对小白比较友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包;四、MAMP,MAMP分为两种MAMP和MAMP Pro for Mac。五、宝塔面板,宝塔面板是一款服务器管理软件,支持windows和linux系统。六、UPUPW,UPUPW是目前Windows平台下最具特色的Web服务器PHP套件。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么在php中使用laravel 实现一个二维码签到功能的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么在conda中设置channel镜像下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18