Index: /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql
===================================================================
--- /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql	(revision 20110)
+++ /branches/version-2_5-dev/html/install/sql/create_table_mysql.sql	(revision 20112)
@@ -624,5 +624,6 @@
     subtotal numeric,
     discount numeric,
-    deliv_fee numeric,	
+    deliv_id int,
+    deliv_fee numeric,
     charge numeric,
     use_point numeric,
@@ -680,4 +681,5 @@
     subtotal numeric,
     discount numeric,
+    deliv_id int,
     deliv_fee numeric,
     charge numeric,
Index: /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql
===================================================================
--- /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql	(revision 20110)
+++ /branches/version-2_5-dev/html/install/sql/create_table_pgsql.sql	(revision 20112)
@@ -624,4 +624,5 @@
     subtotal numeric,
     discount numeric,
+    deliv_id int,
     deliv_fee numeric,
     charge numeric,
@@ -680,4 +681,5 @@
     subtotal numeric,
     discount numeric,
+    deliv_id int,
     deliv_fee numeric,
     charge numeric,
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php	(revision 20041)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Confirm.php	(revision 20112)
@@ -50,4 +50,5 @@
         $this->arrMAILMAGATYPE = $masterData->getMasterData("mtb_mail_magazine_type");
         $this->arrReminder = $masterData->getMasterData("mtb_reminder");
+        $this->arrDeliv = SC_Helper_DB_Ex::sfGetIDValueList("dtb_deliv", "deliv_id", "service_name");
         $this->httpCacheControl('nocache');
     }
@@ -94,5 +95,6 @@
         $this->tpl_message = $objCartSess->checkProducts($this->cartKey);
         if (strlen($this->tpl_message) >= 1) {
-            SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true);
+            SC_Response_Ex::sendRedirect(CART_URLPATH);
+            exit;
         }
 
Index: /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 20069)
+++ /branches/version-2_5-dev/data/class/pages/shopping/LC_Page_Shopping_Payment.php	(revision 20112)
@@ -79,25 +79,21 @@
         $objPurchase = new SC_Helper_Purchase_Ex();
         $this->objCustomer = new SC_Customer();
-
-        $this->shipping =& $objPurchase->getShippingTemp();
-        $this->isMultiple = $objPurchase->isMultiple();
-
-        // パラメータ管理クラス
         $this->objFormParam = new SC_FormParam();
-        // パラメータ情報の初期化
-        $this->lfInitParam();
-        // POST値の取得
-        $this->objFormParam->setParam($_POST);
-
-        $uniqid = $objSiteSess->getUniqId();
-        $objPurchase->verifyChangeCart($uniqid, $objCartSess);
-
-        // ユニークIDを引き継ぐ
-        $this->tpl_uniqid = $uniqid;
+
+        $this->arrShipping =& $objPurchase->getShippingTemp();
+        $this->is_multiple = $objPurchase->isMultiple();
+        $this->tpl_uniqid = $objSiteSess->getUniqId();
+        $objPurchase->verifyChangeCart($this->tpl_uniqid, $objCartSess);
 
         $this->cartKey = $objCartSess->getKey();
 
-        // 配送時間を取得
-        $this->arrDelivTime = $objPurchase->getDelivTime($this->cartKey);
+        // 配送業者を取得
+        $this->arrDeliv = $objPurchase->getDeliv($this->cartKey);
+        if (count($this->arrDeliv) == 1) {
+            $this->is_single_deliv = true;
+            $deliv_id = $this->arrDeliv[0]['deliv_id'];
+        } else {
+            $this->is_single_deliv = false;
+        }
 
         // 会員ログインチェック
@@ -117,5 +113,5 @@
 
         // 一時受注テーブルの読込
-        $arrOrderTemp = $objPurchase->getOrderTemp($uniqid);
+        $arrOrderTemp = $objPurchase->getOrderTemp($this->tpl_uniqid);
         //不正遷移チェック（正常に受注情報が格納されていない場合は一旦カート画面まで戻す）
         if (!$arrOrderTemp) {
@@ -129,5 +125,6 @@
 
         if (strlen($this->tpl_message) >= 1) {
-            SC_Utils_Ex::sfDispSiteError(SOLD_OUT, '', true);
+            SC_Response_Ex::sendRedirect(CART_URLPATH);
+            exit;
         }
         // FIXME 使用ポイント, 手数料の扱い
@@ -137,12 +134,44 @@
         $total_inctax = $objCartSess->getAllProductsTotal($this->cartKey);
 
-        // FIXME 支払い方法の取得
-        $arrDeliv = $objPurchase->getDeliv($this->cartKey);
-        $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $arrDeliv[0]['deliv_id']);
+        // お届け日一覧の取得
+        $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $this->cartKey);
 
         switch($this->getMode()) {
+        case 'select_deliv':
+            $this->objFormParam->convParam();
+            $this->lfInitParam(true);
+            $this->objFormParam->setParam($_POST);
+            $arrErr = $this->objFormParam->checkError();
+            if (SC_Utils_Ex::isBlank($arrErr)) {
+                $deliv_id = $this->objFormParam->getValue('deliv_id');
+                $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id);
+                $this->img_show = $this->lfGetImgShow($this->arrPayment);
+                // 配送時間を取得
+                $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id);
+                $arrSelectDeliv = array('error' => false,
+                                        'arrPayment' => $this->arrPayment,
+                                        'arrDelivTime' => $this->arrDelivTime,
+                                        'img_show' => $this->img_show);
+            } else {
+                $arrSelectDeliv = array('error' => true);
+            }
+
+            if (SC_Display::detectDevice() != DEVICE_TYPE_MOBILE) {
+                $objJson = new Services_JSON();
+                echo $objJson->encode($arrSelectDeliv);
+                exit;
+            }
+            break;
+
         case 'confirm':
+            // パラメータ情報の初期化
+            $this->lfInitParam();
+            // POST値の取得
+            $this->objFormParam->setParam($_POST);
             // 入力値の変換
             $this->objFormParam->convParam();
+            $deliv_id = $this->objFormParam->getValue('deliv_id');
+            $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id);
+            $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id);
             $this->arrErr = $this->lfCheckError($this->arrData, $this->arrPayment);
             // 入力エラーなし
@@ -151,13 +180,15 @@
                 foreach (array_keys($_SESSION['shipping']) as $key) {
                     $timeId = $this->objFormParam->getValue('deliv_time_id' . $key);
+
                     /* TODO
                      * SC_Purchase::getShippingTemp() で取得して,
                      * リファレンスで代入すると, セッションに添字を追加できない？
                      */
+                    $_SESSION['shipping'][$key]['deliv_id'] = $deliv_id;
                     $_SESSION['shipping'][$key]['time_id'] = $timeId;
                     $_SESSION['shipping'][$key]['shipping_time'] = $this->arrDelivTime[$timeId];
                     $_SESSION['shipping'][$key]['shipping_date'] = $this->objFormParam->getValue('deliv_date' . $key);
                 }
-                $this->lfRegistData($uniqid, $objPurchase);
+                $this->lfRegistData($this->tpl_uniqid, $objPurchase);
 
                 // 正常に登録されたことを記録しておく
@@ -167,13 +198,12 @@
                 exit;
             }else{
-                // ユーザユニークIDの取得
-                $uniqid = $objSiteSess->getUniqId();
                 // 受注一時テーブルからの情報を格納
-                $this->objFormParam->setParam($objPurchase->getOrderTemp($uniqid));
+                $this->img_show = $this->lfGetImgShow($this->arrPayment);
+                $this->objFormParam->setParam($objPurchase->getOrderTemp($this->tpl_uniqid));
             }
             break;
         // 前のページに戻る
         case 'return':
-            // 非会員の場合
+
             // 正常な推移であることを記録しておく
             $objSiteSess->setRegistFlag();
@@ -183,13 +213,42 @@
 
         default:
-            // 受注一時テーブルからの情報を格納
+
+            // 前のページから戻ってきた場合の初期値を設定
+            $this->lfInitParam();
             $this->objFormParam->setParam($arrOrderTemp);
+            $this->objFormParam->convParam();
+
+            if (!$this->is_single_deliv) {
+                $deliv_id = $this->objFormParam->getValue('deliv_id');
+            }
+
+            if (!SC_Utils_Ex::isBlank($deliv_id)) {
+                $this->objFormParam->setValue('deliv_id', $deliv_id);
+                $this->arrPayment = $objPurchase->getPaymentsByPrice($total_inctax, $deliv_id);
+                // XXX セッションからデフォルト値を取得する必要あり
+                $this->arrDelivTime = $objPurchase->getDelivTime($deliv_id);
+                $this->img_show = $this->lfGetImgShow($this->arrPayment);
+            }
             break;
         }
 
-        // 支払い方法の画像があるなしを取得（$img_show true:ある false:なし）
-        $this->img_show = $this->lfGetImgShow($this->arrPayment);
-        // お届け日一覧の取得
-        $this->arrDelivDate = $objPurchase->getDelivDate($objCartSess, $this->cartKey);
+        // モバイル用 ポストバック処理
+        if (SC_Display::detectDevice() == DEVICE_TYPE_MOBILE) {
+            switch($this->getMode()) {
+            case 'select_deliv':
+                $this->tpl_mainpage = 'shopping/payment.tpl';
+                break;
+
+            case 'confirm':
+            case 'return':
+            default:
+                if ($this->is_single_deliv) {
+                    $this->tpl_mainpage = 'shopping/payment.tpl';
+                } else {
+                    $this->tpl_mainpage = 'shopping/select_deliv.tpl';
+                }
+            }
+        }
+
         $this->arrForm = $this->objFormParam->getFormParamList();
     }
@@ -205,13 +264,17 @@
 
     /* パラメータ情報の初期化 */
-    function lfInitParam() {
-        $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
-        $this->objFormParam->addParam("ポイント", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START"));
-        $this->objFormParam->addParam("その他お問い合わせ", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
-        $this->objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2');
-
-        for ($i = 0; $i < count($this->shipping); $i++) {
-            $this->objFormParam->addParam("お届け時間", "deliv_time_id" . $i, INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
-            $this->objFormParam->addParam("お届け日", "deliv_date" . $i, STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+    function lfInitParam($deliv_only = false) {
+        $this->objFormParam->addParam("配送業者", "deliv_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
+
+        if (!$deliv_only) {
+            $this->objFormParam->addParam("お支払い方法", "payment_id", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
+            $this->objFormParam->addParam("ポイント", "use_point", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK", "ZERO_START"));
+            $this->objFormParam->addParam("その他お問い合わせ", "message", LTEXT_LEN, "KVa", array("SPTAB_CHECK", "MAX_LENGTH_CHECK"));
+            $this->objFormParam->addParam("ポイントを使用する", "point_check", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"), '2');
+
+            for ($i = 0; $i < count($this->shipping); $i++) {
+                $this->objFormParam->addParam("お届け時間", "deliv_time_id" . $i, INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
+                $this->objFormParam->addParam("お届け日", "deliv_date" . $i, STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));
+            }
         }
     }
Index: /branches/version-2_5-dev/data/class/SC_CartSession.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_CartSession.php	(revision 20038)
+++ /branches/version-2_5-dev/data/class/SC_CartSession.php	(revision 20112)
@@ -433,7 +433,8 @@
      * エラーメッセージを返す.
      *
-     * 1. 削除/非表示商品のチェック
-     * 2. 商品購入制限数のチェック
-     * 3. 在庫数チェック
+     * 1. 商品種別に関連づけられた配送業者の存在チェック
+     * 2. 削除/非表示商品のチェック
+     * 3. 商品購入制限数のチェック
+     * 4. 在庫数チェック
      *
      * @param string $key 商品種別ID
@@ -449,4 +450,13 @@
             $item =& $items[$key];
             $product =& $item['productsClass'];
+
+            /*
+             * 配送業者のチェック
+             */
+            $arrDeliv = SC_Helper_Purchase_Ex::getDeliv($productTypeId);
+            if (SC_Utils_Ex::isBlank($arrDeliv)) {
+                $tpl_message .= "※「" . $product['name'] . "」はまだ配送の準備ができておりません。恐れ入りますがお問い合わせページよりお問い合わせください。\n";
+            }
+
             /*
              * 表示/非表示商品のチェック
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 20111)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_Purchase.php	(revision 20112)
@@ -461,34 +461,37 @@
 
     /**
-     * 商品種別ID からお届け時間の配列を取得する.
-     */
-    function getDelivTime($productTypeId) {
-        $objQuery =& SC_Query::getSingletonInstance();
-        $from = <<< __EOS__
-                 dtb_deliv T1
-            JOIN dtb_delivtime T2
-              ON T1.deliv_id = T2. deliv_id
-__EOS__;
-            $objQuery->setOrder("time_id");
-            $results = $objQuery->select("time_id, deliv_time", $from,
-                                         "product_type_id = ?", array($productTypeId));
-            $arrDelivTime = array();
-            foreach ($results as $val) {
-                $arrDelivTime[$val['time_id']] = $val['deliv_time'];
-            }
-            return $arrDelivTime;
+     * 配送業者IDからお届け時間の配列を取得する.
+     *
+     * @param integer $deliv_id 配送業者ID
+     * @return array お届け時間の配列
+     */
+    function getDelivTime($deliv_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $objQuery->setOrder('time_id');
+        $results = $objQuery->select('time_id, deliv_time',
+                                     'dtb_delivtime',
+                                     'deliv_id = ?', array($deliv_id));
+        $arrDelivTime = array();
+        foreach ($results as $val) {
+            $arrDelivTime[$val['time_id']] = $val['deliv_time'];
+        }
+        return $arrDelivTime;
     }
 
     /**
      * 商品種別ID から配送業者を取得する.
-     */
-    function getDeliv($productTypeId) {
-        $objQuery =& SC_Query::getSingletonInstance();
-        return $objQuery->select("*", "dtb_deliv", "product_type_id = ?",
-                                 array($productTypeId));
-    }
-
-    /**
-     * 配送業者ID から, 有効な支払方法を取得する.
+     *
+     * @param integer $product_type_id 商品種別ID
+     * @return array 配送業者の配列
+     */
+    function getDeliv($product_type_id) {
+        $objQuery =& SC_Query::getSingletonInstance();
+        $objQuery->setOrder('rank');
+        return $objQuery->select('*', 'dtb_deliv', 'product_type_id = ?',
+                                 array($product_type_id));
+    }
+
+    /**
+     * 配送業者ID から, 有効な支払方法IDを取得する.
      *
      * @param integer $deliv_id 配送業者ID
@@ -497,11 +500,7 @@
     function getPayments($deliv_id) {
         $objQuery =& SC_Query::getSingletonInstance();
-        $from = <<< __EOS__
-                      dtb_deliv T1
-            LEFT JOIN dtb_payment_options T2
-                   ON T1.deliv_id = T2.deliv_id
-__EOS__;
-        $objQuery->setOrder('T2.rank');
-        return $objQuery->getCol('payment_id', $from, 'T1.deliv_id = ?',
+        $objQuery->setOrder('rank');
+        return $objQuery->getCol('payment_id', 'dtb_payment_options',
+                                 'deliv_id = ?',
                                  array($deliv_id), MDB2_FETCHMODE_ORDERED);
     }
Index: /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl	(revision 19983)
+++ /branches/version-2_5-dev/data/Smarty/templates/default/shopping/confirm.tpl	(revision 20112)
@@ -244,12 +244,15 @@
             <!--お届け先ここまで-->
 
-            <h3>▼お支払方法・その他お問い合わせ</h3>
-            <table summary="お支払方法・その他お問い合わせ" class="delivname">
+            <h3>▼配送方法・お支払方法・その他お問い合わせ</h3>
+            <table summary="配送方法・お支払方法・その他お問い合わせ" class="delivname">
                 <tbody>
+                <tr>
+                    <th>配送方法</th>
+                    <td><!--{$arrDeliv[$arrData.deliv_id]|h}--></td>
+                </tr>
                 <tr>
                     <th>お支払方法</th>
                     <td><!--{$arrData.payment_method|h}--></td>
                 </tr>
-                <!--{* 販売方法判定（ダウンロード販売のみの場合はお届け日、時間を表示しない） *}-->
                 <tr>
                     <th>その他お問い合わせ</th>
@@ -258,8 +261,4 @@
                 </tbody>
             </table>
-
-            <!--{if 'sfTSPrintOrderBox'|function_exists}-->
-                <!--{'sfTSPrintOrderBox'|call_user_func}-->
-            <!--{/if}-->
 
             <div class="tblareabtn">
Index: /branches/version-2_5-dev/data/Smarty/templates/default/shopping/payment.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/default/shopping/payment.tpl	(revision 20068)
+++ /branches/version-2_5-dev/data/Smarty/templates/default/shopping/payment.tpl	(revision 20112)
@@ -21,4 +21,82 @@
  *}-->
 <!--▼CONTENTS-->
+<script type="text/javascript">//<![CDATA[
+    $(function() {
+        $('input[id^=deliv_]').click(function() {
+            var data = {};
+            data.mode = 'select_deliv';
+            data.deliv_id = $(this).val();
+            $.ajax({
+                type : 'POST',
+                url : location.pathname,
+                data: data,
+                cache : false,
+                dataType : 'json',
+                error : remoteException,
+                success : function(data, dataType) {
+                    if (data.error) {
+                        remoteException();
+                    } else {
+                        // 支払い方法の行を生成
+                        var payment_tbody = $('#payment tbody');
+                        payment_tbody.empty();
+                        for (var i in data.arrPayment) {
+                            // ラジオボタン
+                            var radio = $('<input type="radio" />')
+                                .attr('name', 'payment_id')
+                                .attr('id', 'pay_' + i)
+                                .val(data.arrPayment[i].payment_id);
+                            // ラベル
+                            var label = $('<label />')
+                                .attr('for', 'pay_' + i)
+                                .text(data.arrPayment[i].payment_method);
+                            // 行
+                            var tr = $('<tr />')
+                                .append($('<td />')
+                                        .addClass('centertd')
+                                        .append(radio))
+                                .append($('<td />').append(label));
+
+                            // 支払方法の画像が登録されている場合は表示
+                            if (data.img_show) {
+                                var payment_image = data.arrPayment[i].payment_image;
+                                $('th#payment_method').attr('colspan', 3);
+                                if (payment_image) {
+                                    var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
+                                    tr.append($('<td />').append(img));
+                                } else {
+                                    tr.append($('<td />'));
+                                }
+                            } else {
+                                $('th#payment_method').attr('colspan', 2);
+                            }
+
+                            tr.appendTo(payment_tbody);
+                        }
+                        // お届け時間を生成
+                        var deliv_time_id_select = $('select[id^=deliv_time_id]');
+                        deliv_time_id_select.empty();
+                        deliv_time_id_select.append($('<option />').text('指定なし').val(''));
+                        for (var i in data.arrDelivTime) {
+                            var option = $('<option />')
+                                .val(i)
+                                .text(data.arrDelivTime[i])
+                                .appendTo(deliv_time_id_select);
+                        }
+                    }
+                }
+            });
+        });
+
+        /**
+         * 通信エラー表示.
+         */
+        function remoteException(XMLHttpRequest, textStatus, errorThrown) {
+            alert('通信中にエラーが発生しました。カート画面に移動します。');
+            location.href = '<!--{$smarty.const.CART_URLPATH}-->';
+        }
+    });
+//]]>
+</script>
 <div id="under02column">
     <div id="under02column_shopping">
@@ -31,4 +109,34 @@
             <input type="hidden" name="mode" value="confirm" />
             <input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->" />
+
+            <!--{assign var=key value="deliv_id"}-->
+            <!--{if $is_single_deliv}-->
+                <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
+            <!--{else}-->
+            <div class="payarea">
+                <h3>配送方法の指定</h3>
+                <p>配送方法をご選択ください。</p>
+
+                <!--{if $arrErr[$key] != ""}-->
+                <p class="attention"><!--{$arrErr[$key]}--></p>
+                <!--{/if}-->
+                <table summary="配送方法選択">
+                    <tr>
+                        <th>選択</th>
+                        <th colspan="2">配送方法</th>
+                    </tr>
+                    <!--{section name=cnt loop=$arrDeliv}-->
+                    <tr>
+                        <td class="centertd"><input type="radio" id="deliv_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->"  value="<!--{$arrDeliv[cnt].deliv_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" <!--{$arrDeliv[cnt].deliv_id|sfGetChecked:$arrForm[$key].value}--> />
+                        </td>
+                        <td>
+                            <label for="deliv_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrDeliv[cnt].name|h}--><!--{if $arrDeliv[cnt].remark != ""}--><p><!--{$arrDeliv[cnt].remark|h}--></p><!--{/if}--></label>
+                        </td>
+                    </tr>
+                    <!--{/section}-->
+                </table>
+            </div>
+            <!--{/if}-->
+
             <div class="payarea">
                 <h3>お支払方法の指定</h3>
@@ -39,15 +147,17 @@
                 <p class="attention"><!--{$arrErr[$key]}--></p>
                 <!--{/if}-->
-                <table summary="お支払方法選択">
-                    <tr>
+                <table summary="お支払方法選択" id="payment">
+                    <thead>
+                      <tr>
                         <th>選択</th>
-                        <th colspan="<!--{if !$img_show}-->2<!--{else}-->3<!--{/if}-->">お支払方法</th>
-                    </tr>
-                    <!--{section name=cnt loop=$arrPayment}-->
-                    <tr>
-                        <td class="centertd"><input type="radio" id="pay_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->"  value="<!--{$arrPayment[cnt].payment_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" <!--{$arrPayment[cnt].payment_id|sfGetChecked:$arrForm[$key].value}--> />
-                        </td>
+                        <th colspan="<!--{if !$img_show}-->2<!--{else}-->3<!--{/if}-->" id="payment_method">お支払方法</th>
+                      </tr>
+                    </thead>
+                    <tbody>
+                      <!--{section name=cnt loop=$arrPayment}-->
+                      <tr>
+                        <td class="centertd"><input type="radio" id="pay_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->"  value="<!--{$arrPayment[cnt].payment_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" <!--{$arrPayment[cnt].payment_id|sfGetChecked:$arrForm[$key].value}--> /></td>
                         <td>
-                            <label for="pay_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrPayment[cnt].payment_method|h}--><!--{if $arrPayment[cnt].note != ""}--><!--{/if}--></label>
+                          <label for="pay_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrPayment[cnt].payment_method|h}--><!--{if $arrPayment[cnt].note != ""}--><!--{/if}--></label>
                         </td>
                         <!--{if $img_show}-->
@@ -58,6 +168,7 @@
                             </td>
                         <!--{/if}-->
-                    </tr>
+                      </tr>
                     <!--{/section}-->
+                  </tbody>
                 </table>
             </div>
@@ -67,5 +178,5 @@
                 <h3>お届け時間の指定</h3>
                 <p>ご希望の方は、お届け時間を選択してください。</p>
-                <!--{foreach item=shippingItem name=shippingItem from=$shipping}-->
+                <!--{foreach item=shippingItem name=shippingItem from=$arrShipping}-->
                 <!--{assign var=index value=$smarty.foreach.shippingItem.index}-->
                 <div>
@@ -77,5 +188,5 @@
                         ご指定頂けません。
                     <!--{else}-->
-                        <select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
+                        <select name="<!--{$key}-->" id="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
                             <option value="" selected="">指定なし</option>
                             <!--{html_options options=$arrDelivDate selected=$arrForm[$key].value}-->
@@ -90,5 +201,5 @@
                         <!--{html_options options=$arrDelivTime selected=$arrForm[$key].value}-->
                     </select>
-                    <!--{if $isMultiple}-->
+                    <!--{if $is_multiple}-->
                         &nbsp;<!--{$shippingItem.shipping_name01}--><!--{$shippingItem.shipping_name02}-->
                         &nbsp;<!--{$arrPref[$shippingItem.shipping_pref]}--><!--{$shippingItem.shipping_addr01}--><!--{$shippingItem.shipping_addr02}-->
Index: /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/select_deliv.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/select_deliv.tpl	(revision 20112)
+++ /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/select_deliv.tpl	(revision 20112)
@@ -0,0 +1,46 @@
+<!--{*
+/*
+ * This file is part of EC-CUBE
+ *
+ * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+*}-->
+<form method="post" action="?">
+<input type="hidden" name="mode" value="select_deliv">
+<input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
+■配送方法 <font color="#FF0000">*</font><br>
+<!--{assign var=key value="deliv_id"}-->
+<!--{if $arrErr[$key] != ""}-->
+<font color="#FF0000"><!--{$arrErr[$key]}--></font>
+<!--{/if}-->
+<!--{section name=cnt loop=$arrDeliv}-->
+<input type="radio" name="<!--{$key}-->" value="<!--{$arrDeliv[cnt].deliv_id}-->" <!--{$arrDeliv[cnt].deliv_id|sfGetChecked:$arrForm[$key].value}-->>
+<!--{$arrDeliv[cnt].name|h}-->
+<br>
+<!--{/section}-->
+<br>
+
+<center><input type="submit" value="次へ"></center>
+</form>
+
+<form action="<!--{$tpl_back_url|h}-->" method="get">
+<center><input type="submit" name="return" value="戻る"></center>
+</form>
+
+<br>
Index: /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/confirm.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/confirm.tpl	(revision 19984)
+++ /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/confirm.tpl	(revision 20112)
@@ -97,4 +97,9 @@
 <!--{/if}-->
 
+【配送方法】<br>
+<!--{$arrDeliv[$arrData.deliv_id]|h}--><br>
+
+<br>
+
 【お支払い方法】<br>
 <!--{$arrData.payment_method|h}--><br>
Index: /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/payment.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/payment.tpl	(revision 19984)
+++ /branches/version-2_5-dev/data/Smarty/templates/mobile/shopping/payment.tpl	(revision 20112)
@@ -25,4 +25,6 @@
 <input type="hidden" name="mode" value="confirm">
 <input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->">
+<!--{assign var=key value="deliv_id"}-->
+<input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->">
 ■お支払方法 <font color="#FF0000">*</font><br>
 <!--{assign var=key value="payment_id"}-->
@@ -39,5 +41,5 @@
 <!--{if $cartKey != $smarty.const.PRODUCT_TYPE_DOWNLOAD}-->
 ■お届け時間の指定<br>
-<!--{foreach item=shippingItem name=shippingItem from=$shipping}-->
+<!--{foreach item=shippingItem name=shippingItem from=$arrShipping}-->
 <!--{assign var=index value=$smarty.foreach.shippingItem.index}-->
 <!--★お届け日★-->
@@ -63,5 +65,5 @@
 </select>
 <br>
-<!--{if $isMultiple}-->
+<!--{if $is_multiple}-->
     &nbsp;<!--{$shippingItem.shipping_name01}--><!--{$shippingItem.shipping_name02}-->
     &nbsp;<!--{$arrPref[$shippingItem.shipping_pref]}--><!--{$shippingItem.shipping_addr01}--><!--{$shippingItem.shipping_addr02}-->
Index: /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/confirm.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/confirm.tpl	(revision 20014)
+++ /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/confirm.tpl	(revision 20112)
@@ -232,26 +232,19 @@
             <!--お届け先ここまで-->
 
-            <table summary="お支払方法・お届け日時の指定・その他お問い合わせ" class="delivname">
+            <table summary="配送方法・お支払方法・お届け日時の指定・その他お問い合わせ" class="delivname">
                 <thead>
                 <tr>
-                    <th colspan="2">▼お支払方法・お届け日時の指定・その他お問い合わせ</th>
+                    <th colspan="2">▼配送方法・お支払方法・お届け日時の指定・その他お問い合わせ</th>
                 </tr>
                 </thead>
                 <tbody>
                 <tr>
+                    <th>配送方法</th>
+                    <td><!--{$arrDeliv[$arrData.deliv_id]|h}--></td>
+                </tr>
+                <tr>
                     <th>お支払方法</th>
                     <td><!--{$arrData.payment_method|h}--></td>
                 </tr>
-                <!--{* 販売方法判定（ダウンロード販売のみの場合はお届け日、時間を表示しない） *}-->
-                <!--{if $cartdown != "2"}-->
-                <tr>
-                    <th>お届け日</th>
-                    <td><!--{$arrData.deliv_date|default:"指定なし"|h}--></td>
-                </tr>
-                <tr>
-                    <th>お届け時間</th>
-                    <td><!--{$arrData.deliv_time|default:"指定なし"|h}--></td>
-                </tr>
-                <!--{/if}-->
                 <tr>
                     <th>その他お問い合わせ</th>
Index: /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/payment.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/payment.tpl	(revision 20068)
+++ /branches/version-2_5-dev/data/Smarty/templates/sphone/shopping/payment.tpl	(revision 20112)
@@ -21,4 +21,82 @@
  *}-->
 <!--▼CONTENTS-->
+<script type="text/javascript">//<![CDATA[
+    $(function() {
+        $('input[id^=deliv_]').click(function() {
+            var data = {};
+            data.mode = 'select_deliv';
+            data.deliv_id = $(this).val();
+            $.ajax({
+                type : 'POST',
+                url : location.pathname,
+                data: data,
+                cache : false,
+                dataType : 'json',
+                error : remoteException,
+                success : function(data, dataType) {
+                    if (data.error) {
+                        remoteException();
+                    } else {
+                        // 支払い方法の行を生成
+                        var payment_tbody = $('#payment tbody');
+                        payment_tbody.empty();
+                        for (var i in data.arrPayment) {
+                            // ラジオボタン
+                            var radio = $('<input type="radio" />')
+                                .attr('name', 'payment_id')
+                                .attr('id', 'pay_' + i)
+                                .val(data.arrPayment[i].payment_id);
+                            // ラベル
+                            var label = $('<label />')
+                                .attr('for', 'pay_' + i)
+                                .text(data.arrPayment[i].payment_method);
+                            // 行
+                            var tr = $('<tr />')
+                                .append($('<td />')
+                                        .addClass('centertd')
+                                        .append(radio))
+                                .append($('<td />').append(label));
+
+                            // 支払方法の画像が登録されている場合は表示
+                            if (data.img_show) {
+                                var payment_image = data.arrPayment[i].payment_image;
+                                $('th#payment_method').attr('colspan', 3);
+                                if (payment_image) {
+                                    var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
+                                    tr.append($('<td />').append(img));
+                                } else {
+                                    tr.append($('<td />'));
+                                }
+                            } else {
+                                $('th#payment_method').attr('colspan', 2);
+                            }
+
+                            tr.appendTo(payment_tbody);
+                        }
+                        // お届け時間を生成
+                        var deliv_time_id_select = $('select[id^=deliv_time_id]');
+                        deliv_time_id_select.empty();
+                        deliv_time_id_select.append($('<option />').text('指定なし').val(''));
+                        for (var i in data.arrDelivTime) {
+                            var option = $('<option />')
+                                .val(i)
+                                .text(data.arrDelivTime[i])
+                                .appendTo(deliv_time_id_select);
+                        }
+                    }
+                }
+            });
+        });
+
+        /**
+         * 通信エラー表示.
+         */
+        function remoteException(XMLHttpRequest, textStatus, errorThrown) {
+            alert('通信中にエラーが発生しました。カート画面に移動します。');
+            location.href = '<!--{$smarty.const.CART_URLPATH}-->';
+        }
+    });
+//]]>
+</script>
 <div id="under02column">
     <div id="under02column_shopping">
@@ -28,4 +106,33 @@
             <input type="hidden" name="mode" value="confirm" />
             <input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->" />
+            <!--{assign var=key value="deliv_id"}-->
+            <!--{if $is_single_deliv}-->
+                <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value}-->" />
+            <!--{else}-->
+            <div class="payarea">
+                <h3>配送方法の指定</h3>
+                <p>配送方法をご選択ください。</p>
+
+                <!--{if $arrErr[$key] != ""}-->
+                <p class="attention"><!--{$arrErr[$key]}--></p>
+                <!--{/if}-->
+                <table summary="配送方法選択">
+                    <tr>
+                        <th>選択</th>
+                        <th colspan="2">配送方法</th>
+                    </tr>
+                    <!--{section name=cnt loop=$arrDeliv}-->
+                    <tr>
+                        <td class="centertd"><input type="radio" id="deliv_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->"  value="<!--{$arrDeliv[cnt].deliv_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" <!--{$arrDeliv[cnt].deliv_id|sfGetChecked:$arrForm[$key].value}--> />
+                        </td>
+                        <td>
+                            <label for="deliv_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrDeliv[cnt].name|h}--><!--{if $arrDeliv[cnt].remark != ""}--><p><!--{$arrDeliv[cnt].remark|h}--></p><!--{/if}--></label>
+                        </td>
+                    </tr>
+                    <!--{/section}-->
+                </table>
+            </div>
+            <!--{/if}-->
+
             <div class="payarea">
                 <h3>お支払方法の指定</h3>
@@ -36,9 +143,12 @@
                 <p class="attention"><!--{$arrErr[$key]}--></p>
                 <!--{/if}-->
-                <table summary="お支払方法選択">
+                <table summary="お支払方法選択" id="payment">
+                  <thead>
                     <tr>
                         <th>選択</th>
-                        <th colspan="<!--{if !$img_show}-->2<!--{else}-->3<!--{/if}-->">お支払方法</th>
-                    </tr>
+                        <th colspan="<!--{if !$img_show}-->2<!--{else}-->3<!--{/if}-->" id="payment_method">お支払方法</th>
+                    </tr>
+                  </thead>
+                  <tbody>
                     <!--{section name=cnt loop=$arrPayment}-->
                     <tr>
@@ -57,4 +167,5 @@
                     </tr>
                     <!--{/section}-->
+                  </tbody>
                 </table>
             </div>
@@ -64,7 +175,7 @@
                 <h3>お届け時間の指定</h3>
                 <p>ご希望の方は、お届け時間を選択してください。</p>
-                <!--{foreach item=shippingItem name=shippingItem from=$shipping}-->
+                <!--{foreach item=shippingItem name=shippingItem from=$arrShipping}-->
                 <!--{assign var=index value=$smarty.foreach.shippingItem.index}-->
-                <!--{if $isMultiple}-->
+                <!--{if $is_multiple}-->
                 <div>
                         &nbsp;<!--{$shippingItem.shipping_name01}--><!--{$shippingItem.shipping_name02}--><br />
