日本円をNEM換算して送信するQRコードを生成するPHP。
2019年06月17日 12時00分 月齢:14.1[十五夜] 潮汐:大潮
(最終更新日:2019年09月16日)
5年前に投稿 | 暗号資産(仮想通貨) | コメントはありません
5分ぐらいで読めます。
この記事は情報が古い場合があります。
先日、Google APIでNEM送信用のQRコードを生成するしくみを作ってみたのですが、実際の場面では「日本円で設定されている商品をNEMで支払いたい」ということのほうが多い気がします。
そこで、円で価格を入力したら、Zaifの過去24時間加重平均のNEM価格を使って何XEMかを計算し、QRコードを生成するようにしてみました。
コードはこんな感じ。NEM価格の取得と円換算を追加しました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>NEM請求用QRコード(JPY to NEM)</title>
</head>
<body>
<div>
<form action = "jtn.php" method = "post">
<table>
<tr><td>Price : </td><td><input type = "number" name = "price" step="any" autofocus> JPY</td></tr>
<tr><td>Message : </td><td><input type = "text" name = "message"></td></tr>
</table>
<p><input type = "submit" value ="送信"></p>
</form>
</div>
<?php
//
フォームデータ受け取り
if (empty($_POST['price']) || ($_POST['price']) == 0){ //
空っぽや000などのときは入力をうながす
echo '<div>';
echo '<p>Price欄に金額(JPY)を入力してネ。</p>';
echo '</div>';
}
else{
//
NEM価格の取得
$url = 'https://api.zaif.jp/api/1/ticker/xem_jpy';
$json = mb_convert_encoding(file_get_contents($url), 'UTF-8','ASCII,JIS,UTF8,EUC-JP,SJIS-WIN,SJIS');
$json_arr = json_decode($json,true);
if ($json_arr === NULL) {
echo '<p>取得できません。</p>';
}
else{
$vwap = $json_arr['vwap'];
echo '<p>1 XEM = ' . $vwap .' JPY</p>';
}
//
JPYをNEMに換算
if (($_POST['price'] < 0)){
$price = $_POST['price'] * -1;//
マイナスの数値もプラスにしてしまう
}
else{
$price = $_POST['price'] * 1;//
01などの数字から前0を落とす
}
$amount = round($price / $vwap,6);//
小数点のまるめ
$address = 'NAERYULZN4QCBTFCRADNSNKACBRNS2E5CLSOXXAZ';//
送信先NEMアドレス(自分のアドレスに書き換えてください)
$xamount = $amount * 1000000;//
μXEMに換算
$message = $_POST['message'];
$rawurl = '{"v":2,"type":2,"data":{"addr":"'.$address.'","amount":'.$xamount.',"msg":"'.$message.'","name":"NEMpay"}}';
echo '<div>';
echo '<p>'.$price.' JPY = '.$amount.' XEM</p>';
echo '<p>「'.$address.'」あてに「'.$amount.' XEM」を送信するQRコードです。</p>';
echo '<p><img src="https://chart.apis.google.com/chart?chs=300x300&cht=qr&chld=H&chl=', rawurlencode($rawurl), '" alt="'.$amount.'XEM to '.$address.'" title="'.$amount.'XEM to '.$address.'"></p>';//
エラー訂正レベル・高に設定(chld=H)
echo '</div>';
}
?>
</body>
</html>
コードを見るだけではアレなので、デモ画面を見てください。よければ実際にいくらか送ってみてください(笑)。
送信ボタンを押したときに価格を取得するので、Ajaxは使っていません。POSレジシステムから価格を取り込み、伝票番号をメッセージ欄に取り込むようにしたら、より使えるかなと思います。たぶんこのままでもフリマなどで使えると思うケド。
コミケでQR電子マネー決済やモナコイン決済が増えているらしいですが、ぜひNEM決済も浸透してほしいですネ。
NEM投げ銭
NEM WalletからQRコードを読んでね。1口100円でございます。
古い記事・新しい記事
- 古い記事 [2019年06月15日]
- ← Google APIでNEM送信用のQRコードを生成するPHP。
- 新しい記事 [2019年06月27日]
- → 久々のハーベストに心が踊る。
他にも「暗号資産(仮想通貨)」カテゴリの記事はいかがですか。
- vanitygenでNEMのアドレスを作って遊んでみた。
- 「仮想通貨(暗号通貨)」カテゴリーを作りましたー。
- ZaifのAPIからAjaxでNEMの価格を定期的に取得するPHP。
- NEMをZaifに置いておくのが心配になったので、androidアプリ「NEM Wallet」に移動した。
- NEMのアップデート Symbolのプレローンチオプトインは2021年1月9日まで
- 仮想通貨カフェ&バー「COINS」が閉店していた。
- 匿名通貨Zcashの上がり方がえげつない。
- NEMのハーベスティングを始めてみた。
- NEMのカタパルト(Symbol)とは…NEMberたちはこんなものを待ち望んでいたのか。
- Google APIでNEM送信用のQRコードを生成するPHP。