独自のビットコイン決済システムを作って手数料を0%にするやり方
公開日: : ビットコイン自動売買開発, 仮想通貨の裏技 blockchain.info, ビットコイン決済, ソースコードあり
Originally posted 2019-03-04 18:47:34.
オンラインショッピングなんかをやっているとビットコインで決済できた方が便利なことがあります。
paypalがその世界では有名ですが、disputeやアカバンされたときに面倒だったりします。
国内ではコインチェックやbitFlyerが店舗向けビットコイン決済導入サービスをやっていますが、決済手数料が1%かかります。
売上が100万だとすれば1万取られる計算です。良い商売ですね。
本来ブロックチェーンを使ったビットコイン決済は送金手数料以外にお金がかかるものではないので、独自開発すればその1%を節約することが可能です。
blockchain.infoのAPIを使う
blockchain.infoのAPIを使えば、自動支払いシステムを無料で実装できます。blockchain.infoはビットコインの大元のサイトなので潰れるとかいう心配は無用です。
ドキュメントについては下記をご覧ください。
https://blockchain.info/api/api_receive
■大まかなやり方
まずblockchain.infoのアカウントを作成します。
↓
APIキーとxpubを取得します。
APIキーはアカウントを紐づけるために必要で、
xpubは複数のビットコインアドレスを生成するために必要です。
これらの取得には申請から数日かかるので、
早めに申請だけしておいても損はありません。
(なんてったってタダですから)
↓
実装します
実装について
実装の中身は、
・支払ページ兼APIをたたくページ
・支払があった場合にリダイレクトされて呼び出すページ
この二つだけで実装できます。
この手のAPIにしてはかなり簡単かつ便利です。
しかも支払ページからAPIをたたく際に適当にGETデータを入れると、
リダイレクトページでそのパラメータを受け取ることができます。
つまり、お客さんの詳細情報が欲しければ、
それをhtmlのformで取得し、APIにGETパラメータで渡せば、
住所、氏名、年齢、性別、メールアドレスなどの個人情報の取得もできます。
コーディング
さて、問題の実装方法ですが、
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $secret = "ハッキング防止のパスワード"; $key = "APIキー"; $xpub = "xpub"; $invoice = time();//なくてもいい $invoice_amount = $_POST['invoice_amount']; $email = $_POST["email"];//なくてもいい $callback = "自分のサイトのドメイン/callback.php?invoice_id=".$invoice."&invoice_amount=".$invoice_amount."&secret=".$secret."&email=".$email; $gotdata = file_get_contents("https://api.blockchain.info/v2/receive?xpub=".$xpub."&callback=" .urlencode($callback)."&key=".$key,true); $result = json_decode($gotdata); $btcaddress = $result->address; ?> |
これでAPIの呼び出し、及び一時的なビットコインアドレスの取得ができます。
注:Youtubeにblockchain.infoで自動支払を実装する動画がありますが、
あれは2015年のときのものなので、現在は使えません。apiアドレスが変わっています。
リダイレクトのページは同じように実装できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $secret = "ハッキング防止パスワード"; $invoice_id = $_GET['invoice_id']; //invoice_id is passed back to the callback URL $invoice_amount = $_GET['invoice_amount']; $transaction_hash = $_GET['transaction_hash']; $value_in_satoshi = $_GET['value']; $email = $_GET['email']; $value_in_btc = $value_in_satoshi / 100000000; if($_GET['secret'] != $secret) { echo "Stop trying to hack, hacker!"; return; } |
受け取ったビットコインはBTC単位でもなければmBTCでもなく、なぜかsatoshi単位で返ってくるので、
最後に100000000で割る必要があります。
これで利用者ごとに自動で受け取り用ビットコインアドレスが生成され、自動的に自分のアカウントにビットコインが送金されます。履歴も確認できますし、コールバックのメールで確認もできます。
ビットコイン決済の流れ
流れとしては、
お客さんがフォーム入力(メールアドレスとか)する
↓
そのフォームを元にビットコインアドレスが生成される
↓
お客さんがビットコインを送金する
↓
blockchain.infoにビットコインが入る
↓
ビットコインの送金(認証中でもOK)をフラグにして、blockchain.infoからパラメータ付のコールバックPHPファイルが呼び出される
↓
コールバックPHPファイルから管理者宛、お客さん宛にメールが届く
という形です。
QRコードの生成機能はないので、てきとうにjqueryを使えばいいと思います。全角のQRを生成できるjqueryはなかなかないですが、今回はすべて半角なので簡単に見つかると思います。
あとはコールされたときに、自動メール送信するようにすれば、
管理人もチェックしやすいですし、ダウンロードコンテンツの自動配信も可能です。
現在すべて半角英数で実装しているので、全角でGETパラメータを渡すとどうなるかは不明ですが、
とりあえずurlエンコードした方が無難だとは思います。
それでもダメな場合は、ローマ字などで名前を入力してもらうしかないかもしれません。
(2つのページで暗号化するという荒業もありますが・・・)
まとめ
たったこれだけでQRコードを使った独自の決済システムが実装できます。売上規模が大きい場合は手数料も大きくなるので、ぜひ実装してみてください。
ちなみに、ビットコイン決済の場合、基本的に定期支払というものはできません。これは世界共通でビットコインの性質に由来しています。
今後ビットコインの自動定期支払サービスが出てくると思いますが、間に業者を挟む形になるので、結局paypalと変わらない不便さが出てくると思います。
関連記事
-
仮想通貨取引所のサーバーの場所(自動売買の最適なロケーションは?)
FXの世界ではそれぞれのFX業者のサーバーがどこにあるかを調べて、 それに対して最も近いデータセン
-
MinerGateを使わずにMoneroをマイニングする方法
都市部の喫茶店に行けば仮想通貨の話をしている人を避けることが不可能なこのご時世ですが、 最近はマイ
-
取引所を介さずにアルトコインを交換するやり方
取引所内でアルトコインのやり取りをすれば別に問題ないと思うのですが、中には大人の事情で取引所を使いた
-
POLONIEXの残高参照Androidアプリを作るやり方
POLONIEXというアルトコインの取扱数ではコインチェックの比ではない取引所があるのですが、 P
-
秘密鍵(プライベートキー)でビットコインを取り出すやり方(PC)
以前の記事で、ビットコインを大量に生成する方法についてご紹介しました。 しかし、取り出すことが