日本円をNEM換算して送信するQRコードを生成するPHP。

2019年06月17日 12時00分 正午の月齢:14.1  月名:十五夜  潮汐:大潮 月齢: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円でございます。

38.78374XEM to NAMEKOKIDITOSYABXYBJ5P2J6HIN7CFAMKFN2R7B

古い記事・新しい記事

古い記事 [2019年06月15日]
新しい記事 [2019年06月27日]

コメントはありません

ごめんなさい、コメントフォームは閉鎖しています。

Translate »