ビットコイン決済の手数料を0%にするやり方[自作決済システム]
公開日:
:
ビットコイン自動売買開発, 仮想通貨の裏技 blockchain.info, ビットコイン決済, ソースコードあり
目次/もくじ
オンラインショッピングなんかをやっているとビットコインで決済できた方が便利なことがあります。国内ではコインチェックやbitFlyerが店舗向けビットコイン決済導入サービスをやっていますが、決済手数料が約1%かかります。
総売上が100万だとすれば恒常的に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単位で返ってくるので、
最後に100,000,000で割る必要があります。
これで利用者ごとに自動で受け取り用ビットコインアドレスが生成され、自動的に自分のアカウントにビットコインが送金されます。履歴も確認できますし、コールバックのメールで確認もできます。
ビットコイン決済の流れ
流れとしては、
お客さんがフォーム入力(メールアドレスとか)する
↓
そのフォームを元にビットコインアドレスが生成される
↓
お客さんがビットコインを送金する
↓
blockchain.infoにビットコインが入る
↓
ビットコインの送金(認証中でもOK)をフラグにして、blockchain.infoからパラメータ付のコールバックPHPファイルが呼び出される
↓
コールバックPHPファイルから管理者宛、お客さん宛にメールが届く
という形です。
QRコードの生成機能はないので、てきとうにjqueryを使えばいいと思います。全角のQRを生成できるjqueryはなかなかないですが、今回はすべて半角なので簡単に見つかると思います。
あとはコールされたときに、自動メール送信するようにすれば、
管理人もチェックしやすいですし、ダウンロードコンテンツの自動配信も可能です。
現在すべて半角英数で実装しているので、全角でGETパラメータを渡すとどうなるかは不明ですが、
とりあえずurlエンコードした方が無難だとは思います。
それでもダメな場合は、ローマ字などで名前を入力してもらうしかないかもしれません。
(2つのページで暗号化するという荒業もありますが・・・)
たったこれだけでQRコードを使った独自の決済システムが実装できます。売上規模が大きい場合は手数料も大きくなるので、ぜひ実装してみてください。
関連記事
-
仮想通貨(ビットコイン)の自動売買をするやり方と選択肢
このページに来たということは「仮想通貨トレードを手動でしてるけど、システムトレードにしたらいいんじゃ