Касса онлайн MD5-хеш

  • Автор темы Автор темы _HEDELKA_
  • Дата начала Дата начала

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Реакции
172
Баллы
43
Всем ку кто нибудь знает как сделать запрос на создание ссылки для оплаты freekassa

Главный вопрос про
signature
required
string
Example: signature=190f3e3b87275da51031223a010e6da6
Подпись запроса

Если это нельзя расшифровать зачем они это просят :bw:

1.5. Формирование подписи в платежной форме
Подпись для платежной формы формируется путем нахождения MD5-хеша от строки "ID Вашего магазина:Сумма платежа:Секретное слово:Валюта платежа:Номер заказа", пример на PHP:
md5('7012:100.11:secret:RUB:154')
Пример платежной формы:
<?php
$merchant_id = '7012';
$secret_word = 'secret';
$order_id = '154';
$order_amount = '100.11';
$currency = 'RUB';
$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id);
?>

<form method='get' action='https://pay.freekassa.ru/'>
<input type='hidden' name='m' value='<?php=$merchant_id?>'>
<input type='hidden' name='oa' value='<?php=$order_amount?>'>
<input type='hidden' name='o' value='<?php=$order_id?>'>
<input type='hidden' name='s' value='<?php=$sign?>'>
<input type='hidden' name='currency' value='<?php=$currency?>'>
<input type='hidden' name='i' value='1'>
<input type='hidden' name='lang' value='ru'>
<input type='hidden' name='us_login' value='<?php=$user['login']?>'>
<input type='submit' name='pay' value='Оплатить'>
</form>

Может кто делал уже подобный запрос, помогите пж :bk:
 
Всем ку кто нибудь знает как сделать запрос на создание ссылки для оплаты freekassa

Главный вопрос про
signature
required
string
Example: signature=190f3e3b87275da51031223a010e6da6
Подпись запроса

Если это нельзя расшифровать зачем они это просят :bw:

1.5. Формирование подписи в платежной форме
Подпись для платежной формы формируется путем нахождения MD5-хеша от строки "ID Вашего магазина:Сумма платежа:Секретное слово:Валюта платежа:Номер заказа", пример на PHP:
md5('7012:100.11:secret:RUB:154')
Пример платежной формы:
<?php
$merchant_id = '7012';
$secret_word = 'secret';
$order_id = '154';
$order_amount = '100.11';
$currency = 'RUB';
$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id);
?>

<form method='get' action='https://pay.freekassa.ru/'>
<input type='hidden' name='m' value='<?php=$merchant_id?>'>
<input type='hidden' name='oa' value='<?php=$order_amount?>'>
<input type='hidden' name='o' value='<?php=$order_id?>'>
<input type='hidden' name='s' value='<?php=$sign?>'>
<input type='hidden' name='currency' value='<?php=$currency?>'>
<input type='hidden' name='i' value='1'>
<input type='hidden' name='lang' value='ru'>
<input type='hidden' name='us_login' value='<?php=$user['login']?>'>
<input type='submit' name='pay' value='Оплатить'>
</form>

Может кто делал уже подобный запрос, помогите пж :bk:
104048


C#:
Развернуть Свернуть Копировать
string merchant_id = "7012";
string secret_word = "secret";
string order_id = "154";
string order_amount = "100.11";
string currency = "RUB";
string sign = CommonCode.CalculateMD5Hash(merchant_id + ":" + order_amount + ":" + secret_word + ":" + currency + ":" + order_id);

public static string CalculateMD5Hash(string input) //это вынести в CommonCode
{
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}
 
  • Спасибо
Реакции: Astraport
Если это нельзя расшифровать зачем они это просят :bw:
я так думаю что, хеш предназначен не для того что бы его расшифровывали. а для того что бы проверить что переданные данные валидны и их никто не перехватил и не подделал по дороге.
 
Посмотреть вложение 104048

C#:
Развернуть Свернуть Копировать
string merchant_id = "7012";
string secret_word = "secret";
string order_id = "154";
string order_amount = "100.11";
string currency = "RUB";
string sign = CommonCode.CalculateMD5Hash(merchant_id + ":" + order_amount + ":" + secret_word + ":" + currency + ":" + order_id);

public static string CalculateMD5Hash(string input) //это вынести в CommonCode
{
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}
Спасибо кэширует прекрасно а у вас нет кубика создания самого платежа, что-то не в какую не хочет кубик работать

Вот что я передаю:
104050

104051
 
Спасибо кэширует прекрасно а у вас нет кубика создания самого платежа, что-то не в какую не хочет кубик работать

Вот что я передаю:
Посмотреть вложение 104050
Посмотреть вложение 104051
Кто делал данный запрос? Есть готовое решение?
Перепробовал все методы передачи данных, что то не работает.
 
я так думаю что, хеш предназначен не для того что бы его расшифровывали. а для того что бы проверить что переданные данные валидны и их никто не перехватил и не подделал по дороге.
Так интересно что! То-что предается JSON бери меняй делай новый хеш отправляй *HAHA*
 
Люби че это эт такое запрос соответствует всем параметрам кэшируются те параметры которые требуются, но при этом ответ неверные данные как это понимать

Знаю что спалил данные поже поменяю их)
 
Bazag, как можно сформировать подпись на php.
Controller
public function makePayments(Request $request)
{
$merchant_id = '****';
$order_amount = $request->input('oa');
$secret_word = '*********';
$order_id = time();
$currency = 'RUB';
$sign = md5($merchant_id . ':' . $order_amount . ':' . $secret_word . ':' . $order_id . ':' . $currency);

return view('cabinet.make-payment', compact('merchant_id', 'order_amount', 'order_id', 'sign', 'currency'));

}


public function handlePaymentNotification(Request $request)

{
$merchant_id = '****';
$merchant_secret = '*********';

$sign = md5($merchant_id . ':' . $request->input('AMOUNT') . ':' . $merchant_secret . ':' . $request->input('MERCHANT_ORDER_ID'));


print_r($sign);

if ($sign != $request->input('SIGN')) {
return response(' wrong sign', 400);
}


return response('YES');

}

Сама страница с формой

<form method='get' action='https://pay.freekassa.ru/'>
@csrf
<input type='hidden' name='m' value='{{ $merchant_id }}'>
<input type="hidden" name="oa" value='{{ $order_amount }}'>
<input type='hidden' name='o' value='{{ $order_id }}'>
<input type='hidden' name='s' value='{{ $sign }}'>
<input type='hidden' name='currency' value='{{ $currency }}'>
<input type='hidden' name='i'>
<input type='hidden' name='lang' value='ru'>
<input type='submit' name='pay' value='Оплатить'>
</form>
Страница для пополнения.
<span class="payments-pay">Pay</span>
<div class="payments">
<form method='get' action='{{url('cabinet/make-payment') }}'>
@csrf
<input type='number' name='oa' value="">
<input class="pay" type='submit' value="Пополнить">
</form>
</div>






118964
 
Посмотреть вложение 104048

C#:
Развернуть Свернуть Копировать
string merchant_id = "7012";
string secret_word = "secret";
string order_id = "154";
string order_amount = "100.11";
string currency = "RUB";
string sign = CommonCode.CalculateMD5Hash(merchant_id + ":" + order_amount + ":" + secret_word + ":" + currency + ":" + order_id);

public static string CalculateMD5Hash(string input) //это вынести в CommonCode
{
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString();
}
}
Bazag. ответь ниже
 
Bazag, как можно сформировать подпись на php.
Вы в коде формируете подпись:
PHP:
Развернуть Свернуть Копировать
$sign = md5($merchant_id . ':' . $order_amount . ':' . $secret_word . ':' . $order_id . ':' . $currency);

В чем вопрос - не совсем понятно...

P.S. Хотя, вижу что для проверки у Вас используется другой вариант в котором нет currency - возможно из-за этого проверка не проходит.
PHP:
Развернуть Свернуть Копировать
$sign = md5($merchant_id . ':' . $request->input('AMOUNT') . ':' . $merchant_secret . ':' . $request->input('MERCHANT_ORDER_ID'));
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)