WooCommerceの決済ステータス遷移
WooCommerceでは、「オーダー」というオブジェクトが注文状況を示す重要なモデルWC_Order
になります。このオーダーはWordPressのカスタム投稿タイプとして実装されており、通常の投稿と同様、ステータスを持ちます。基本的なステータスは以下の7種類です。
wc-pending
入金待ちwc-processing
入金済みで発送処理中wc-on-hold
入金されていないが、在庫を確保した状態wc-completed
完了(すべての処理が終わった状態)wc-cancelled
キャンセルwc-refunded
返金済みwc-failed
失敗
基本的なステータスの遷移
注文のステータスがどのように遷移していくかについて、以下の場合にわけて説明します。
正常系
まず、カートに入り、チェックアウトページへ進み、決済方法を選びます。そして、その先に進むとAjaxアクションが挟まってから決済完了ページに進むのですが、この間にはじめて WC_Order
が作成され、データベースに保存されます。初期ステータスは wc-pending
つまり、「入金待ち」です。
通常はなんらかの処理が挟まることが多く、たとえばクレジットカード決済なら裏側でバックエンドを叩き、カードが正しいものならステータスを wc-processing
に変更するでしょう。
オフラインペイメント(ex. コンビニ決済、銀行振込)ならば、まだ入金はされていないのですが、通常は指定した支払い期限まで在庫を確保するのが普通なので、ステータスは wc-on-hold
に変わるのがよいプラグインの実装です。その後、入金を確認すると、処理中 wc-processing
に変わり、発送準備に入ったことになります。これが手作業かどうかは、プラグインの実装によります。
実際に発送作業を終え、すべてが完了したら、ステータスを管理画面から wc-completed
に変更します。すぐれた決済プラグインなら、注文に発送が必要な商品が一つも含まれていない場合(=すべてバーチャル商品)には、 wc-processing
を飛ばしていきなり wc-completed
に変えてくれるかもしれません。
これで正常系の処理は終わりです。
返金の場合
いったん完了した決済について、たとえば発送した商品が届かなかった場合、お金を返す必要があります。管理画面から返金操作を行い、その金額が全額に達するとステータスは wc-refunded
に変わります。
決済に失敗した場合
決済が失敗し、なおかつそれがやり直しのきかない場合(ex. コンビニ決済)、決済ステータスは wc-failed
になります。ただし、これはプラグインの実装によります。
失敗になった決済はサンキューページ(失敗しているのに「サンキュー」と呼ぶのも変ですが)でもう一度決済にリトライする表示が出ます。これを許すかどうかはプラグインの実装によります。
キャンセル
ユーザーが明示的に注文をキャンセルする機能はデフォルトだと存在しません。通常は管理画面から行うことが多いです。wc-cancelled
キャンセルになると、その注文を復活させることはできません。
カスタムステータス
プラグインによってはカスタムステータスを作成している場合があります。その場合はこの限りではありません。
もしカスタムステータスを追加したい場合は、 How to Create a WooCommerce Custom Order Status という記事が参考になるでしょう。
メールによる通知が行われるケース
注文が発生すると、メールが送信されます。「顧客にメールが飛ぶのはどんな場合か?」ということを知りたい場合があります。