From c40e4729dbc3f23de346260d210cbb6979c754dd Mon Sep 17 00:00:00 2001 From: tk Date: Wed, 5 Jun 2024 20:20:00 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=B1=BB=09=E5=9E=8B=E3=80=91?= =?UTF-8?q?=EF=BC=9Afeat=20=E3=80=90=E4=B8=BB=09=E9=A2=98=E3=80=91?= =?UTF-8?q?=EF=BC=9A=E5=B0=81=E8=A3=85=E4=B8=80=E4=B8=AA=20=E5=8F=91?= =?UTF-8?q?=E9=80=81mqtt=E7=9A=84=E5=87=BD=E6=95=B0=20=E3=80=90=E6=8F=8F?= =?UTF-8?q?=09=E8=BF=B0=E3=80=91=EF=BC=9A=20=09[=E5=8E=9F=E5=9B=A0]?= =?UTF-8?q?=EF=BC=9A=E9=A1=BA=E4=BE=BF=E6=B5=8B=E8=AF=95=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=20=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=EF=BC=88=E7=94=A8mqtt=E5=8F=91=E9=80=81)=20=09[=E8=BF=87?= =?UTF-8?q?=E7=A8=8B]=EF=BC=9A=20=09[=E5=BD=B1=E5=93=8D]=EF=BC=9A=20?= =?UTF-8?q?=E3=80=90=E7=BB=93=09=E6=9D=9F=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动 --- .../Api/Controller/PayController.class.php | 39 +++---------------- .../Api/Controller/PublicController.class.php | 37 ++++++++++++++++++ FlyCube/Common/Conf/config.php | 4 +- 3 files changed, 44 insertions(+), 36 deletions(-) diff --git a/FlyCube/Api/Controller/PayController.class.php b/FlyCube/Api/Controller/PayController.class.php index 3bde13b..2dcca99 100644 --- a/FlyCube/Api/Controller/PayController.class.php +++ b/FlyCube/Api/Controller/PayController.class.php @@ -6,7 +6,6 @@ use Yansongda\Pay\Pay; use PhpMqtt\Client\MqttClient; use PhpMqtt\Client\Exceptions\MqttClientException; use PhpMqtt\Client\ConnectionSettings; -use PhpMqtt\Client\Message; class PayController extends PublicController { @@ -83,42 +82,14 @@ class PayController extends PublicController public function notifyCallback() { - $server = 'www.szdot.top'; // MQTT 代理地址 - $port = 1883; // MQTT 代理端口 - $clientId = 'php-mqtt-client'; // 客户端 ID - $username = 'admin'; // 用户名(如果需要) - $password = '123456'; // 密码(如果需要) + $pay = Pay::wechat($this->config); try { - // 创建连接设置对象 - $settings = (new ConnectionSettings)->setUsername($username)->setPassword($password); - // 实例化 MQTT 客户端 - $mqtt = new MqttClient($server, $port, $clientId); - // 连接到 MQTT 代理 - $mqtt->connect($settings); - // 检查是否连接成功 - if ($mqtt->isConnected()) { - echo "连接成功"; - // 发布消息到指定的主题 ps:主题 信息 qos - $mqtt->publish('demo', 'Hello MQTT', 0); - // 断开连接 - $mqtt->disconnect(); - echo "断开连接"; - } else { - echo "连接失败"; - } - } catch (MqttClientException $e) { //连接失败 - echo "Could not connect to MQTT broker: " . $e->getMessage(); + $data = $pay->callback(); // 是的,验签就这么简单! + } catch (\Exception $e) { + // $e->getMessage(); } - // $pay = Pay::wechat($this->config); - - // try { - // $data = $pay->callback(); // 是的,验签就这么简单! - // } catch (\Exception $e) { - // // $e->getMessage(); - // } - - // return $pay->success(); + $this->publish('demo', $data); } } diff --git a/FlyCube/Api/Controller/PublicController.class.php b/FlyCube/Api/Controller/PublicController.class.php index 12b3712..c6c73ef 100644 --- a/FlyCube/Api/Controller/PublicController.class.php +++ b/FlyCube/Api/Controller/PublicController.class.php @@ -7,6 +7,10 @@ use Think\Controller; use Firebase\JWT\JWT; use Firebase\JWT\Key; +use PhpMqtt\Client\MqttClient; +use PhpMqtt\Client\Exceptions\MqttClientException; +use PhpMqtt\Client\ConnectionSettings; + class PublicController extends Controller { protected $openid; // 用户openid @@ -103,4 +107,37 @@ class PublicController extends Controller return $phoneNumber; } } + /** + * @description: 连接mqtt服务器 并向指定主题发布信息 + * @param string $topic mqtt主题 + * @param string $msg 要发布的主题 + */ + protected function publish($topic, $msg) + { + $server = C('mqtt')['server']; // MQTT 代理地址 + $port = C('mqtt')['port']; // MQTT 代理端口 + $clientId = C('mqtt')['client_id']; // 客户端 ID + $username = C('mqtt')['username']; // 用户名(如果需要) + $password = C('mqtt')['password']; // 密码(如果需要) + + try { + // 创建连接设置对象 + $settings = (new ConnectionSettings)->setUsername($username)->setPassword($password); + // 实例化 MQTT 客户端 + $mqtt = new MqttClient($server, $port, $clientId); + // 连接到 MQTT 代理 + $mqtt->connect($settings); + // 检查是否连接成功 + if ($mqtt->isConnected()) { + // 发布消息到指定的主题 ps:主题 信息 qos + $mqtt->publish($topic, $msg, 0); + // 断开连接 + $mqtt->disconnect(); + } else { + echo "连接失败"; + } + } catch (MqttClientException $e) { //连接失败 + echo "Could not connect to MQTT broker: " . $e->getMessage(); + } + } } diff --git a/FlyCube/Common/Conf/config.php b/FlyCube/Common/Conf/config.php index 3b8660f..8916db1 100644 --- a/FlyCube/Common/Conf/config.php +++ b/FlyCube/Common/Conf/config.php @@ -2,7 +2,7 @@ /* * @Author: 田老师 4021673@qq.com * @Date: 2022-05-16 17:57:44 - * @LastEditTime: 2024-06-04 20:39:52 + * @LastEditTime: 2024-06-05 20:15:27 * @Description: Do not edit */ return array( @@ -29,7 +29,7 @@ return array( 'jwtKey' => 'T!o@k_en', //签发 解析token的key //mqtt 'mqtt' => array( - 'server' => 'szdot.top', // mqtt服务器 + 'server' => 'www.szdot.top', // mqtt服务器 'port' => 1883, // mqtt端口 'username' => 'admin', // mqtt用户名 'password' => '123456', // mqtt密码