仮想通貨決済対応カート
仮想通貨決済(ネム[NEM]、リップル[Ripple])/WEBインベンター 仮想通貨決済(ネム[NEM]、リップル[Ripple])/WEBインベンター

仮想通貨による決済システム搭載のショッピングカート

仮想通貨(ネム[NEM]、リップル[Ripple])による決済に対応したショッピングカートについて説明いたします。なお、この決済システムはPCtoMobile、PCtoMobile2、PCtoMobile-PC、PCtoMobile-Unicode、Contents-Cart、Contents-Mallに搭載されています。

   サンプル : PCtoMobile-2      

仮想通貨による決済

仮想通貨は「通貨」として法律でも認められ、実際に徐々に使われつつあります。やがて、仮想通貨が通貨の主流になるときが来ることでしょう。

さて、仮想通貨による決済には下記の2つの方法があります。
 〈1〉仮想通貨で支払い、お店では円で受け取る
 〈2〉仮想通貨で支払い、お店でも仮想通貨で受け取る。

現在は、〈1〉の方法がほとんどでしょう。この場合、仮想通貨の取引所で行っている「仮想通貨決済」を利用して行います。これにより、決済手段を増やし、かつ、円で安定した収益を上げることができます。手数料は1%程度のようです。

さて、仮想通貨も通貨である以上〈2〉が本来の方法であるに違いありません(※)。この方法では、お店側で仮想通貨で受け取りますから、利用する仮想通貨に対応した、お店用のウォレットを用意する必要があります。必要なのはそれだけで、後は仮想通貨のメリットを十分に生かすことができます。仮想通貨で受け取ることのメリットは下記の通りです。

 1.手数料がかからない。
 2.送金が早い(利用する仮想通貨による)。
 3.仮想通貨の価値が上昇トレンドにある。

デメリットもあります。

 1.価値の変動の度合い(ボラティリティ)が大きい
 2.送金者の特定が難しい場合がある。
 2.税金の扱いをはじめ経理の方法について検討する必要がる。

これらのデメリットを考慮に入れても、できるだけ早く仮想通貨決済を導入することの価値は大きいに違いありません。今後、仮想通貨は大きく発展していくことは間違いないからです。

さて、仮想通貨の送金者の特定について考えて見ましょう。
送金者(入金した人)を特定することはお店側にとって基本的に重要なことです。仮想通貨について詳しい人ならば、匿名性を特徴とする仮想通貨は別として、「取引の透明性」があることについて知っていることでしょう。つまり、「いつ、どのアドレスから、どのアドレスに対して、いくら送金されたか」ということが公開されているのです。とはいうものの、そのアドレスが購入者のものであることをいちいち特定するのは大変なことでしょう。銀行振り込みのように簡単に振込みした人の名前が分かる訳ではないのです。

しかし、仮想通貨には円にはない様々な機能があります。たとえば、ネム(NEM)にはメッセージを送信する機能があります。また、リップル(XRP)には宛先タグを送信する機能があります。こうした機能を利用することにより、注文番号などを送信することができます(メッセージに個人情報を含めることは賢明ではありません)。

※ショッピングカートPCtoMobile/Contents-Cartには〈2〉の決済方法(仮想通貨で支払い、お店でも仮想通貨で受け取る方法)が組み込まれています。

仮想通貨決済システムの使い方

PCtoMobile(Ver.19)とPCtoMobile2 Ver.20では、ネム[NEM]、リップル[Ripple]による仮想通貨決済の機能を取り入れました。この決済システムは、お店側でネム[NEM]、リップル[Ripple]で代金を受け取ります。

主な機能をリストアップしてみましょう。

(1)取引所の販売レートを自動取得(固定レートの設定も可能)。
(2)販売レートの下限と上限を設定可能。
(3)送金用アドレスのQRコードの表示(NEM公式MobileWallet用のQRコードに対応)。
(4)仮想通貨決済を使える商品を指定可能。
(5)送金者の特定に、NEMのメッセージ、リップルの宛先タグを利用

まず、お店側で仮想通貨を受け取るためのウォレットを準備する必要があります。

NEM用のウォレット:
 お勧めは公式のウォレットです。 このウォレットが大変使いやすいので、NEM決済から始めてみるのもよいかもしれません。⇒ Nano Wallet

Ripple用のウォレット:
 ハードウェアウォレットでは、Ledger Nano S などがあります。 ⇒ Ledger Nano S

システム設定【53】仮想通貨の設定のところで、受け取りアドレスなど必要な項目を設定すると、注文フォームで、お支払い方法として、「仮想通貨NEM決済」、又は、「仮想通貨リップル決済」が選択できるようになります。
また、注文完了画面では、送金用アドレスと送金額が表示されます。送金用アドレスのQRコードも表示されます。
そして、重要な点として、NEMの場合は、送信用メッセージとして注文番号、Rippleの場合は、宛先タグとして注文番号を記入するようにメッセージが表示されます。特に、NEMの場合は、下記サンプルのように、公式のNEMモバイルウォレット用のQRコードが表示されます。このQRコードの利用により、メッセージも含めすべての送金用データが簡単に取り込めます。お店側では、注文番号と時価の送金額を照合して送金者を特定できます(※)。



さて、システム設定【53】で、下記の2つが指定できるようになっています。

【1】仮想通貨のレートの設定
レートの設定には2つの方法があります。

(1)取引所(コインチェック)の販売レートを自動取得する方法
この販売レートは注文フォームで取得され、1時間有効となります。また、「15.00-25.00」のように上限と下限を設定することもできます。こうすることにより、仮想通貨の販売レートの大きな変動に対応できます。

(2)お店側で固定レートを設定する方法
1XEM(または、1XRP)の値段(円)を指定します。時価のレートではなくお店が設定したレートで計算されます。こうすることにより、商品に対してお店で何XEM(または、何XRP)と値段をつける形になります。

なお、レートを用いた送金額の計算では、切り上げ処理をしていますが、その際に表示する小数以下の桁数を指定できます。(切り上げにするのは小額の場合に0XEM(XRP)になってしまわないようにするためです。)

【2】仮想通貨決済が可能な商品の指定
すべての商品で仮想通貨決済ができるように設定することもできますし、指定した商品だけ仮想通貨決済を
利用できるようにすることもできます。たとえば、試験的にある商品だけで試してみることもできます。お店側で固定レートを設定して仮想通貨で安く購入できるキャンペーンなどもできるかもしれません。

※リップルの宛先タグはトランザクションデータから分かります。トランザクションデータは取引履歴にリンクされていることが多く、その場合、ワンクリックで確認できます。(なお、メッセージに個人情報を含めることは賢明ではありません。それは永久に消せない記録になり、たとえ暗号化したとしても将来解読される可能性があるからです。)
また、送金者がメッセージや宛先タグに注文番号の記入を忘れた場合は、メール等で次の情報を送ってもらうなら送金者を確認できるかもしれません。送金の日時、トランザクションID、送金金額、送金手数料、メッセージの有無、さらに、送金履歴のキャプチャー画像などです。
着金通知プログラム
これはNEM(又は、リップル)決済の利用において、NEMの着金をほぼリアルタイムに通知し、販売管理に反映させるためのものです。これは下記のショッピングカートの最新版に対応しています。

     PCtoMobile/2/PC(Unicode版は除く)
     Contents-Cart/Contents-Mall

仮想通貨(パブリックブロックチェーン)の良い点は、分散台帳が公開されていてAPIを用いて自由にトランザクション(取引データ)を取得できることです。それで、トランザクションを監視することにより着金をリアルタイムに確認できます。

トランザクションの確認の方法は2つあります。
(1)WebSocketの利用。
(2)CRON機能などを使ったポーリングによる監視。
通常リアルタイムというときはWebSocketを利用して、サーバ側からの着金を受け取る方法でしょう。しかし、これにはいくつかの難点があります。まず、この通知の取得に失敗した場合やトランザクションの状態をこちらから知りたい場合などに問題が出てくるということです。加えて、何よりもこの機能を導入するにはNode.jsなどが使えるサーバが必要になり、通常のサーバで動かすプログラム(シェアウエア)では導入が難しいという問題点があります。
一方、CRON機能を使ったポーリングによる監視では、こちらからいつでもトランザクションを確認でき、しかも通常の格安サーバでも導入できます。加えて、CRONの設定を1分ごとに設定すればほぼリアルタイムの確認が可能となります。

それで、CRON機能を使ったポーリングによる監視を用いた、NEM(及び、リップル)の着金通知プログラムを準備いたしました。
搭載された
機能は次の通りです。
(1)NEMの着金をリアルタイムにお店にメールで通知する。
(2)NEMの送金時のタイムスタンプを販売管理データに記録する。
(3)購入者は購入履歴でリアルタイムに着金を確認できる。
(4)購入者に着金のお知らせのメールを送信する。
(5)Contents-Cart/Mallでは、入金処理を自動的に行う(ライセンスやダウンロードアドレスの発行)。

通常のサーバーで利用可能なCRONを使うことに加えて、購入者が購入履歴にアクセスするときにもこのプログラムを動作させるようにしていますので、購入者はリアルタイムに着金(トランザクションのタイムスタンプ)を確認できます。

必要な設定は下記の通りです。
(1)NEMの受け取り用アドレスの設定(システム【53】又は、【46】、【47】仮想通貨の設定)
(2)通知の受け取りメールアドレス(システム【18】送り側アドレス、メールのフッター)
(3)サーバーのCRONに「nemcheck.cgi」へのパス(サーバー内の絶対パス)を設定する。

     CRONの設定例(1分毎に実行する場合):
     */1 〜/home/(アカウント)/public_html/〜/nemcheck.cgi

(4)k_shop.cgi(又は、shop.cgi)のフルパス(http〜)設定(システム【20】携帯用スクリプトのパス)
(5)nemcheck.cgiの15〜30行目で下記の設定ができる。
     着金通知受け取りメールの情報
     購入者へ着金のお知らせ
     処理の設定
     Contents Cart/Mallでライセンス自動発行(システム【18】の入金確認の処理の設定)

さらに、テストの方法など、readme.txtをご覧ください。⇒ 着金通知プログラム

「送金&購入(Send&Buy)」システム
「送金&購入」システムは、NEM(又は、リップル)の送金時にメッセージに購入番号を記入して送金することにより、送金だけで購入を可能にするシステムです。通常は、注文を先に行い、その注文金額を送金することにより購入を確定しますが、このシステムではあらかじめ注文する必要がありません。

具体的には、ログイン状態で、商品詳細画面に「送金&購入」のボタンを表示します。そのボタンをクリックすると、購入番号が発行され、その購入番号を用いた「送金&購入」に関する指示が表示されます。その指示に従ってNEM(又は、リップル)を送金するだけで購入が完了します。

処理の流れは次のようになります。
(1)商品詳細画面の「送金&購入」のボタンをクリックすると、購入番号が発行され、その番号に対応する購入識別データをサーバーに保存する。
(2)購入者がメッセージ(又は、宛先タグ)に購入番号を記入してXEM(又は、XRP)を送金する。
(3)着金確認時、トランザクションのメッセージ(又は、宛先タグ)に記された購入番号に紐づけされた購入データをショッピングカートの通常の注文ログに追加する。
(4)会員に着金のお知らせのメールを自動送信する。
(5)会員は、注文履歴で購入状況を確認できる。
(6)Contents-Cartの場合は入金確認処理を自動で行い、ライセンスやダウンロードに関するメールを自動送信する。

この機能から分かるように、購入番号に対応したデータをサーバー内に保存する必要があります。これは実際の購入データではなく、トランザクションのメッセージ(又は、宛先タグ)の購入番号から購入内容を特定するためだけの仮のデータで、着金を確認した時点で実際の注文データとして注文ログに追加されます。

このシステムにはいくつかの問題点がありますが、工夫次第で解決することができます。
【1】お届け先の決定
購入を決定するにはお届け先情報が必要です。この問題は、会員住所を使うことにより解決できます。それで、このシステムはログイン時にのみ動作します。ログイン時にのみ「送金&購入」ボタンが有効となります。また、送料は会員住所の県名から自動的に計算されます。

【2】仮の購入データの分量
もう1つの問題点は仮の購入データの量に関するものです。仮のデータは、「送信&購入」のボタンをクリックしたときに生成されます(同日の同一データは重複しないようにしています)。生成されるデータ(商品情報とお届け先情報などで、管理から確認できます)は1件当たり約400バイトあります。仮に、1日1万件生成されるとすると、30日で120MBほどになります。このデータは1か月も保存しておけば十分ですから、ディスク容量としては全く問題ないことになります。

【3】在庫管理
最大の問題点は在庫管理ができないという点でしょう。あらかじめ注文して、在庫を確保することをしないので、在庫切れになってしまう場合があるということです。この問題に対処するために、在庫が少ない商品では「送信&購入」ボタンが無効となるようにしました。この問題点から分かるように、このシステムは在庫の十分な商品やデジタルコンテンツに適しています。

いくつかの問題点があるにしても、この「送金&購入」システムは、購入における手続きを最大限簡単にしたもので、これ以上の簡単化は不可能のように思われます(amazonのワンクリック注文はお店にクレジットカード情報を預けることにより可能になっていますが、仮想通貨の場合、秘密鍵をお店に預けることはできません)。

購入の流れは、下記のようになります。
    ログイン > 商品の選択 > 「送金&購入」ボタンのクリック > NEM(又は、リップル)の送金

これで、購入が確定し、1分ほどで購入完了のメールが届きます(注文履歴でも確認できます)。

サンプル:⇒ PCtoMobile2

既存のホームページにタグを貼り付けることでも簡単に導入することができます。下記はその実例です。
[名称] PCtoMobile-2
[記号] PCtoMbl-2
[特別会員] ¥54,000(税込)
[価格] ¥78,000(税込)
リップルによる送金&購入
NEMによる送金&購入
ログイン 会員登録
この「送金&購入」システムは、下記のカートに対応しています。
    PCtoMobile/2/PC
    Contents-Cart

このシステムが動作するには、 「NEM(又は、リップル)決済の着金通知プログラム」が動作していることが必要です。また、システム設定【53】で決済の使用が「XEM又はXRP」になっていることが必要です。使用する設定になっていないときは、「送金&購入」ボタンが無効になるか、「現在、メンテナンス中です。」というメッセージが表示されます。

必要な設定は下記の通りです。
(1)システム設定【14】の詳細説明のカスタマイズに変数$NemBuyBtnを記入する。
設定例:
<div class='detailBoxgray'>
$NemBuyBtn
</div>

(2)必要に応じて設定ファイルsetting.plを調整する。
設定ファイルsetting.plでは次の設定が可能です。
【設定A】在庫マージンと購入番号の発行の上限の設定
【設定B】PCtoMoible2以外で利用する場合の送料用地域テーブル(県名付き)の設定

(3)Contents-cartでは、システム設定【18】の入金確認の処理の設定の見直し。

また、テストの方法など、詳細につきましては、readme.txtをご覧ください。⇒ 「送金&購入」システム

ウォレット、匿名性、etc.
仮想通貨決済を導入するに当たって最初に行うことはウォレットの準備です。使いやしく安全なウォレットは少ないのですが、その中でもNEM公式のNano Walletが使い安くしかも安全です。⇒ Nano Wallet
導入する際に、wltファイルと秘密鍵を保存しておくならいつでも復元できますから、それを忘れずに行いましょう。Nano Walletの導入については、紹介サイトがたくさんありますから、そちらを参考にしてください。

リップルに関しましては、ハードウェアウォレットとして、Ledger Nano Sがあります。安全でよいのですが、毎日使うには面倒ですから、これは長期保存用として使うためのものと考えた方がよいかもしれません。これを使う場合も、パスフレーズを忘れずに記録しておくならいつでも復元できるはずです。こちらの使い方に関しましても、詳しいサイトで確認するとよいでしょう。
それで、使いやすさを考えるなら、トーストウォレット(Toast Wallet)などを利用するとよいかもしれません。これは、PCとスマートフォンの両方に対応していますので、お店の受け取り用に使うなら便利かもしれません。そして、定期的にハードウエアウォレットに送金しておくなら安全ですね。

また、NEMもリップルも非匿名性通貨で、きわめて透明性の高い通貨です。お店も購入者もこの特性をよく理解しておく必要があります。それで、お店では、時々受取アドレスを変更するのは良いことです。
NEMは無料でいくつも受取アドレスを発行できます。リップルもToast Walletで受取アドレスを追加発行できますが、リップルではアドレスごとに20XRPが必要となります。
NEM、リップルいずれの場合も、受取アドレスを追加するごとにバックアップが必要になります。


Copyright (C) 2018  WEBインベンター All rights reserved.