怎么在php中使用laravel 实现一个二维码签到功能
短信预约 -IT技能 免费直播动态提醒
怎么在php中使用laravel 实现一个二维码签到功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
框架及拓展包
laravelovertrue/laravel-wechat 安装方式:composer require "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 ], ],
生成二维码
<?phpnamespace App\Model\WeChat;use Illuminate\Database\Eloquent\Model;class Qrcode extends Model{private static $app;public function __construct(){ self::$app = app('wechat.official_account');} public function temporary($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;} public function forever($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;} public function qrcode_url($ticket){$url = self::$app->qrcode->url($ticket);return $url;}}
实现一个简单的推送
<?phpnamespace App\Http\Controllers;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\Log;class WeChatController extends Controller{ public function serve() { Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志 $app = app('wechat.official_account'); $app->server->push(function($message){ return "hello everyone!"; }); return $app->server->serve(); }}
处理事件
<?phpnamespace App\Http\Controllers;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\Log;use Illuminate\Http\Request;use App\Model\SCAN;class WeChatController extends Controller{ public function serve() { Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志 $app = app('wechat.official_account'); $app->server->push(function($message){ case 'event': switch ($message['Event']) { case 'subscribe': //关注事件, 扫描带参数二维码事件(用户未关注时,进行关注后的事件推送) return "hello everyone!"; break; case 'unsubscribe': //取消关注事件 break; case 'SCAN': //扫描带参数二维码事件(用户已关注时的事件推送)$obj = new SCAN(); //处理扫码相关业务逻辑$info = $obj -> index($message);Log::info($info); return $info; break; default: return $message['Event']; break; }break; }); return $app->server->serve(); }}
业务模块并推送模版消息
<?phpnamespace App\Model;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Facades\DB;class SCAN extends Model{ //扫码public function index($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;}} public function operation($evenkey,$openid) { //此处省略业务逻辑 根据一个状态判断 大家直接套用就好 $status = 1; if($status == 1){ $this->success($openid); }else{ $this->error($openid); } } public function success($openid){$app = app('wechat.official_account'); //这里可以填写您选择的公众号中模版消息的模版id $template_id = ''; //$data是模版中的详细内容 按照微信中的内容进行填写 下面只是一个例子$data = array( "first" => '', "keyword1" => '', "keyword2" => '',"keyword3" => date('Y-m-d H:i'),"keyword4" => '', "remark" => '' ); //最后发送的信息$info = ['touser' => $openid,'template_id' => $template_id,'url' => '','data' => $data,];return $app -> template_message ->send($info);} public function error($openid){$app = app('wechat.official_account'); //这里可以填写您选择的公众号中模版消息的模版id $template_id = ''; //$data是模版中的详细内容 按照微信中的内容进行填写 下面只是一个例子$data = array( "first" => '', "keyword1" => '', "keyword2" => '',"keyword3" => date('Y-m-d H: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套件。
看完上述内容,你们掌握怎么在php中使用laravel 实现一个二维码签到功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341