ホームページ  >  記事  >  バックエンド開発  >  EasyWeChat と PHP を使用して、WeChat アプレットの予約機能とキューイング機能を構築する方法を説明します。

EasyWeChat と PHP を使用して、WeChat アプレットの予約機能とキューイング機能を構築する方法を説明します。

王林
王林オリジナル
2023-07-18 09:45:132119ブラウズ

EasyWeChat と PHP を使用して WeChat ミニプログラムの予約機能とキューイング機能を構築する方法を教えます

はじめに:
WeChat ミニプログラムの人気が高まるにつれて、ますます多くの企業がミニプログラムで提供します 予約と順番待ちサービス。この記事では、EasyWeChat と PHP を使用して WeChat アプレットの予約機能とキューイング機能を構築し、ユーザーが即座にオンライン予約をして列に並ぶことができるようにする方法を説明します。この記事では、コード例を通して具体的な実装プロセスを詳しく紹介します。

1. 環境要件

  • サーバー環境: Linux 環境を使用し、PHP と MySQL をインストールすることをお勧めします;
  • EasyWeChat: を容易にするライブラリWeChat アプリケーションの開発。

2. 環境の構築

  1. EasyWeChat のダウンロード
    まず、プロジェクトに EasyWeChat をダウンロードして設定する必要があります。これは、composer を通じてインストールし、次のコマンドを実行します:

    composer require overtrue/wechat
  2. アプリケーションの構成
    アプリケーションで新しいサービス プロバイダーを作成し、EasyWeChat を構成します:

    <?php
    // services/WeChatServiceProvider.php
    
    use EasyWeChatFactory;
    use PimpleContainer;
    use PimpleServiceProviderInterface;
    
    class WeChatServiceProvider implements ServiceProviderInterface
    {
     public function register(Container $app)
     {
         $config = [
             'app_id' => 'your-app-id',
             'secret' => 'your-app-secret',
             'token' => 'your-token',
             'response_type' => 'array',
             'log' => [
                 'level' => 'debug',
                 'file' => '/path/to/your/log/file.log',
             ],
         ];
    
         $app['wechat'] = function () use ($config) {
             return Factory::officialAccount($config);
         };
     }
    }

    In上記のコードでは、独自のアプレットの ID、秘密キー、トークンに置き換える必要があります。同時に、必要に応じてログの設定を行うことができます。

  3. サービス プロバイダーの登録
    WeChatServiceProvider をプロジェクト内のサービス プロバイダーに登録します:

    $app->register(new WeChatServiceProvider());

3. 予約関数を実装します

WeChat アプレットでは、テンプレート メッセージを通じて予約機能を実装できます。ミニ プログラムでは、ユーザーが該当する予約情報を入力して送信すると、バックグラウンドで予約レコードが生成され、レコード内の情報がテンプレート メッセージとしてユーザーに送信されます。

  1. データベース テーブルの設計
    まず、ユーザーの予定情報を保存するために、appointment という名前のデータベース テーブルを作成します。テーブル構造のリファレンスは次のとおりです。

    CREATE TABLE `appointment` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `openid` varchar(100) NOT NULL,
      `name` varchar(50) NOT NULL,
      `phone` varchar(20) NOT NULL,
      `date` date NOT NULL,
      `time` time NOT NULL,
      `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  2. ミニ プログラム ページ
    ミニ プログラムでは、予約ページを作成する必要があり、ユーザーは関連情報を入力して送信します。それ。例は次のとおりです:

    <view class="container">
      <form bindsubmit="submitForm">
     <view class="form-item">
       <text>姓名:</text>
       <input type="text" name="name" placeholder="请输入姓名" bindinput="bindNameInput" />
     </view>
     <view class="form-item">
       <text>手机号:</text>
       <input type="number" name="phone" placeholder="请输入手机号" bindinput="bindPhoneInput" />
     </view>
     <view class="form-item">
       <text>日期:</text>
       <picker mode="date" bindchange="bindDateChange">
         <view>{{ date }}</view>
       </picker>
     </view>
     <view class="form-item">
       <text>时间:</text>
       <picker mode="time" bindchange="bindTimeChange">
         <view>{{ time }}</view>
       </picker>
     </view>
     <view class="form-item">
       <button form-type="submit" class="btn-submit">提交</button>
     </view>
      </form>
    </view>

上記のコードでは、bindsubmit を使用してフォームの送信イベントをバインドします。ユーザーが情報を入力した後、送信ボタンをクリックしてイベントをトリガーします。

  1. バックグラウンド処理
    バックグラウンド PHP では、予約リクエストを処理し、ユーザーが送信した情報をデータベースに保存し、テンプレート メッセージを送信するコードを記述する必要があります。ユーザーに。例は次のとおりです。

    <?php
    // save appointment
    $openid = $_SESSION['openid'];
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $date = $_POST['date'];
    $time = $_POST['time'];
    
    $db->query("INSERT INTO appointment (openid, name, phone, date, time) VALUES ('$openid', '$name', '$phone', '$date', '$time')");
    
    // send template message
    $app = $app['wechat'];
    
    $result = $app->template_message->send([
     'touser' => $openid,
     'template_id' => 'your-template-id',
     'url' => 'your-url',
     'data' => [
         'first' => '您已成功预约!',
         'keyword1' => $name,
         'keyword2' => $date . ' ' . $time,
         'remark' => '请准时到达!',
     ],
    ]);
    
    if ($result['errcode']) {
     // handle error
     echo $result['errmsg'];
    }
    

    上記のコードでは、まずセッションからユーザーの openid を取得し、ユーザーが送信した情報をデータベースに挿入します。次に、EasyWeChat が提供するテンプレート メッセージ機能を使用して、予約が成功したことを示すテンプレート メッセージをユーザーに送信します。

4. キューイング機能の実装

キューイング機能では、データベース内の自動インクリメント ID をカウントに使用できます。ユーザーが列に並ぶと、現在の列に並んでいる人数に基づいてそのユーザーの列番号が生成され、列番号と関連情報がデータベースに保存されます。ユーザーはいつでも自分のキュー番号と現在のキュー番号を照会でき、ポーリングを通じて最新のキューのステータスを取得できます。

  1. データベース テーブルの設計
    ユーザー キュー情報を保存するために、queue という名前のデータベース テーブルを作成します。テーブル構造のリファレンスは次のとおりです。

    CREATE TABLE `queue` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `openid` varchar(100) NOT NULL,
      `name` varchar(50) NOT NULL,
      `phone` varchar(20) NOT NULL,
      `queue_no` int(11) unsigned NOT NULL,
      `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  2. キュー内の現在の人数をクエリする
    バックグラウンドの PHP で、現在のキュー内の人数をクエリするコードを記述する必要があります。例は次のとおりです:

    <?php
    // query queue number
    $count = $db->query("SELECT COUNT(*) FROM queue")->fetchColumn();
    
    echo $count;

    上記のコード例では、SELECT COUNT(*) を使用してキュー内の現在の人数をクエリし、それをフロントエンドに返します。 。

  3. ユーザー キュー
    ミニ プログラムでは、ユーザーはキュー ボタンをクリックしてキューに入れ、関連する情報を処理のためにバックグラウンドに送信できます。例は次のとおりです。

    // index.js
    // enqueue
    function enqueue() {
      wx.request({
     url: 'your-api-url',
     method: 'POST',
     data: {
       openid: getApp().globalData.openid,
       name: this.data.name,
       phone: this.data.phone
     },
     success: function(res) {
       wx.showToast({
         title: '排队成功',
         duration: 1500
       })
     }
      })
    }

    上記のサンプル コードでは、wx.request を使用してバックグラウンド リクエストを開始し、ユーザーの openid、名前、携帯電話番号をバックグラウンドに送信します。キューイング処理。

  4. クエリキュー番号
    ユーザーは、自分のキュー番号と現在のキューの人数をいつでも確認できます。ミニ プログラムでは、setInterval を使用してポーリング クエリを実行し、ページ表示を更新できます。例は次のとおりです:

    // index.js
    // get queue number
    function getQueueNumber() {
      var intervalId = setInterval(function() {
     wx.request({
       url: 'your-api-url',
       method: 'GET',
       success: function(res) {
         var queueNo = res.data.queue_no;
         var count = res.data.count;
    
         if (queueNo > 0) {
           clearInterval(intervalId);
           wx.showModal({
             title: '排队成功',
             content: '当前排队人数:' + count + '
    您的排队号:' + queueNo
           })
         }
       }
     })
      }, 2000);
    }

    上記のコード例では、wx.request を使用してユーザーのキュー情報をポーリングおよびクエリします。キュー番号が 0 より大きい場合、それは意味します。キューイングが成功したこと、および現在のキュー内の人数とユーザーのキュー番号。

要約:
上記の手順により、EasyWeChat と PHP を介して予約機能とキューイング機能を備えたシンプルな WeChat アプレットを構築できます。ミニプログラムを利用したオンライン予約や、リアルタイムでの順番確認が可能となり、より便利な予約・順番待ちサービスを提供します。この記事がお役に立てば幸いです!

以上がEasyWeChat と PHP を使用して、WeChat アプレットの予約機能とキューイング機能を構築する方法を説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。