OrderProcess コマンド
このコマンドは、オーダーを送信します。
オーダーは OrderPrepare によってロックされていなければなりません。
いったん OrderProcess コマンドが実行されると、OrderCancel でオーダーをキャンセルすることはできません。

パラメーター値
- http://host_name/path/
- (必須) WebSphere Commerce サーバーおよび構成パスの完全修飾名
- forUser
- このコマンドの実行対象のユーザーのログオン ID。
このパラメーターを指定できるのはオーダーを処理する権限がある人だけです。
- forUserId
- forUser と同様ですが、ユーザーは USERS テーブル中にある内部ユーザー ID によって識別されます。
- langId
- セッション期間中の優先言語を設定またはリセットします。
ストアでサポートされている言語は、STORELANG テーブルにあります。
- storeId
- オーダーが発行されるストアの参照番号。
オーダーが解決されるまでにエラーが発生しない場合、この値は無視されます。
この番号は、正しいストアの例外ハンドラーを呼び出す場合のみ使用されます。
- orderId
- (必須) オーダーの参照番号。
- billtoAddressId
- 請求先住所の参照番号
- field1、field2、および field3
- カスタマイズ可能なフィールド
- notifyMerchant
- オーダーの処理が完了した時に、ストアにその旨を通知するかどうかを示します。
1= はい
0= いいえ
- notifyShopper
- オーダーの処理が完了した時に、顧客にその旨を通知するかどうかを示します。
1= はい
0= いいえ
- quoteExpiredURL
- オーダー合計価格が quoteExpiryPolicy パラメーターによって指定されている満了ポリシーと一致して有効期限が切れている場合のリダイレクト先の URL を指定します。
- quoteExpiryPolicy
- オーダー合計価格の有効期限が切れている場合のコマンドの動作、
または在庫割り振り中のオーダー・アイテムの配送センターの変更を定義します。
オーダー合計価格は、現在時刻がオーダー最終更新タイム・スタンプに STOREテーブルの QUOTEGOODFOR 列に指定されている秒数を加算した値以上である場合は有効期限が切れます。
このパラメーターは 3 つの値をもつ場合もあります:
- alwaysProceed= は常に、オーダー合計価格の再計算後にオーダーの処理を先に進めます。
- stopOnBiggerTotal= は、再計算後のオーダー合計価格が未変更であるか、
前のオーダー合計価格より小である場合はオーダーの処理を先に進めます。
そうでない場合には、quoteExpiredUrl によって指定されている URL にリダイレクトします。
- neverProceed= 常に quoteExpiredUrl によって指定されている URL にリダイレクトします。
- notifyOrderSubmitted
- オーダーが処理のために正常に送信された場合、顧客にその旨を通知するかどうかを指定します。
1= はい
0= いいえ (デフォルト)
- availabilityChangeURL
- maxAvailabilityChange パラメーターが指定するよりも大きい時間間隔によって、
見積もった使用可能時間に任意のオーダー・アイテムの配送オフセットを加えると将来になってしまう
(在庫の割り振りまたはバック・オーダーの結果として) 場合の、URL のリダイレクト先を指定します。
このパラメーターは、ATP 在庫割り振りが使用可能でない場合は無視されます。
- maxAvailabilityChange
- availabilityChangeURL パラメーターの説明で言及されている、時間間隔を秒単位で指定します。
デフォルト値は 3600 (1 時間) です。
このパラメーターは、availabilityChangeURL パラメーターが指定されない場合、
または ATP 在庫割り振りが使用可能でない場合は無視されます。
- noInventoryURL
- オーダー内のオーダー・アイテムがいずれも割り振られないか、
またはバック・オーダーされない場合の URL のリダイレクト先を指定します。
このパラメーターは、ATP 在庫割り振りが使用可能でない場合は無視されます。
- tcId
- 条件オブジェクトの ID (TERMCOND テーブルを参照)。
これが指定され、さらに PaymentTC が memberId およびアドレス nickName (PaymentTC マッピングを参照) を指定すると、
memberId およびアドレス nickName は、
billToAddressId パラメーターが無視された場合に請求先住所を決定するのに使用されます。
支払いに関する注
OrderProcess コマンドそれ自体が支払いを処理するわけではありません。
支払いを処理するために、DoPayment タスク・コマンドがインプリメントする DoPaymentCmd インターフェース・クラスを使用してください。
OrderProcess からこのコマンドに渡されるパラメーターは、一般にはクレジット・カード情報をインプリメントする何らかとすることができます。
WebSphere Commerce には OH タスク・コマンドの 2 つのインプリメンテーション・クラス、
DoPaymentCmdImpl クラス
および DoPaymentMPFCmdImpl クラスが含まれます。
DoPaymentCmdImpl クラスは、OrderProcess コマンドを処理する DoPayment タスク・コマンド・インプリメンテーションを作成する方法を示すために使用されるサンプル・インプリメンテーションです。
DoPaymentMPFCmdImpl クラスは、標準 DoPaymentCmd インプリメンテーション・クラスで、
IBM WebSphere Payment Manager バージョン 3.1 で使用するために設計されており、
WebSphere Commerce Business Edition の今回のリリースに取り入れられている企業間取り引き機能へのサポートが組み込まれています。
オーダー通知に関する注
オーダー通知を構成する必要がある場合、以下のことが必要です。
- アウトバウンド・メッセージを使用可能にする。
- オーダー通知メッセージを構成するメッセージ構成テンプレートを作成する。
例 1
以下のコマンドは、参照番号が 3 のオーダーの発行を処理します:
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?orderId=3
例 2
Payment Manager がすでにセットアップされているものとすると、このコマンドは顧客の支払い情報を Payment Manager に渡します。
パラメーター policyId=200 は、ストア・モデルが Payment Manager のデフォルトによって使用する OfflineCard メソッドを参照します。
http://myhostname/webapp/wcs/stores/servlet/OrderProcess?storeId=34
&orderId=556677&policy=200&cardBrand=Visa
&cardNumber=41111111111111111&cardExpiryMonth=12&cardExpiryYear=2001
注: payMethodId パラメーターは後方互換性だけのためにサポートされています。
新しい Payment Manager カセットおよび新しい企業間取り引き機能には、policyId パラメーターを代わりに使用します (例 2 のように)。
定義済み支払いポリシーのリストについては、下記の関連リンクを参照してください。
DoPaymentMPFCmdImpl クラスは、tcId と呼ばれる追加のパラメーターをサポートします。
それは、オーダーに使用される支払条件の ID を指定するのに用います。
その条件は、オーダー・アイテムに関連した契約で指定されている共通の支払条件の 1 つでなければなりません。
JSP ファイルの共通の支払条件を選択するのを援助するには、UsablePaymentTCListDataBean を使用してください。
OrderItems に使用されるいずれかの契約に、関連する支払い条件がある場合、tcId パラメーターは必須です。
動作
- OrderProcess コマンドは、ProcessOrder タスク・コマンドを呼び出して以下を実行します。
- オーダーがロックされていない場合 (OrderPrepare コマンドによって準備されてから、
オーダーが変更していないことを示す)、またはオーダー状況が 'P'、'I'、'E'、'W'、'N'、または 'B' でない場合、
ECApplicationException 例外が送出されます。
- STORE テーブル中の QUOTEGOODFOR 列の値が NULL ではなく、
パラメーター quoteExpiryPolicy および quoteExpiredURL が指定されており、
オーダーの状況が 'P'、'I'、'W'、または 'N' である場合、コマンドはオーダーの最終更新タイム・スタンプを調べます。
現在時刻が、最終更新タイム・スタンプに QUOTEGOODFOR に指定されている秒数を加算した値より大か等しい場合には、
OrderProcess は PrepareOrder を呼び出してから、
quoteExpiryPolicy の値に基づいて以下のいずれかを実行します。
- 再計算後のオーダー合計価格が未変更であり、quoteExpiryPolicy パラメーターで認可されていない場合には、通常通りに先へ進めます。
- 再計算後のオーダー合計価格が小さくて、quoteExpiryPolicy パラメーターで認可されていない場合には、通常通りに先へ進めます。
- 再計算後のオーダー合計価格が小さくて、quoteExpiryPolicy パラメーターで認可されている場合には、通常通りに先へ進めます。
- そうでない場合には、オーダーを処理しないで、その代りに、quoteExpiredURL パラメーターによって指定されている URL にリダイレクトします。
- ATP 在庫割り振りが使用可能な場合:
- まだ割り振られていないか、またはバック・オーダーされていないオーダー・アイテム、
または最後に割り振られたかバック・オーダーされてから変更されているオーダー・アイテムは、
割り振りできない場合、
AllocateInventory タスク・コマンドを呼び出すことによって、割り振られるかバック・オーダーされます。
- オーダー・アイテムのいずれかが割り振りまたはバック・オーダーできない場合:
- noInventoryURL パラメーターが指定される場合、コマンドはその URL へのリダイレクトを戻します。
- そうでない場合、オーダー状況が L に変更され、コマンドが戻されます。
- availabilityChangeURL パラメーターが指定され、
オーダー・アイテムのいずれかに見積もられた使用可能時間が、
割り振りまたはバック・オーダー時に maxAvailabilityChange パラメーターに指定された時間よりも、
将来になってしまう場合は、コマンドはその URL へのリダイレクトを戻します。
- AllocateInventory タスク・コマンドがオーダーをアンロックした場合、
つまりオーダー・アイテムの配送センターが変更された場合:
-
ReprepareOrder タスク・コマンドを呼び出すことにより、配送料および税額が再計算され、
オーダーはロックされます。
これによってオーダーの合計金額が変更され、
quoteExpiryPolicy および quoteExpiredUrl パラメーターが指定される場合:
- 再計算後のオーダー合計価格が未変更であり、quoteExpiryPolicy パラメーターで認可されていない場合には、通常通りに先へ進めます。
- 再計算後のオーダー合計価格が小さくて、quoteExpiryPolicy パラメーターで認可されていない場合には、通常通りに先へ進めます。
- 再計算後のオーダー合計価格が小さくて、quoteExpiryPolicy パラメーターで認可されている場合には、通常通りに先へ進めます。
- そうでない場合には、オーダーを処理しないで、その代りに、quoteExpiredURL パラメーターによって指定されている URL にリダイレクトします。
- オーダー・アイテムの予定使用可能時間は、現在の見積もりの使用可能時間に設定されます。
- オーダー状況が 'I' である場合、CheckOrder タスク・コマンドが、
このオーダーがまだ処理用に送信されていないことを検証するために呼び出されます。
- CheckOrderAcceptance タスク・コマンドが、
オーダー・アイテム契約がアクティブであることを検証するために呼び出されます。
- ORDOPTIONS テーブルが更新され、
notifyMerchant および notifyShopper パラメーターを反映します。
- tcId または billToAddressId パラメーターが指定する、請求先住所がある場合、オーダーに保管されます。
- field1、field2、および field3 パラメーター値が指定される場合、オーダーに保管されます (ORDERS テーブルを参照)。
- ATP 在庫割り振りが使用可能でなく、DoPayment タスク・コマンド・インターフェースのインプリメンテーションが
DoInventory インターフェースをインプリメントしない場合、UpdateInventory タスク・コマンドが呼び出され、
オーダーされたアイテムの在庫を減分します。
(DoInventory インターフェースはいずれのメソッドも宣言していません。
このインターフェースをインプリメントする DoPayment タスク・コマンドは、
コマンド・インプリメンテーションまたはその関連した機能およびコマンドが
在庫の更新を処理するということを世界に対して宣言します。)
- 適切な DoPayment タスク・コマンドが、
追加のエラー検査を実行し、支払いを処理するために呼び出されます。
そして、ORDPAYINFO テーブルから取られる支払い情報の名前/値の対を、
OrderProcess URL コマンドに渡されるパラメーターとマージして渡します。
OrderProcess URL コマンドに渡されるパラメーターのいずれかに、
ORDPAYINFO テーブルからの名前/値の対のいずれかと同じ名前がある場合、
前者の値が後者の値を置き換えます。
名前/値の対のマージ済みリストは ORDPAYINFO テーブルに保管され、以前の支払い情報を置き換えます。
しかし、特に OrderProcess URL コマンド (このページの上記に説明) に通知されているパラメーターは、
tcId パラメーターを除き、支払い情報を考慮に入れておらず、ORDPAYINFO テーブルに保管されません。
- DoPayment タスク・コマンドがオーダー状況値を戻す場合、オーダー状況はその値に設定されます。
そうでない場合、状況は 'C' に設定されるか、または ATP 在庫割り振りが使用可能で、
オーダーにバック・オーダーされたアイテムが含まれている場合には、状況は 'B' に設定されます。
- オーダー状況が 'I' でない場合、
ExtOrderProcess タスク・コマンドが呼び出されます。
( PaySynchronizePM スケジューラー・コマンドが、
オーダー状況を 'I' から別の状況に変更するときに、ExtOrderProcess タスク・コマンドを後で呼び出します。)
- OrderMessaging タスク・コマンドが呼び出されます。
- notifyOrderSubmitted パラメーターが 1 (はい) を指定する場合、
OrderNotify
タスク・コマンドが呼び出され、ショッパーにオーダーが送信されたことを通知します。
- DoPayment タスク・コマンドがバイト・データを戻した場合、
そのデータは DirectView ビューに渡され、顧客のブラウザーに直接渡されます (たとえば、
電子支払い "ウォレット" アプリケーションを立ち上げる)。
そうでない場合、RedirectView ビューが OrderOKView リダイレクト URL に渡され、
オーダー確認通知を顧客に表示します。
例外条件