为满足公司签到业务场景 最终敲定使用微信二维码来实现
微信公众号相关配置
在微信公众平台登陆上去后,点开开发中的基本配置看到的基本信息
框架及拓展包
laravelovertrue/laravel-wechat 安装方式:compor require "overtrue/laravel-wechat:^6.0"
详细了解请看:
配置文件及对应信息
config/wechat.php/* * 公众号 */ 'official_account' => [ 'default' => [ 'app_id' => env('wechat_official_account_appid', 'your-app-id'), // appid 'cret' => env('wechat_official_account_cret', 'your-app-cret'), // appcret 'token' => env('wechat_official_account_token', 'your-token'), // token 'aes_key' => env('wechat_official_account_aes_key', ''), // encodingaeskey ], ],
生成二维码
<?phpnamespace app\model\wechat;u illuminate\databa\eloquent\model;class qrcode extends model{private static $app;public function __construct(){ lf::$app = app('wechat.official_account');} /** * @title 生成临时二维码 * @param $action_info * @param float|int $expire_conds * @return $result * @return $result[ticket] 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。 * @return $result[expire_conds] 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天) * @return $result[url] 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 * @return $result[url1] 通过ticket换取二维码后地址 */public function temporary($action_info,$expire_conds = 30*24*60*60稳稳的幸福歌词){ $result = lf::$app->qrcode->temporary($action_info, $expire_conds);$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_conds] 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天) * @return $result[url] 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 * @return $result[url1] 通过ticket换取二维码后地址 */public function forever($acti7 14是什么节日on_info){ $result = lf::$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 */public function qrcode_url($ticket){$url = lf::$app->qrcode->url($ticket);return $url;}}
实现一个简单的推送
<?phpnamespace app\http\controllers;u app\http\controllers\controller;u illuminate\support\facades\log;class wechatcontroller extends controller{ /** * 处理微信的请求消息 * * @return string */ public function rve() { log::info('request arrived.'); # 注意:log 为 laravel 组件,所以它记的日志去 laravel 日志看,而不是 easywechat 日志 $app = app('wechat.official_account'); $app->rver->push(function($message){ return "hello everyone!"; 马剑琴 }); return $app->rver->rve(); }}
处理事件
<?phpnamespace app\http\controllers;u app\http\controllers\controller;u illuminate\support风景的文案\facades\log;u illuminate\http\request;u app\model\scan;class wechatcontroller extends controller{ /** * 处理微信的请求消息 *统计联网直报平台官网 * @return string */ public function rve() { log::info('request arrived.'); # 注意:log 为 laravel 组件,所以它记的日志去 laravel 日志看,而不是 easywechat 日志 $app = app('wechat.official_account'); $app->rver->push(function($message){ ca 'event': switch ($message['event']) { ca 'subscribe': //关注事件, 扫描带参数二维码事件(用户未关注时,进行关注后的事件推送) return "hello everyone!"; break; ca 'unsubscribe': //取消关注事件 break; ca 'scan': //扫描带参数二维码事件(用户已关注时的事件推送)$obj = new scan(); //处理扫码相关业务逻辑$info = $obj -> index($message);log::info($info); return $info; break; default: return $message['event']; break; }break; }); return $app->rver->rve(); }}
业务模块并推送模版消息
<?phpnamespace app\model;u illuminate\databa\eloquent\model;u illuminate\support\facades\db;class scan extends model{ //扫码public function index($message){$openid = $message['fromurname'];$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);}}el{return;}} /** * @param evenkey 参数 * @param openid 要向哪个用户推送信息 */ public function operation($evenkey,$openid) { //此处省略业务逻辑 根据一个状态判断 大家直接套用就好 $status = 1; if($status == 1){ $this->success($openid); }el{ $this->error($openid); } } /** * @title 扫码成功 * @param openid 用户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 = ['tour' => $openid,'template_id' => $template_id,'url' => '','data' => $data,];return $app -> template_message ->nd($info);} /** * @title 扫码失败 * @param openid 用户openid */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 = ['tour' => $openid,'template_id' => $template_id,'url' => '','data' => $data,];return $app -> template_message ->nd($info);}}
以上是我的使用心得 谢谢大家!
到此这篇关于php+laravel 扫码二维码签到功能的文章就介绍到这了,更多相关php二维码签到内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-09 03:05:12,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8c632542778c4b209736bdec54c7f4d4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php+laravel 扫码二维码签到功能.doc
本文 PDF 下载地址:php+laravel 扫码二维码签到功能.pdf
留言与评论(共有 0 条评论) |