店頭でのビットコイン決済方法について簡単に説明します。
決済方法と言ってもやり方は沢山あるので、今回はBTCPayServer を使った方法を案内します。
使用した端末はiOSです。
STEP1 スマホカメラでQRを読み込み
店頭にあるQRコードをスマホのカメラで読み込みしてください。
BTCPayServerにアクセスします。
QRの読み込み方法はいくつかありますが大体はカメラアプリを起動してからQRを表示させるとサイトにアクセス出来ます。
STEP2 金額を入力
QRを読み込むと入力画面が表示されます。
購入金額を店頭で確認したら日本円で記入してください。
下の【Charge/チャージ(支払う)】を押して次に進みます。
STEP3 インボイス/請求書をウォレットで支払う方法
この画面では請求書が発行されます。
8568 satsと表示されているのが請求金額です。
lnbc…から始まるアドレスの事を【インボイス/請求書】と言います。
本来はここでQRを読めばいいんですが、スマホに表示されているので出来ません。
いくつかの方法でウォレット支払いをしますが、AndroidかiOSかによってやり方が少し異なります。
いくつかの支払い方法
- 【iOS】lnbc…の文字の後にコピーボタンがあるのでそこを押してインボイスをコピーする
- 【Android】ウォレットで支払うを押す。
- 画面のスクリーンショットを撮影して保存しておく。
上の画像はAndroidで【ウォレットで支払う】を選択した場合の画面です。
スマホ内にビットコインウォレットが複数あると、どれを起動させるか選べる様になっています。
iOSはこの選択が出来ないので複数ウォレットがあるときにはコピーして貼り付けしてください。
satsとは0.00000001BTCの事です。
表記を読みやすくする為にビットコイン考案者のsatoshi nakamotoのsatoshiから取られています。
【0.00000001BTC=1satoshi=1sats】
STEP4 金額をお互いに確認して支払い
ここからは支払う側の説明をします。
注意点としては、ビットコインのウォレットは沢山あります。
全て覚えて対応する事は無理なので代表的な物で説明します。
今回は日本で主に使われているWallet of Satoshiで説明します。
アプリは以下から
https://www.walletofsatoshi.com/
メインの画面には受信と送信があります。
まずは送信ボタンを押します。
その後の画面でカメラが起動し、下の方には3つアイコンが表示してあります。
左から
①ライトニングアドレスを記入
②コピーしている物を貼り付け
③画像からQRを読み込み
です。
今回は②を選択して、先ほどコピーしたインボイスを貼り付けしてみましょう。
※画像をスクショした場合は③を選んで一覧からQR画像を選択してください。
ペースト許可の確認が出るので許可してください。
許可すると支払い画面が表示されます。
この画面を支払い側と受け取り側で確認してOKなら送信を押します。
※表示では845円になっていますが参照するビットコイン価格によって多少前後します。
送信が成功するとこの様な画面が表示されます。
WoSでは緑の画面、BTCPayでは支払い結果等が表示されます。
領収書が必要な場合は【領収書へ】ボタンを押して確認してください。
STEP5 支払い完了の確認
支払い側で送信失敗やフリーズした場合の確認方法です。
本来は支払いを管理しているシステム(LNノードまたはBTCPay)で確認できますが、その場で確認するのはセキュリティ的にもあまりオススメできません。
その場合は外部サービスのZapierを使ってDiscordへ決済完了の通知を送付するなどの設定をしましょう。
【Zapier BTCPay Server統合でさらに活用】
https://zapier.com/apps/btcpay-server/integrations
まとめ(ちょっと難しい話し
いくつかのステップを通して支払い方法と受け取り方法を説明しました。
これ以外にも色々なやり方がありますが、受け取り側の負担やスキルレベルを考えるとこの方法が現在は無難かと思います。
なぜこの方法にしたのかは少し難しい話しですが以下に書いておきます。
興味のある方は見ていってください。
前提としては【コンビニの店員がノンカストディアルでビットコイン決済を受付出来るレベル】を想定してます。
インボイスを支払い側がコピペしなければいけない理由
通常はお店側が金額をレジに入力して合計金額(インボイス)を提示します。
支払い側は自分のビットコインウォレットを立ち上げてからそれを読み取れば良いだけですが、今回の方法だとそれをしていません。
実店舗の1店舗だけでやるならローカル環境でノードにアクセスすれば問題ないですが、複数店舗を別の場所で同時にフォローするには【端末】と【通信回線】が店舗分必要です。
予算をかけて永続してやるなら良いですが、実験的にもスケールさせるにもお客さんの【端末】と【通信回線】を使って支払いフローを構築してています。
ご協力に感謝!
ライトニングアドレスを使わない理由
ライトニングアドレスは一見使いやすい様に見えますが受け取り側ではアドレスを解決するシステムを用意する必要があり、ノンカストディアルでアドレスを用意するのもハードルは高いです。
また、読み取りが出来ないウォレットがあったり、読み取れたとしてもこちら側で指定した通貨での入力を支払い側に引継ぎ出来なかったりします。(JPYで入力して欲しいのにsatsになる)
その場合にはsatsでの金額を店員が提示する必要があるので、今現在は使ってはいません。
(実際に販売中にjpy/satsを確認する事が多々ありましたし、面倒くさいのでsats固定にしてた時期もありました)
BTCPayServerを使う理由
以上の事から、複数店舗で決済をする場合にQRを張り付けるだけで複雑な操作をしなくてもビットコインを受付する事が出来ます。
その為にはPOSが必要になるのでBTCPayServerを使っています。
BTCPayServerで自前のPOSを提示すれば【レート参照】と【参照通貨】を固定出来ます。
ペイメントレイヤーではLNでsatsを、商品の価値基準は日本円を利用して支払いを構築しています。
SoVはビットコイン、MoEは未だ日本円を使うこの決済は、未来を妄想する上でとても面白いスパイスになっているのでは無いでしょうか。
参考wiki お金
https://en.wikipedia.org/wiki/Money#Functions