<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Payment request</title> <script type="text/javascript" charset="utf-8" src="jquery-1.9.1.min.js"></script> <script type="text/javascript" src="qrcode.js"></script> <script type="text/javascript" src="jquery-ui.js"></script> <link rel="stylesheet" type="text/css" href="jquery-ui.css"> <script type="text/javascript"> function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1); var sURLVariables = sPageURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split('='); if (sParameterName[0] == sParam) { return sParameterName[1]; } } } var id = getUrlParameter('id'); if (id) { var uri_path = location.pathname; var jqxhr = $.getJSON(uri_path.replace("index.html", "req/"+ id[0] + "/"+ id[1] + "/"+ id + "/"+ id + ".json"), function() { console.log("getJSON:success"); }) .done( function(data) { new QRCode(document.getElementById("qrcode"), data.URI); $("<p />").text(data.memo).appendTo($("p#reason")); $("<p />").text(data.amount/100000000 + "BTC").appendTo($("p#amount")); $("a").attr("href", data.URI); $("<p />").text("Powered by Electrum").appendTo($("p#powered")); var websocket_server = data.websocket_server; var websocket_port = data.websocket_port; $(function () { var current; var max = 100; var initial = data.time; var duration = data.exp; if(duration){ var current = 100 * (Math.floor(Date.now()/1000) - initial)/duration; $("#progressbar").progressbar({ value: current, max: max }); function update() { current = 100 * (Math.floor(Date.now()/1000) - initial)/duration; $("#progressbar").progressbar({ value: current }); if (current >= max) { $("#container").html("This invoice has expired"); } }; var interval = setInterval(update, 1000); } }); var wss_address = "wss://" + websocket_server + ":" + websocket_port +"/"; console.log("Opening WSS: " + wss_address) var ws = new WebSocket(wss_address); ws.onopen = function() { ws.send('id:' + id); }; ws.onmessage = function (evt) { var received_msg = evt.data; if(received_msg == 'paid'){ $("#container").html("This invoice has been paid."); } else alert("Message is received:"+ received_msg); }; }) .fail(function() { console.log("error fail"); $("<p />").text("error").appendTo($("p#error")); }); }; // See http://stackoverflow.com/questions/29186154/chrome-clicking-mailto-links-closes-websocket-connection $(document).on('click', 'a[href^="bitcoin:"]', function (e) { e.preventDefault(); var btcWindow = window.open($(e.currentTarget).attr('href')); btcWindow.close(); return false; }); </script> </head> <body> <div id="container" style="width:20em; text-align:center; margin:auto; font-family:arial, serif;"> <p id="error"></p> <p id="reason"></p> <p id="amount"></p> <div style="background-color:#7777aa; border-radius: 5px; padding:10px;"> <a style="color:#ffffff; text-decoration:none;" id="paylink" target="_blank">Pay with Bitcoin</a> </div> <br/> <div id="qrcode" align="center"></div> <p id="powered" style="font-size:80%;"></p> <div id="progressbar"></div> </div> </body> </html>