ESPRIT
espri****@poco*****
2004年 2月 16日 (月) 23:10:37 JST
【バージョン】 OpenBazaar 0.0.3 ◆機能要求経緯 ダウンロード販売の場合に注文処理が完了するとダウンロードが可能になります。 決済が完了していないにもかかわらずダウンロードできることは不都合です。 ショップ処理で決済が完了した時点すなわち処理ステータスが「配送済み」とな た以降にダウンロードリンクを表示するように機能追加する案を提案します。 本機能では注文処理ステータスを「配送済み」から他の設定に戻すことで再度ダ ウンロードリンクを非表示とすることができます。 受注から決済処理完了までの間にはとても鬼親切なメッセージを表示します。 ◆追加機能による運用上の問題点 ダウンロード可能期間リミットは発注時に設定されます。 ショップ側処理が遅れると実質のDL可能期間が減少することになります。 特に夏季、GWおよび年末年始などで問題が出ることがあります。 振り込み決済の場合に振込みの遅延による期間の消化などの問題があります。 次のような対策を講じる必用があります。 ▲対策案1 オプション設定で余裕のある期間設定を行なう。 ▲対策案2 SQLが使える方は必要に応じて直接事後変更するマニュアルを作成する。 ▲対策案3 注文内容を編集するプログラムを追加する。 ◆影響を与える処理 1.手続完了表示(checkout_success.php) 2.前回のオーダー表示(account_history_info.php) 3.マイオーダーからの過去のオーダー表示(同上) ◆他の処理に与える影響 なし ◆環境依存 なし ◆チェック 動作確認済み 対応には処理1から3を実行してください。 ◆処理1(処理ステータス取得) lib/catalog/modules/downloads.php 20行目次を追記 //◆ダウンロードを決済完了後に許可する場合の処理 $orders_query = tep_db_query("select orders_status from " . TABLE_ORDERS . " where customers_id = '" . (int)$_SESSION["customer_id"] . "' order by orders_id desc limit 1"); $orders = tep_db_fetch_array($orders_query); define('ORDERS_STATUS_VALUE', $orders['orders_status']);//◆ ◆処理2(表示用文字列の用意:名付けて鬼親切メッセージ) lib/catalog/language/japanese.phpに次を追記 define('DOWNLOAD_WAIT_MSG', '決済処理を終えて配送完了となりましたらダウンロードできます。<br> 決済処理を終えましたらメールを差し上げます。<br> ログインのうえ「アカウント情報」の前回のオーダーまたはマイオーダーで<br> 該当のオーダーを表示しますとダウンロード用のリンクを表示します。<br> 処理が完了するまで今暫くお待ちください。<br> '); define('DOWNLOAD_WAIT_INFORMATION','ダウンロードのご案内'); ◆処理3(条件分岐による表示の切り替え) html/include/downloads.html 【条件処理の追加】 1.FILENAME_CHECKOUT_SUCCESSが含まれなくて ORDERS_STATUS_VALUE==3の場合にダウンロードリンク(現状)表示する 2.1の条件以外は DOWNLOAD_WAIT_INFORMATION DOWNLOAD_WAIT_MSG を表示する。 以下と差し替えてください。 差し替える場合には旧来ファイルをバックアップとして保存してください。 機能を戻す場合に必用です。 差し替える場合には文字コードにご注意ください。 =================== downloads.html start =================== {* $Id: downloads.html,v 1.1.1.1 2004/01/07 09:18:19 shota Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License *} {include_php file="`$smarty.const.DIR_FS_MODULES`downloads.php"} <!-- downloads //--> {if ($downloads_count > 0)} {if (!strstr($smarty.server.PHP_SELF, $smarty.const.FILENAME_CHECKOUT_SUCCESS) && ORDERS_STATUS_VALUE == 3)} <tr> <td>{osc_draw_separator image='pixel_trans.gif' width='100%' height='10'}</td> </tr> <tr> <td class="main"><b>{$smarty.const.HEADING_DOWNLOAD}</b></td> </tr> <tr> <td>{osc_draw_separator image='pixel_trans.gif' width='100%' height='10'}</td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <!-- list of products --> {section name=d1 loop=$download_array} <tr class="infoBoxContents"> <!-- left box --> <td class="main">{$download_array[d1].name}</td> <!-- right box --> <td class="main">{$smarty.const.TABLE_HEADING_DOWNLOAD_DATE} {$download_array[d1].expiry}</td> <td class="main" align="right">{$download_array[d1].download_count}{$smarty.const.TABLE_HEADING_DOWNLOAD_COUNT}</td> </tr> {/section} </tr> </table></td> </tr> {if (!strstr($smarty.server.PHP_SELF, $smarty.const.FILENAME_ACCOUNT_HISTORY_INFO))} <tr> <td>{osc_draw_separator image='pixel_trans.gif' width='100%' height='10'}</td> </tr> <tr> <td class="smalltext" colspan="4"><p>{$footer_download}</p></td> </tr> {/if} {else} <tr> <td>{osc_draw_separator image='pixel_trans.gif' width='100%' height='10'}</td> </tr> <tr> <td class="main"><b>{$smarty.const.DOWNLOAD_WAIT_INFORMATION}</b></td> </tr> <tr> <td class="main"> <table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td class="main"> {$smarty.const.DOWNLOAD_WAIT_MSG} </td> </tr> </table> </td> </tr> {/if} {/if} <!-- downloads_eof //--> =================== downloads.html end =================== 以上 PS1.あらと様迅速な対応をありがとうございました。 PS2.やっと自分のHNがまともに設定できました。 (メーラー設定って難しいですね。) PS3.そしてsmartyを少し理解して大人の気分。