読者です 読者をやめる 読者になる 読者になる

akiyoko blog

akiyoko の IT技術系ブログです

ゼロからはじめる Django で ECサイト構築(その3:Django Oscar の機能を調べる)

Python Django ECサイト 決済 PayPal

Django 製の ECパッケージの決定版とも言える Django Oscar は、公式ドキュメント によると、以下の 16 個の機能(Django App)から構成されています。
Oscar Core Apps explained — django-oscar 1.3 documentation



機能
概要
備考
Address 住所登録 配送先住所や請求先住所を管理する
Analytics アナリティクス 商品およびユーザーについてのアナリティクスが利用できる
Basket バスケット ショッピングカート機能が利用できる
Catalogue カタログ 商品カテゴリを管理する
Checkout 決済手続き 特定のフローに沿って決済手続きができる
Customer 顧客管理 在庫切れアラートやメール送信など、顧客とのやり取りを行う。他にも、メンバーシップやマイページのほとんどの機能がここに含まれる
Dashboard ダッシュボード 商品カタログ管理、商品注文管理、在庫・出庫管理、オファー管理などのバックオフィス機能のためのダッシュボード。Django admin サイトの代わりとして利用する
Offers オファー 柔軟な条件のディスカウントを設定することができる
Order 商品注文 在庫数のチェックロジック、ディスカウントや配送料を含めた料金計算ロジックを提供する。画面は無い
Partner パートナー 商品の仕入先パートナー(Supplier)を登録したり、在庫・出庫パートナー(Fulfilment Partner)が利用する情報を提供したりする機能。SKU、在庫数、価格などが記録された在庫元帳(Stockrecord)、税率ポリシーや在庫ポリシーを持つストラテジー(Strategy)を管理することもできる。なお、在庫元帳とストラテジーから、商品を購入するのに必要な情報(PurchaseInfo)を取得する
Payment 購入情報 特定の決済代行サービスのための機能を利用することができる
Promotions 広告 広告のためのコンテンツブロックを作成し、特定の位置(トップページ、検索結果ページなど)に表示することができる
Search 商品検索 商品検索機能が利用できる
Shipping 配送料計算 配送先住所やショッピングカートの合計重量、その他いろいろな条件に応じて、自動的に配送料の計算をすることができる(ように設計されている) *1
Voucher バウチャー いろいろなタイプのクーポンコードを設定することができる
Wishlists ウィッシュリスト ほしい物リストが利用できる





今回は、前回 構築した Django Oscar の Sandbox サイトを実際に動かしながら、Django Oscar の機能の一覧を調べていくことにします。


f:id:akiyoko:20160611012326j:plain





 

メンバーシップ

アカウント登録、退会、パスワード変更、ログイン、ログアウトの機能はひと通り揃っています。


 

アカウント登録

メールアドレスをベースにしたアカウント登録をすることができます。基本的なバリデーションはデフォルトで実装されています。

f:id:akiyoko:20160611113759p:plain

退会

少しわかりにくいですが、退会は、プロフィールページ(右上の[Account]>[Profile]で遷移)から[Delete Profile]を押下することでアカウントを削除することができます。

f:id:akiyoko:20160608011151p:plain
f:id:akiyoko:20160608004823p:plain

パスワード変更

パスワード変更もプロフィールページから操作することができます。

f:id:akiyoko:20160608011011p:plain
f:id:akiyoko:20160608071145p:plain

上記の方法とは別に、ログインページからもパスワードの変更(リセット)が可能です。

f:id:akiyoko:20160608004522p:plain

パスワードリセットのためのメールを送信することができます。
f:id:akiyoko:20160608071816p:plain

You're receiving this e-mail because you requested a password reset for your user account at example.com.


Please go to the following page and choose a new password:

http://example.com/en-gb/password-reset/confirm/Mw/4ck-c1f54b78fdaa9e31e057/

メール本文のリンクをクリックすると、パスワード変更ページに遷移します。

f:id:akiyoko:20160608071558p:plain

ログイン

Sandbox では、ログインとアカウント登録は、同一画面で行うように実装されています。

f:id:akiyoko:20160608011309p:plain

ログインせずに、ゲストとして商品を検索したり商品を注文したり *2 することも可能です。

ログアウト

任意でログアウトも可能です。

f:id:akiyoko:20160608072131p:plain

 

マイページ

右上の[Account]からアカウントごとのページ(いわゆるマイページ)に遷移することができ、そこでは以下の機能を利用することができます。


f:id:akiyoko:20160608013201p:plain

プロフィール(Profile)

プロフィールページでは、氏名やメールアドレス、アカウント登録日時を表示できるほか、パスワード変更や退会を行うことができます。

f:id:akiyoko:20160608213427p:plain

注文履歴(Order History)

商品注文の履歴一覧、および詳細を確認することができます。
また、注文履歴の詳細画面から再注文をすることもできます。

f:id:akiyoko:20160609074548p:plain


登録済み住所一覧(Address Book)

登録した住所は、デフォルトの配送先住所(shipping address)、デフォルトの請求先住所(billing address)として設定しておき、商品注文時に再利用することができます。

f:id:akiyoko:20160611165642p:plain

メール一覧(Email History)

システムから送信されるメールの一覧を確認することができます。

f:id:akiyoko:20160610004545p:plain

在庫切れアラート(Product Alerts)

在庫切れになっている商品の詳細画面から[Notify me]ボタンを押下することで、サイト管理者にアラートを通知することができます。
f:id:akiyoko:20160610030515p:plain

マイページの[Product Alerts]から、通知した在庫切れアラートの一覧とそのステータス(サイト管理者が変更する)を確認したり、アラートを自らキャンセルしたりすることができます。
f:id:akiyoko:20160610030538p:plain

再入荷通知(Notifications)

在庫切れアラートに対するサイト管理者からのレスポンスとして、再入荷通知が行われます。
f:id:akiyoko:20160609074655p:plain

ウィッシュリスト(Wish Lists)

商品検索時にウィッシュリスト(ほしい物リスト)に入れていた商品を確認することができます。

リストは複数作成でき、それぞれのリストに名前を付けることができます。

f:id:akiyoko:20160608214516p:plain
f:id:akiyoko:20160608214545p:plain

 

商品紹介

商品紹介機能には、以下のようなサブ機能があります。

 

商品カテゴリ別表示

Sandbox サイト構築時に、ダミーの商品が 200点ほど自動的に登録されます。それぞれの商品にはカテゴリが付けられていて、商品カテゴリ別の一覧表示をすることができます。

f:id:akiyoko:20160608215231p:plain

商品検索

右上の検索窓から、商品のキーワード検索をすることができます。ちなみに、検索のバックエンドはプラガブルに入れ替え可能で、デフォルトで Haystack の各種検索エンジンを利用することができます。

f:id:akiyoko:20160608204907p:plain


商品の並び替え

商品検索をした後、以下の条件で並べ替えをすることができます。

  • キーワードへの関連性(Relevancy)
  • ユーザー評価の高い順(Customer rating)
  • 価格の高い順(Price high to low)
  • 価格の低い順(Price low to high)
  • タイトルの昇順(Title A to Z)
  • タイトルの降順(Title Z to A)

f:id:akiyoko:20160608204132p:plain



レビュー(ユーザー評価)

商品詳細ページで、レビュー(ユーザー評価)を書き込むことができます。
レビューの公開設定は、サイトの設定で承認制にすることも可能です。

f:id:akiyoko:20160608082137p:plain


レコメンド(おすすめ商品)

商品詳細ページの下の方に、おすすめ商品一覧(Recommended items)が表示されます。なお、Sandbox では、おすすめ商品はダッシュボード上でサイト管理者が手動で設定する仕組みになっています。

f:id:akiyoko:20160610103746p:plain


最近チェックした商品一覧

商品詳細ページの下の方に、最近チェックした商品一覧(Recommended items)が自動的に表示されます。

f:id:akiyoko:20160610103851p:plain



商品注文

商品注文としては、次の機能が含まれています。

 

ショッピングカート(Basket)

Amazon での「カート」、楽天市場での「買い物カゴ」と同等の機能が使えます。

商品詳細ページの[Add to basket]ボタンを押下することで、ショッピングカートに商品を追加することができます。

f:id:akiyoko:20160609073056p:plain

右上の[View basket]ボタンから、カートの中身をチェックすることができます。

f:id:akiyoko:20160609073117p:plain

ショッピングカートはこのように表示されます。

f:id:akiyoko:20160609073312p:plain

ショッピングカートの状態(アイテムの中身)は Cookie に保存され、Sandbox のデフォルト設定では一週間保持されることになります。



商品注文(Order)

ショッピングカートの状態に応じて、適切なディスカウントが自動的に適用されます。また、ユーザーに入力されたクーポンコードによるディスカウントについてもここで合わせて計算されます。

f:id:akiyoko:20160609073312p:plain

なお、通常の商品注文だけではなく、プレオーダー(予約注文)やバックオーダー(在庫切れ商品の取り寄せ注文)も可能です。また設定次第で、ゲスト注文(アカウント登録せずに商品注文すること)を許可することもできます。



決済手続き(Checkout)

Oscar の決済手続きは通常、以下のステップに沿って進められます。

1.ゲスト注文不可ならアカウント登録へ(ログイン済みの場合はスキップ)
   ↓
2.配送先入力
   ↓
3.配送方法選択(配送方法が一つのみの場合はスキップ)
   ↓
4.決済方法選択
   ↓
(PayPal ページにリダイレクト)
   ↓
(PayPal 買い手アカウントで認証して、決済内容を承認)
   ↓
5〜7.プレビュー & 決済内容詳細表示 & 注文確定(支払い)
   ↓
8.「ご注文ありがとうございます」

Checkout — django-oscar 1.3 documentation を参考に改編)


商品の決済手続きをする場合は、ショッピングカートページから「決済手続きに進む(Proceed to checkout)」ボタンを押下します。
f:id:akiyoko:20160609073349p:plain

(ログイン済みなので自動的に)配送先入力ステップに進みます。ここではデフォルトの配送先を選択します。
f:id:akiyoko:20160609073426p:plain

配送方法選択ステップはスキップされ、決済方法選択に進みます。
ちなみに今回は、Sandbox 構築時に決済モジュールとして PayPal しか設定していないため、ここでは PayPal 以外の選択肢がありません。
f:id:akiyoko:20160609073446p:plain

PayPal のログインページにリダイレクトされます。ここで PayPal の買い手アカウントでログインして、
f:id:akiyoko:20160609073647p:plain

決済内容を承認すると、
f:id:akiyoko:20160609073709p:plain

ECサイトのプレビューページに戻ってきます(決済はまだ確定していません)。

プレビューページの「注文確定(Place order)」ボタンを押下すると、支払いが完了します。
f:id:akiyoko:20160609073732p:plain

最後に確認ページが表示されます。
f:id:akiyoko:20160609073807p:plain


 

ダッシュボード(Dashboard)

ダッシュボードでは、商品カタログ管理、商品注文管理、在庫・出庫管理、オファー管理などのバックオフィス機能を利用することができます。

ダッシュボードのホーム画面には、指標となるデータがまとめて一覧表示されています。

f:id:akiyoko:20160610022412p:plain


ダッシュボードで利用できる機能としては、主に以下のようなものがあります。


 

商品カタログ管理(Catalogue)

商品カタログ管理機能では、単に商品を登録するだけでなく、様々な付加情報を設定することができます。

商品カテゴリ登録(Categories)

カテゴリとサブカテゴリを親子関係で紐付けることで、ツリー構造の商品カテゴリを実現することができます。Structure には、親カテゴリ、子カテゴリのほか、スタンドアロンの 3種類のいずれかを指定することができます。

なお、商品カテゴリは、主にナビゲーションのためだけに使用されます。


最上位の商品カテゴリは、[Catalogue]>[Categories]から管理します。

f:id:akiyoko:20160609071117p:plain

[Number of child categories]のリンクか、[Actions]>[Edit children]から辿ってサブカテゴリを編集することができます。


商品登録(Products)

[Catalogue]>[Products]で移動できる商品一覧ページから、商品を登録・編集することが可能です。

ちなみに、商品一覧ページには在庫数が表示されておらず、少し不便です。私個人的にはデフォルトで表示させてほしいところです。

f:id:akiyoko:20160609071138p:plain

商品は、事前に作成した「商品タイプ(Product type)」に紐付ける必要があります。


商品を選択後、[Stock and pricing]タブから仕入先パートナーや在庫数、通貨、価格を設定したり、[Upselling]タブからレコメンド(おすすめ商品)を設定したりすることができます。

f:id:akiyoko:20160611142403p:plain
f:id:akiyoko:20160610030319p:plain


 

在庫・出庫管理(Fulfilment)

在庫・出庫のために必要な情報を提供します。

商品注文管理(Orders)

[Fulfilment]>[Orders]から、商品注文の一覧を確認することができます。

ユーザー側で決済まで完了した商品注文は「Pending」ステータスになっているため、例えば、出庫の受付が済んだら「Being processed」に、配送が完了したら「Complete」に、というふうにステータスを切り替えることができます(手動で切り替えます)。
f:id:akiyoko:20160609081752p:plain

パートナー登録(Partners)

[Fulfilment]>[Partners]から、パートナーを作成したりパートナー一覧を確認したりすることができます。

パートナーには、ユーザーを任意で紐付けることができます。
f:id:akiyoko:20160609081831p:plain

顧客管理(Customers)

ユーザー管理(Customers)

[Customers]>[Customers]から、ユーザーごとの注文履歴や登録済みの住所、商品レビューの一覧などの情報を確認できるほか、パスワードリセットのためのメールを送信するボタンも用意されています。
f:id:akiyoko:20160609082251p:plain


在庫切れアラート管理(Stock alert requests)

[Customers]>[Stock alert requests]から、ユーザーからリクエストされた在庫切れアラートの一覧を確認することができます。
f:id:akiyoko:20160610031030p:plain


オファー管理(Offers)

オファー管理では、ディスカウントとバウチャーの管理をすることができます。

 

ディスカウント登録(Offers)

[Offers]>[Offers]から、ディスカウントを登録・編集できます。
f:id:akiyoko:20160609071005p:plain

Sandbox にデフォルトで登録されている以下の三種類のディスカウントのほか、ボリュームディスカウントなど柔軟な条件のディスカウントを設定することができます。

  • 1)規定個数以上買えば 1つ無料
    • ショッピングカートに 規定個数以上の商品を入れれば、その中で最も価格が安い商品が 1つ無料になるというタイプのディスカウントです。デフォルトの「Normal site offer」は、3個以上で 1つ無料という設定になっています。
  • 2)購入後特典(deferred benefit)
    • 購入後にポイントがもらえる的なディスカウントも設定可能です。Sandbox の「Deferred benefit offer」の説明には「商品を買ったら名前が Barry になるよ」というのが書かれているのですが、イギリスのギャグ(?)なのでしょうか。。(ちなみに、本当に購入後にユーザー名が Barry になってしまいます 笑)
  • 3)配送料無料

f:id:akiyoko:20160609071038p:plain


クーポンコード登録(Vouchers)

[Offers]>[Vouchers]から、クーポンコードを登録・編集することができます。ディスカウントは条件に応じて自動的に適用されるのに対し、クーポンコードは、ユーザーがコードを適宜入力する必要があります。


クーポンコードの登録にあたってはいろいろ柔軟な指定ができるようになっていて、例えば、それぞれのクーポンコードの使用制限について、以下の中から選択することができます。

  • 誰でも一回だけ使用可
  • 誰でも何回でも使用可
  • 先着一名のみ一回だけ使用可

また、割引きの種類については以下の中から選択可能です。

  • パーセント指定で割引
  • 金額指定で割引
  • 配送料のパーセント指定で割引
  • 配送料の金額指定で割引
  • 配送料が固定金額に

f:id:akiyoko:20160609071209p:plain
f:id:akiyoko:20160609071242p:plain


コンテンツ管理(Content)

アバウトページなどの固定ページを編集できるほか、[Content]>[Reviews]からユーザーレビューを確認することもできます。

f:id:akiyoko:20160609082027p:plain



レポート出力(Reports)

レポート出力機能では、様々なレポートを出力することができます。

f:id:akiyoko:20160611151345p:plain


決済状況管理(PayPal)

こちらは決済モジュールに django-paypal を利用した場合に使えるようになる機能ですが、[PayPal]>[Express transactions]から、ユーザーが PayPal 決済のトランザクションで使用した決済API のレスポンスの一覧および詳細を確認することができます。

これにより、決済処理中のエラーをトラッキングして解決に役立てることができるようになります。

f:id:akiyoko:20160609082133p:plain
f:id:akiyoko:20160609082200p:plain



 

まとめ

もちろん今回調査した機能以外にも、様々な機能が Django Oscar にはデフォルトで備わっています。しかしながら、今回の調査結果で分かるように、Django Oscar には、ECサイトを運営する上で必要となる基本機能はだいたい揃っていると考えてよいでしょう。


あとは、日本で Django Oscar を利用して ECサイトを構築したときに、日本の商習慣に合わせたカスタマイズ、ローカライズが必要になってくると考えられます。そこは追々やっていくとして、今後は、Oscar の機能をもう少し深追いしてみたいと思います。

*1:How to configure shipping — django-oscar 1.3 documentation

*2:ゲスト注文を許容するかどうかは設定次第