Prototype website for VPN service, Bitcoin payments via the Blockchain.info API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

84 lines
4.0 KiB

{% extends "layout.html" %}
{% block title %}Confirming purchase - packetcrypt{% endblock %}
{% block content %}
<div id="form-container" class="uk-width-1-2 uk-panel uk-panel-box uk-container-center">
<h2>Invoice Created</h2>
Please send {{ invoice.total_btc - invoice.value_paid}} BTC to: <a href="bitcoin:{{invoice.address}}?amount={{invoice.total_btc}}">{{ invoice.address }}</a>
<br/><br/>
<img src="https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl=bitcoin:{{invoice.address}}?amount={{invoice.total_btc}}&callback=?" id="btc_qr" />
<button class="uk-button uk-button-primary uk-button-expand" id="confirm">Confirm Payment <i class="uk-icon-spinner"></i></button>
<form action="{{url_for('confirm_purchase', invoice_id=invoice.id)}}" method="POST" name="delete_ticket" style="width:100%;">
<button type="submit" class="uk-button uk-button-expand" id="cancel">Cancel Payment</button>
</form>
</div>
<div id="modal" class="uk-modal">
<div class="uk-modal-dialog uk-modal-dialog-slide">
<a class="uk-modal-close uk-close"></a>
<h1>Thank you!</h1>
<p>Your payment of <label id="valuepaid"></label> <i class="uk-icon-btc"></i> has been confirmed.</p>
<p id="paid">Your VPN service is being configured and should be available from your dashboard in the next 5-10 minutes.</p>
<p id="notpaid">
However, this does not cover the total cost for your PacketCrypt service.
Please send <label id="remaining"></label> <i class="uk-icon-btc"></i> to: <a id="btcaddy" >{{invoice.address}}</a>
</p>
<p>Transaction: <a id="hashlink"></a></p>
<a class="uk-button uk-button-success uk-button-expand" href="{{url_for('dashboard')}}">Return to Dashboard</a>
</div>
</div>
{% endblock %}
{% block postscript %}
<script>
var amountPaidOnLoad = {{invoice.value_paid}};
$(document).ready(function(){
var confirmButton = $('#confirm');
var cancelButton = $('#cancel');
confirmButton.click(checkPayment);
checkPayment();
});
var checkPayment = function (arg){
$('#confirm > i').addClass('uk-icon-spin');
$.post('/invoice_status', {
invoice_id: {{invoice.id}}
}).done(function(d){
var paidInFull = (d['value_paid'] >= d['total_btc']);
var transactionHash = d['input_transaction_hash'];
var confirmations = d['confirmations'];
window.setTimeout(stopSpin, 3500);
if(confirmations == null || amountPaidOnLoad == d['value_paid']){
//$('#flash-wrapper').children(":first").append("<div class='uk-alert uk-alert-warning' data-uk-alert><a class='uk-alert-close uk-close'></a>Unable to confirm payment. Wait a few seconds and try again.</div>");
window.setTimeout(checkPayment, 10000);
} else {
// Setup the modal before display
var priceLeft = (d['total_btc'] - d['value_paid']);
var btcLink = "bitcoin:{{invoice.address}}?amount="+priceLeft;
var hashLink = "https://blockchain.info/tx/"+transactionHash;
$('#valuepaid').html(d['value_paid']);
$('#remaining').html(d['total_btc'] - d['value_paid']);
(paidInFull) ? $('#notpaid').css('display', 'none') : $('#paid').css('display', 'none');
$('#btcaddy').attr('href', btcLink);
$('#hashlink').attr('href', hashLink).html(transactionHash);
// Display teh modal
var modal = new $.UIkit.modal.Modal('#modal');
modal.show();
}
}).fail(function(){
$('#flash-wrapper').children(":first").append("<div class='uk-alert uk-alert-danger' data-uk-alert><a href='' class='uk-alert-close uk-close'></a>An error occured while trying to confirm your payment.</div>");
});
};
var stopSpin = function (arg){
$('#confirm > i').removeClass('uk-icon-spin');
};
</script>
{% endblock %}