先日の記事で支払いの拡張ポイントであるsoyshop.payment.phpを紹介しました。

支払いの拡張ポイントsoyshop.payment.php


今回は配送の拡張ポイントであるsoyshop.delivery.phpを紹介します。

SOY Shopプラグインの拡張ポイントについて


はじめにインターフェースを確認してみる。

/soyshop/webapp/src/logic/plugin/extensions/soyshop.delivery.php

class SOYShopDelivery implements SOY2PluginAction{

	private $cart;
	private $order;

	/**
	 * Cartで配送方法選択後にCartLogicに配送方法を登録する等の処理を行う
	 */
	function onSelect(CartLogic $cart){

	}

	/**
	 * @return string
	 * Cartの配送方法選択画面等で表示する支払い方法名
	 */
	function getName(){
		return "";
	}

	/**
	 * @return string
	 * Cartの配送方法選択画面で表示する支払い方法の説明文
	 */
	function getDescription(){
		return "";
	}

	/**
	 * @return integer
	 * Cart等で配送方法として選択した時に加算される金額。手数料等
	 */
	function getPrice(){
		return 0;
	}

	/**
	 * @return array(array("label" => "", "form" => "")...)
	 * マイページの注文詳細編集画面でフォームを出力
	 */
	function edit(){
		return array();
	}

	/**
	 * マイページの注文詳細編集でPOST後に実行される
	 */
	function update(){

	}

	function getCart() {
		return $this->cart;
	}
	function setCart($cart) {
		$this->cart = $cart;
	}

	function getOrder(){
		return $this->order;
	}
	function setOrder($order){
		$this->order = $order;
	}
}

onSelectからgetPriceまでは、soyshop.payment.phpと同じような動作になり、


soyshop_delivery


各メソッドの返り値と対応箇所は注釈の通りです。

onSelectは配送方法の選択後にPOSTを送信した時に実行されます。


soyshop.delivery.phpとsoyshop.payment.phpで異なる箇所と言えば、

editとupdateメソッドです。


この2つのメソッドはマイページの注文詳細の編集で使用します。

マイページの注文詳細の編集はマイページで注文編集プラグインをインストールした際に、

SOY Shopのマイページで注文詳細の変更機能を追加しました


soyshop_delivery1


soyshop_delivery2


出力される配送時間等の編集画面でフォームを出力する場合にeditメソッドを活用し、

array("label" => "", "form" => "")の形式で表示したいフォームの個数分editメソッドで配列を返します。


updateは更新するボタンをクリックした時に読み込まれるメソッドになります。


getCartとsetCart、getOrderとsetOrderはセッター、ゲッターなので、説明するほどの処理はありません。


これを踏まえた上で、

標準配送モジュール(ID:delivery_normal)のsoyshop.delivery.phpのソースコードを読んでみると良いです