Перейти к содержанию
Авторизация  

[SW13] UnitPay Скрипт для решения ошибки (Ошибка 400. Не передана подпись запроса)


Описание

PHP скрипт который решит проблему "Ошибка 400. Не передана подпись запроса" которая возникает при использовании этого модуля.

Автор: 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]
  • Like 3
  • Upvote 2


Рекомендуемые комментарии

Комментариев нет

×
×
  • Создать...