Автор: obius (соседний форум)
/application/donate.php
<?php
$secretKey = 'Секретный ключ проекта';
$publicKey = 'Публичный ключ проекта';
$tpl->LoadView( "donate" );
if ( isset( $_POST['act'] ) && $_POST['act'] == 'confirm' )
{
function getFormSignature( $account, $currency, $desc, $sum, $secretKey )
{
return hash( 'sha256', $account . '{up}' . $currency . '{up}' . $desc . '{up}' . $sum . '{up}' . $secretKey );
}
$account = isset( $_POST['account'] ) ? $_POST['account'] : '';
$currency = isset( $_POST['currency'] ) ? $_POST['currency'] : '';
$desc = isset( $_POST['desc'] ) ? $_POST['desc'] : '';
$sum = isset( $_POST['sum'] ) ? $_POST['sum'] : '';
$tpl->Set( 'publicKey', $publicKey );
$tpl->Set( 'account', $account );
$tpl->Set( 'currency', $currency );
$tpl->Set( 'desc', $desc );
$tpl->Set( 'sum', $sum );
$tpl->Set( 'signature', getFormSignature( $account, $currency, $desc, $sum, $secretKey ) );
$tpl->Block( 'prepare', false );
$tpl->Block( 'confirm' );
}
else
{
$tpl->Block( 'prepare' );
$tpl->Block( 'confirm', false );
}
$tpl->Build( "content" );
?>
/templates/default/donate.tpl
[prepare]
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(function ()
{
function calculateBonuses()
{
var coinPrice = parseFloat($('#unitpayForm #coinPrice').val());
var coins = parseInt($('#unitpayForm #coins').val());
if (isNaN(coins) || isNaN(coinPrice) || coins <= 0) {
$('#unitpayForm #sum').val('');
return;
}
var price = coins * coinPrice;
if (price > 1) {
price = 1;
}
$('#unitpayForm #sum').val(price);
}
$('#unitpayForm input#coins').keyup(function () {
calculateBonuses();
});
calculateBonuses();
$('#unitpayForm').submit(function(){
var sum = parseFloat($('#unitpayForm #sum').val());
if (isNaN(sum) || sum <= 0 || sum > 1) {
alert('Неверная сумма платежа');
return false;
}
});
});
</script>
<form id="unitpayForm" action="/donate" method="post">
<input type="hidden" name="act" value="confirm">
<label for="account">Ник персонажа:</label> <input type="text" value="" name="account" required="required" id="account"><br>
<label for="coins">Количество монет:</label>
<input type="text" id="coins" name="coins" value="1" required="required"><br>
<input type="hidden" id="sum" name="sum" value="">
<input type="hidden" name="currency" value="RUB">
<input type="hidden" id="coinPrice" name="coinPrice" value="1">
<input type="hidden" name="desc" value="Покупка внутриигровой валюты">
<input type="submit" class="btn" value="Оплатить">
</form>
[/prepare]
[confirm]
<form id="unitpayForm" action="https://unitpay.money/pay/{publicKey}/card" method="post">
<label for="account">Ник персонажа: {account}</label><br>
<label>Пожертвование: {sum} {currency}</label>
<input type="hidden" name="account" value="{account}"><br>
<input type="hidden" name="currency" value="{currency}">
<input type="hidden" name="sum" value="{sum}">
<input type="hidden" name="desc" value="{desc}">
<input type="hidden" name="signature" value="{signature}">
<input type="submit" class="btn" value="Подтвердить">
</form>
[/confirm]