投稿

WooCommerceの決済ステータス遷移

This post is written only in Japanese. If you want read it in English, please leave a translation request.

WooCommerceでは、「オーダー」というオブジェクトが注文状況を示す重要なモデルWC_Orderになります。このオーダーはWordPressのカスタム投稿タイプとして実装されており、通常の投稿と同様、ステータスを持ちます。基本的なステータスは以下の7種類です。

  1. wc-pending 入金待ち
  2. wc-processing 入金済みで発送処理中
  3. wc-on-hold 入金されていないが、在庫を確保した状態
  4. wc-completed 完了(すべての処理が終わった状態)
  5. wc-cancelled キャンセル
  6. wc-refunded 返金済み
  7. wc-failed 失敗

基本的なステータスの遷移

注文のステータスがどのように遷移していくかについて、以下の場合にわけて説明します。

正常系

まず、カートに入り、チェックアウトページへ進み、決済方法を選びます。そして、その先に進むとAjaxアクションが挟まってから決済完了ページに進むのですが、この間にはじめて WC_Order が作成され、データベースに保存されます。初期ステータスは wc-pending つまり、「入金待ち」です。

完了ボタンを押すと、このようにAjaxアクションがおきますが、このときにorderが作成されます。

通常はなんらかの処理が挟まることが多く、たとえばクレジットカード決済なら裏側でバックエンドを叩き、カードが正しいものならステータスを 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 という記事が参考になるでしょう。

メールによる通知が行われるケース

注文が発生すると、メールが送信されます。「顧客にメールが飛ぶのはどんな場合か?」ということを知りたい場合があります。

この記事は登録済みユーザー専用です。残り23%のコンテンツを読むためには、ログインしてください。