BTCPay Serverを使うことで、自身のウォレットと紐づいたビットコイン決済のオンラインストアを立ち上げてみよう、という記事だ。
一番楽なのはWordPressをECサイト化させるWooCommerce。
Magentoは少し難易度が高く、PrestaShopは日本で使用するのに向かないので今回のブログではWooCommerceを使用する。
出来がったサイトは、実際に商品を発送するわけではないので決済される場合は寄付と思ってほしい。
BTCPayとは
BTCPay Server is a self-hosted, open-source cryptocurrency payment processor. It’s secure, private, censorship-resistant and free. BTCPayer Server is an open-source project, not a company. We rely on a network of diverse contributors and users to provide support for numerous use-cases. Join us in improving, learning, and building BTCPay.
翻訳:BTCPay Serverは、セルフホスト型であるオープンソースの暗号通貨決済プロセッサです。安全で、プライベートで、検閲に強く、無料です。BTCPayer Serverはオープンソースプロジェクトであり、企業ではありません。私たちは、さまざまなユース・ケースをサポートするために、多くのコントリビューターとユーザーのネットワークに依存しています。BTCPayの改善、学習、構築にご参加ください。
つまり、Bitpayのように、登録することで暗号通貨決済を導入し取引ごとに手数料が徴収されるものではない。自分でVPSやクラウドにデプロイし、自分のウォレットのマスター公開鍵を登録することで暗号通貨決済を利用可能にするというものだ。
ビットコインのセカンドレイヤー技術であるLightning Networkを使用でき、高速なビットコイン決済を自分で導入できる。
オンラインストアの作成
では、以下で順を追ってビットコイン決済のオンラインストアを作っていく。
WordPressサイトを作成する
WordPressサイトの作成方法は割愛する。
調べればたくさんアフィリエイト記事が出てくるだろう。
日本国内の場合、安く共用サーバーで済ませたいならLiteSpeed採用のMixhostで、VPSならConohaで良いだろう。どれも使っているが、安定している。ConohaではチューニングマシンであるKusanagiを使用できるので、少しサイト作成に慣れておりお金を1.5倍程度出せる人はConohaの使用を推奨する。
Kusanagiを使用すると、同じPHPバージョンやメモリの環境であってもサイトの速度が断然速い。SSHで操作するので、コマンドラインを多少使える必要がある。
海外サーバーにも目を向けると選択肢はたくさんあるので、ご自身に合うものを契約してもらえば良い。お金出して良い環境つくりたいならAWSで良いだろうし、簡単に5ドルから使えるDigitalOceanのようなVPSもある。DigitalOceanは以下のリンクから登録すると、60日間100ドル分のクレジットがもらえる。
https://m.do.co/c/f101509fe714
今回作成する、https://shop.keisukekuribara.comは、安く済ませるためDigitalOceanの月5ドル(1GB / 25GB Disk)で作成した(いずれサイト構成は変更する)。
WooCommerceをインストールする
以下の画像のように、Wordoressがインストールできたあとから解説していく。

インストールしたばかりだと、Wordpress Coreなどが最新版になっていない可能性があるため、全部アップデートし最新にしておこう。VPSやクラウドなどへインストールした場合、「sudo su –」でRoot化し、「apt-get update」や「yum update」コマンドをかけてOSの状態も最新にしておくことを推奨する。
システムを最新にしたら、プラグインを追加よりWoocommerceをインストールする。
テーマはお好きなもので良い。フリーのものでも良いし、Themeforestなどで購入しても良い。今回は、WordpressとWoocommerceを開発している企業の、Automatic社が公式で提供しているStorefrontというテーマを使用した。後に、カッチョイイサイトにするため変更予定。

WordPressとStorefrontをインストールし、Storefrontのデモコンテンツを導入すると以下のような見た目になる。まだ、何もいじっていないが、概ね骨格が完成している。

BTCPay Pluginをインストールする
上記のように、WooCommerceをインストールしただけだと決済が行なえない。
なので、BTCPayを導入するためにPluginをインストールする。
通常のフィアット決済(ドルや円など)の場合は、SquareやPaypal、StripeなどのPluginをインストールするとクレジットカード決済を導入できる。オンラインでの販売とともに店頭でも商品を販売している場合、WooCommerceの在庫を同期できるのでSqureがオススメだ。みずほ銀行だと、決済完了後翌営業日に入金してくれる。資金回転率が上がるのは商売にとって非常にプラスだ。
では、BTCPayのプラグインをインストールしていく。プラグインの新規インストールをクリックし、「BTCPay」と入力するとBTCPayチームが公式に提供しているプラグインが表示される。基本的に、Wordpressのプラグインは公式のみ使うようにしよう。

BTCPayのアカウントとコネクトさせる
BTCPayのプラグインをアクティブにすると、Woocomerceの決済設定タブにBTCPayが表示される。

Set Upまたは設定をクリックし、設定画面に行く。
「API Token:」と記載された部分に、セルフホストしたBTCPayのURLまたは、サードパーティで登録したBTCPayのURL記入し、「Pairing Code」を発行する。

つまり、まずはBTCPayにStoreを作成する必要がある。自分でデプロイするか、以下サイトから登録する。

REGISTERをクリックし、アカウントを作成する。Emailで記載したメーアドレス宛に、承認メールが発行される。承認メールをクリックした後、ログインしよう。
このへんのメールアドレス、パスワードの管理はLastpassを使用すると非常に楽なので、使用することをオススメする。めちゃくちゃ便利なのに無料だ。頭おかしい
BTCPayにアカウントを作成しログインすると、以下のようにStores、Apps、Wallets、Invoices、Payment Requestsというように、BTCPayの豊富機能が表示される。
Storesをクリックし、Create a new storeでストアを作成する。これは、Woocommerceで作成するオンラインストアを表す。
Store NameやWebサイトのURLなどの項目を埋めていく。

Derivation Schemeで、BTCを受け取るウォレットをコネクトさせていく。
LedgerやCoinomi、Electrumなどのマスター公開鍵を入力しよう。
ウォレットの情報という部分をクリックするとマスター公開鍵が表示されるので、表示されたマスター公開鍵をコピーする。その後、Derivation SchemeのActionsタブにあるModifyをクリックし、BTCPayアカウントにペーストする。
ウォレットの情報に記載されているスクリプトタイプ(P2PKHやP2WPKHなど)に合致するよう、Address typeに合わせてマスター公開鍵の最後に「-[legacy]」などと追記しよう。Confirm the addresses (BTC)という画面が表示されるので、コネクトさせるウォレットのアドレスと合致するか確認し、合致していた場合Confirmする。

Lightning Networkを使用したい場合はセルフホストする必要がある。
これで、BTCPayの中でStoreが完成したのでWoocommerceと連携できる。BTCPay URLを入力するとPairing codeを発行するためのURLが表示されるので、表示されたURLにいく。
Manage store、Create a new tokenという画面が表示され、Request pairingというボタンをクリックするとPairing codeが発行される。

Server initiated pairing code: 「hogehoge」
というように、英数字でPairing codeが発行される。このPairing codeをWoocommerceのAPI Token部分へ入力しPairをクリックすれば、晴れてビットコイン決済導入の準備が整う。

商品を追加すっぞ
商品を並べる
今回作成しているのはデモオンラインストアなので、適当に商品追加しておこう。
いい感じに使えそうなので、Zaraの商品をパクってみる。Zaraの方が見てたら、画像使用しているだけなので多めに見てほしい。
いくつか追加してみた。

完了!好きにサイトを弄ってみよう!

BTCPayを決済で有効化しているので、きちんと決済画面でBitcoinが表示されている。

ちょといじってそれっぽくしみた。

以下URLから見て動かしてみてよう。メモリが1GBなので少し重いかもしれないが、Cloudflareでキャッシュさせているのでなんとか動くはず。
https://shop.keisukekuribara.com/
費用
では、Shopifyと比較して大まかにかかる費用を計算しておく。
WooCommerce
- サーバー:大体10ドルから20ドルで結構良い環境にできる
- ドメイン
- テーマ:40ドル程度から
- 毎月15ドル程度と初期費用で70ドル程度
Shopify
- ドメイン
- 月額(ドル):29、79、299
- テーマ:無料から180ドル程度
- 毎月プラン毎の費用とテーマ代+ドメイン代
当然、手間をかけるのでWoocommerceの方が安い。大規模な場合、管理が大変になるのでShopifyを選択すると良いだろう。
デジタルコンテンツを販売する場合
デジタルコンテンツを販売する場合、注文時に配送先住所等の記入は必要ないので名前やメールアドレスのみで良い。
Woocommerceの注文で、名前とメールアドレスだけにしたい場合は「functions.php」に以下のコードを追記しよう。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $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['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_city']);
return $fields;
}
テーマがアップデートされるとその都度上記のコードを追記する必要があるので、ChildTheme(子テーマ)を使用すると良い。概ね、海外サイトでテーマを購入すると子テーマが付属しているので、メインテーマと子テーマを両方インストールし、子テーマを有効にしておく。
日本のテーマはコスパ悪いので、海外でテーマを購入してください。英語はどうにかなる!