WordCamp Haneda 2019 - 4月20日(土)、4月21日(日) 大田区産業プラザPiOにて開催

WooCommerce でサブスクリプション

はじめに

WordCamp Osaka 2018 が終わり一息ついたので、以前から懸案事項であった、アドオン販売のサブスクリプション化に取り組み始めました。まず、テストサーバーで動かしてみたので以下に記します。

プラグイン

販売には、WooCommerce を利用しますが、標準ではサブスクリプション機能は付与していません。純正のものは、年間 $199 です。高いのでいろいろ探しました。最近、公式プラグインディレクトリーに登録された、Subscriptions for WooCommerce を試してみたところ、上手く動作しました。

有償のプレミアム版もあります。プレミアム版は、

  • 通常の商品と、サブスクリプション商品を同じカートに入れて決済できます。
  • サブスクリプションに無料の試用期間を設定できます。

インストール

追記 2018年8月10日

上記プラグインは、公式プラグインディレクトリ上で、2018年8月2日に停止されました。有料版のものは何事もなく売っているので、有料版に移行したものと思われます。最終バージョンの1.3.7と、翻訳ファイルを同梱したものを以下に置きます。メンテナンスはしません。自己責任でお使いください。

設定

サブスクリプションのリストテーブルが追加されます。

WooCommerce のアカウント設定

  • 購入時に、アカウントが登録されるようにしないといけません。
  • ”「マイアカウント」ページで、お客様がアカウントを作成できるようにします。” は、bbPress との連携時に、購入しないでユーザー登録してフォーラムに書き込まれる可能性があるので、アンチェックしておきます。

WooCommerce のページ設定

  • アカウントのページを指定します。

サブスクリプションのテキストを入力します。

商品を確認

最上部の商品を編集してサブスクリプション商品へ

サブスクリプション商品の確認

商品を購入してみる

商品を購入してみます。PayPal での購入例です。Stripe も試して正常に動作しました。

ショップを表示

カートに入れる

カート

支払い

支払ページ用のフィルターについて

入力フォームを氏名とメールアドレスに抑制しています。通常、国、会社名、郵便番号、住所、電話番号、などのフォームが出ますが、ダウンロード販売ですと必要ありません。以下のフィルターを使用しています。

add_filter( 'woocommerce_checkout_fields', 'disable_checkout_form_woocommerce' );
add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );

function disable_checkout_form_woocommerce( $fields ){
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
return $fields;
}

参照

PayPal ログイン画面

PayPal 購入確認画面

購入終了

アカウントページを確認

新規購入者アカウント作成メール

購入者注文完了メール

販売者新規注文受付メール

管理画面で確認

サブスクリプションの確認

追加されたユーザーの確認

その他の特殊な設定

ダウンロード商品を外部のサーバーに設置して、自動アップデートできるようにしているので、ダウンロード先を URL で直接指定しています。WooCommerce の設定は、「リダイレクトのみ」になります。

参考資料 PayPal, Stripe の設定

PayPal

Stripe

参考資料 ステータス

テストサーバーは、プライベートネットワーク内の Raspberry Pi 3 Model B です。