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

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
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:
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Всем ку кто нибудь знает как сделать запрос на создание ссылки для оплаты 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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Если это нельзя расшифровать зачем они это просят :bw:
я так думаю что, хеш предназначен не для того что бы его расшифровывали. а для того что бы проверить что переданные данные валидны и их никто не перехватил и не подделал по дороге.
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Посмотреть вложение 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
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Спасибо кэширует прекрасно а у вас нет кубика создания самого платежа, что-то не в какую не хочет кубик работать

Вот что я передаю:
Посмотреть вложение 104050
Посмотреть вложение 104051
Кто делал данный запрос? Есть готовое решение?
Перепробовал все методы передачи данных, что то не работает.
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
я так думаю что, хеш предназначен не для того что бы его расшифровывали. а для того что бы проверить что переданные данные валидны и их никто не перехватил и не подделал по дороге.
Так интересно что! То-что предается JSON бери меняй делай новый хеш отправляй *HAHA*
 

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
Люби че это эт такое запрос соответствует всем параметрам кэшируются те параметры которые требуются, но при этом ответ неверные данные как это понимать

Знаю что спалил данные поже поменяю их)
 

bodfi3

Новичок
Регистрация
08.03.2024
Сообщения
3
Благодарностей
0
Баллы
1
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
 

bodfi3

Новичок
Регистрация
08.03.2024
Сообщения
3
Благодарностей
0
Баллы
1
Посмотреть вложение 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

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
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'));
 
Последнее редактирование:

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