ビットコイン決済の手数料を0%にするやり方[自作決済システム]

オンラインショッピングなんかをやっているとビットコインで決済できた方が便利なことがあります。国内ではコインチェックや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パラメータで渡せば、
住所、氏名、年齢、性別、メールアドレスなどの個人情報の取得もできます。

 

コーディング

さて、問題の実装方法ですが、

<?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のエンドポイントが変わっています。

リダイレクトのページは同じように実装できます。

$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で割る必要があります。

forex-mt4-mt5-ea
forex-mt4-mt5-ea
(アドレスがちゃんと自動生成されています)

これで利用者ごとに自動で受け取り用ビットコインアドレスが生成され、自動的に自分のアカウントにビットコインが送金されます。履歴も確認できますし、コールバックのメールで確認もできます。

 

ビットコイン決済の流れ

流れとしては、
お客さんがフォーム入力(メールアドレスとか)する

そのフォームを元にビットコインアドレスが生成される

お客さんがビットコインを送金する

blockchain.infoにビットコインが入る

ビットコインの送金(認証中でもOK)をフラグにして、blockchain.infoからパラメータ付のコールバックPHPファイルが呼び出される

コールバックPHPファイルから管理者宛、お客さん宛にメールが届く

という形です。

QRコードの生成機能はないので、てきとうにjqueryを使えばいいと思います。全角のQRを生成できるjqueryはなかなかないですが、今回はすべて半角なので簡単に見つかると思います。

あとはコールされたときに、自動メール送信するようにすれば、
管理人もチェックしやすいですし、ダウンロードコンテンツの自動配信も可能です。

現在すべて半角英数で実装しているので、全角でGETパラメータを渡すとどうなるかは不明ですが、
とりあえずurlエンコードした方が無難だとは思います。

それでもダメな場合は、ローマ字などで名前を入力してもらうしかないかもしれません。
(2つのページで暗号化するという荒業もありますが・・・)

 

たったこれだけでQRコードを使った独自の決済システムが実装できます。売上規模が大きい場合は手数料も大きくなるので、ぜひ実装してみてください。

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

保護中: bitFlyerに自動ログインするやり方

BitFlyerは国内最大手の仮想通貨取引所とうたっていますが、取引高を第三者のサイトなどで調べると

記事を読む

保護中: POLONIEXの残高参照Androidアプリを作るやり方

POLONIEXというアルトコインの取扱数ではコインチェックの比ではない取引所があるのですが、 P

記事を読む

保護中: CoinCheckに自動ログインするやり方

以前、仮想通貨暗号通貨の自動売買に関して書きましたが、 今回は実際にUWSCを使ってログインをして

記事を読む

仮想通貨(ビットコイン)の自動売買をするやり方と選択肢

このページに来たということは「仮想通貨トレードを手動でしてるけど、システムトレードにしたらいいんじゃ

記事を読む

 

上に戻る