ホームページ >バックエンド開発 >PHPチュートリアル >WeChat モールの注文管理を PHP で実装する

WeChat モールの注文管理を PHP で実装する

王林
王林オリジナル
2023-05-13 21:10:341085ブラウズ

電子商取引の発展に伴い、WeChat プラットフォーム上に独自のモールを開設することを選択する販売者が増えています。しかし、注文をいかに効率的に管理するかが加盟店にとって課題となっています。

現在最も人気のある開発言語である PHP は、WeChat モールの注文管理の実装でも非常に優れたパフォーマンスを発揮します。次に、この記事では WeChat モールの注文管理を PHP で実装する方法を紹介します。

まず、WeChat 支払いによって返された注文情報を取得する必要があります。 WeChat Pay は、コールバック メカニズムを通じて注文情報を開発者のサーバーに送信します。開発者は、注文情報を処理するコードをサーバーに記述する必要があります。 PHP では、$_POST グローバル変数を使用して、WeChat サーバーから送信された POST データを取得できます。

通常、開発者は、WeChat サーバーから返された注文番号に基づいて注文情報を取得する必要があります。 PHP では、以下に示すように、curl 関数を通じて注文をクエリするリクエストを WeChat サーバーに送信できます。

$url = "https://api.weixin.qq.com/pay/orderquery";
$data = array(
  'appid' => 'your_appid',
  'mch_id' => 'your_mch_id',
  'transaction_id' => 'your_transaction_id',
  'nonce_str' => 'your_nonce_str',
  'sign' => 'your_sign'
);
$data_xml = arrayToXml($data);
$res = http_post_data($url, $data_xml);
$res_obj = json_decode(json_encode(simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

その中で、$data は WeChat サーバーに送信する必要があるパラメータです。 appid、mch_id、transaction_id、nonce_str、およびsign。これらのパラメータは、WeChat 販売プラットフォームを通じて取得できます。 $data_xmlは、$dataをxml形式に変換したデータです。 http_post_data は、curl 関数を使用して POST リクエストを WeChat サーバーに送信する関数です。返される $res は、WeChat サーバーから返されるクエリ結果です。

注文情報を取得したら、それをデータベースに保存する必要があります。 PHPには、PDO、mysqli、mysqlなど、優れたデータベース操作ライブラリが多数あります。ここでは、データベースの操作に PDO を使用することを選択します。

try {
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
  $sql = 'INSERT INTO order (out_trade_no, transaction_id, total_fee) VALUES (:out_trade_no, :transaction_id, :total_fee)';
  $stmt = $pdo->prepare($sql);
  $stmt->bindParam(':out_trade_no', $out_trade_no);
  $stmt->bindParam(':transaction_id', $transaction_id);
  $stmt->bindParam(':total_fee', $total_fee);
  $stmt->execute();
} catch (PDOException $e) {
  echo $e->getMessage();
}

上記のコードは、PDO を通じてデータベースに接続し、データベースに新しい注文情報レコードを追加します。

注文情報を保存した後は、注文情報の照会、変更、削除などの管理操作を実装する必要があります。 PHP では、MVC パターンを使用して注文管理ロジックを実装できます。

MVC モードでは、M はモデル、V はビュー、C はコントローラーを表します。モデルはデータベースの操作を担当し、ビューはバックエンド ロジックによって生成されたデータをフロントエンド ページに出力する責任を負い、コントローラーはフロントエンド フォームによって送信されたデータを受信し、対応する操作を実行する責任を負います。データベース内で。

以下は注文管理の例です。

//model
class OrderModel {
  public function getOrder($out_trade_no) {
    //查询订单信息
  }
  public function updateOrder($out_trade_no, $data) {
    //更新订单信息
  }
  public function deleteOrder($out_trade_no) {
    //删除订单信息
  }
}

//view
class OrderView {
  public function showOrder($order) {
    //显示订单信息
  }
}

//controller
class OrderController {
  private $model;
  private $view;
  public function __construct($model, $view) {
    $this->model = $model;
    $this->view = $view;
  }
  public function getOrder($out_trade_no) {
    $order = $this->model->getOrder($out_trade_no);
    $this->view->showOrder($order);
  }
  public function updateOrder($out_trade_no, $data) {
    $this->model->updateOrder($out_trade_no, $data);
  }
  public function deleteOrder($out_trade_no) {
    $this->model->deleteOrder($out_trade_no);
  }
}

//route
$model = new OrderModel();
$view = new OrderView();
$controller = new OrderController($model, $view);
if(isset($_POST['out_trade_no'])) {
  $out_trade_no = $_POST['out_trade_no'];
  if(isset($_POST['action'])) {
    $action = $_POST['action'];
    if($action == 'update') {
      //修改订单信息
      $data = array(
        'transaction_id' => $_POST['transaction_id'],
        'total_fee' => $_POST['total_fee']
      );
      $controller->updateOrder($out_trade_no, $data);
    } else if($action == 'delete') {
      //删除订单信息
      $controller->deleteOrder($out_trade_no);
    } else {
      //查询订单信息
      $controller->getOrder($out_trade_no);
    }
  }
}

上記のコードは、注文管理のロジックをさまざまなクラスにカプセル化し、Controller コントローラーを通じて対応する操作を呼び出します。

最後に、フロントエンド ページに注文情報を表示する必要があります。 PHP では、Smarty などのテンプレート エンジンを使用してこの効果を実現できます。ここでは Smarty テンプレート エンジンを選択します。

require_once('/path/to/smarty/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->assign('order', $order);
$smarty->display('/path/to/template/index.tpl');

上記のコードは、Smarty テンプレート エンジンに注文情報を割り当て、Smarty テンプレート エンジンを通じてフロントエンド ページを生成します。

要約すると、PHP で WeChat モール注文管理を実装するには、次の手順を完了する必要があります:

  1. WeChat コールバックの注文情報を取得する;
  2. 注文情報はデータベースに保存されます。
  3. 注文情報のクエリ、変更、削除などの管理操作を実装し、MVC パターンを使用してそれらをさまざまなクラスにカプセル化します。
  4. 注文情報を表示します。フロントエンド ページでは、Smarty などのテンプレート エンジンを使用してこれを実現できます。

以上がWeChatモールの注文管理をPHPで実装する内容ですので、これからWeChatモールを開発したい開発者の方には参考になると思います。

以上がWeChat モールの注文管理を PHP で実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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