2. 連係の準備ー宿泊予約システム

本システムを「ネットショップ管理」プラグインと連係させるためには、そのためのプログラムが必要になります。ここでは、そのプログラムの使い方、及び決済に関する本システムの「各種設定」項目を説明します。

連係プログラム

連係プログラムの主な仕事は、宿泊予約システムに「連係」機能を利用するように知らせる事と、「ネットショップ管理」プラグインとのデータの受け渡しをする事、です。

連係プログラムのファイル名は「functions.php」としてご提供しますが、このプログラムを使う場合は、テーマディレクトリにあるfunctions.phpファイルに追加してご利用下さい。

実際に利用する場合は、環境に合わせてプログラムの2カ所変更する必要が生じます。

class MTSBookingFunctions
{
  const PAYMENT_ENTRY = 'mts_net_shop';
  const CREDIT = 2;
  const PAID = 3;

  const PRODUCT_ID = 2;

  public function __construct()
  {
    // 決済処理エントリー登録
    add_filter('mts_pay_entry_point', function($entries) {
      return $entries + array(self::PAYMENT_ENTRY => 'ネットショップ PAY.JP'); }, 10, 1);
    add_action(self::PAYMENT_ENTRY, array($this, 'paymentEntry'), '', 10, 2);

    // 決済処理終了
    add_action('nsa_thank_you', array($this, 'result'));
  }

  public function paymentEntry($payment, $applicationId='')
  {
      global $net_shop_admin;

      if (empty($net_shop_admin)) {
          return 'NOT_FOUND_NET_SHOP';
      }

      $_REQUEST['action'] = 'cart';
      $_POST['action'] = 'cart';
      $_POST['product_id'] = empty($payment['product_id']) ? self::PRODUCT_ID : $payment['product_id'];
      $_POST['product_price'] = $payment['total_charge'];

      $_SESSION['net-shop-admin']['billing_information']['last_name'] = $payment['customer']['sei'];
      $_SESSION['net-shop-admin']['billing_information']['first_name'] = $payment['customer']['mei'];
      $_SESSION['net-shop-admin']['billing_information']['last_name_furigana'] = $payment['customer']['sei_kana'];
      $_SESSION['net-shop-admin']['billing_information']['first_name_furigana'] = $payment['customer']['mei_kana'];
      $_SESSION['net-shop-admin']['billing_information']['zipcode'] = $payment['customer']['postcode'];
      $_SESSION['net-shop-admin']['billing_information']['pref'] = $payment['customer']['pref'];
      $_SESSION['net-shop-admin']['billing_information']['address1'] = sprintf('%s%s', $payment['customer']['city'], $payment['customer']['town']);
      $_SESSION['net-shop-admin']['billing_information']['address2'] = $payment['customer']['building'];
      $_SESSION['net-shop-admin']['billing_information']['company'] = $payment['customer']['company'];
      $_SESSION['net-shop-admin']['billing_information']['tel'] = $payment['customer']['tel'];
      $_SESSION['net-shop-admin']['billing_information']['email'] = $payment['customer']['email'];

      // 予約IDを一時保管する
      $_SESSION[self::PAYMENT_ENTRY]['applicant_id'] = $payment['applicant_id'];
      $_SESSION[self::PAYMENT_ENTRY]['product_id'] = $payment['product_id'];

      $net_shop_admin->net_shop_admin_shopping_cart_action();

      return 'FAILED_CALL_NET_SHOP';
  }

  public function result($order_result)
  {
      global $mts_acb_booking;

      // 決済処理の結果
      $result['applicant_id'] = (int) $_SESSION[self::PAYMENT_ENTRY]['applicant_id'];
      $result['order_id'] = (int) $order_result[0]['order_id'];
      $result['result'] = self::CREDIT;

      return $mts_acb_booking->paymentResult($result);
  }
}

session_start();
$mtsFunction = new MTSBookingFunctions;

変更の必要な箇所

  • 7行目PRODUCT_IDの値
    「ネットショップ管理」で登録した商品データのID。「連携の準備ーネットショップ管理」で説明します。
  • 61行目resultの結果の値
    支払処理が「確定」の場合は「self::CREDIT」を「self::PAID」に書き換えて下さい。「与信枠」の確保の場合は「self::CREDIT」をそのまま利用します。

宿泊予約システムの各種設定

本システムの「各種設定」の中で必要な設定は「決済」と、支払実行後にメールを送信する場合は「テンプレート」で支払実行のメールのテンプレートを用意し、「E-Mail」でそのテンプレートを用意して下さい。

以下「決済」の設定画面と説明になります。

  • 決済機能
    前述の連係プログラムが正常に組み込まれると、ここで選択・設定できるようになります。
  • 支払ボタンの表示
    予約後、管理者が内容を確認する事なく支払処理を可能とする場合、「保留しない」を選択します。「保留する」を設定すると、予約データの「商品ID」にデータが登録されるまで「支払ボタン」は表示されません。
  • 支払期限の設定、期限の日数
    支払ボタンの表示期間を設定します。表示は実行した「予約日」から「期限の日数」まで、または、「宿泊日」前日から「期限の日数」前まで、です。
  • 決済実行の通知
    決済が実行されると連係プログラムにより予約データの清算状態が変更されます。その後、通知が「送信する」に設定されている場合は「E-Mail」で設定された「テンプレート」を利用してメールを送信します。