Создание операции
Адрес:
https://sci.fropay.bid
Одну кассу можно использовать на любом сайте
Название | Описание | |
---|---|---|
amount |
Сумма платежа в формате 100.00 | |
shop_id |
ID кассы | |
label |
ID платежа в вашей системе (до 65 символов) | |
desc |
Описание платежа (в base64) | |
hash |
Зашифрованная строка shop_idamountpublickeylabel методом sha256 Составляется без точек между параметрами (в amount точки можно) |
Пример формы на оплату (POST запрос)
<?php
$shop_id = 'ID кассы'; // ID кассы
$label = 'ID платежа'; // ID платежа в вашей системе
$amount = '123'; // Сумма платежа
$amountnum = number_format($amount, 2, '.', ''); // перевод в формат 123.00
$publickey = 'publickey'; // публичный ключ
$sign = hash('sha256', $shop_id.$amountnum.$publickey.$label); // генерация HASH
?>
<form method="POST" action="https://sci.fropay.bid">
<input type="hidden" name="amount" value="<?php echo $amountnum; ?>">
<input type="hidden" name="shop_id" value="<?php echo $shop_id; ?>">
<input type="hidden" name="label" value="<?php echo $label; ?>">
<input type="hidden" name="desc" value="Описание в base64"> // можно использовать этот текст: MTAwMDA=
<input type="hidden" name="ps" value="0"> // авто-апереход к оплате, 0 - все способы, 3 - карты (форма ввода рф карт), 17 - карты (форма ввода рф карт 2), 4 - USDT TRC-20, 5 - СБП, 6 - юмани, 7 - киви (#2), 8 - карты (по номеру карты), 10 - сбер, 11 - карты KZ, 12 - world card, 13 - alfabank(форма ввода рф карт), 15 - Моб. Платеж, 18 - TON Coin, 19 - киви #3
<input type="hidden" name="nored" value="0"> // отменяет редирект и выводит json ответ вида: {"id":"id в системе fropay", "url":"ссылка на счёт"} , 0 - по умолчанию, 1 - вывести json
<input type="hidden" name="lang" value="0"> // меняет язык страницы оплаты, 0 - русский, 1 - английский
<input type="hidden" name="hash" value="<?php echo $sign; ?>">
<input type="submit" id="clicks" value="Нажмите сюда, если ничего не происходит">
</form>
<script>window.onload = function(){document.getElementById('clicks').click();}</script> // данная строка автоматически подтверждает форму
Пример ссылки на оплату (GET запрос)
https://sci.fropay.bid/get?amount=100.00&desc=MTAyMTU=&shop_id=2100&label=123&hash=3f4a5f52cf6d408f4bd9c10f4a80946332cc25c8d14763dd074feb4a7c9510e3
Перейти
Обработка платежа
Запросы на обработку приходят из: Russia
ip нашего сервера: 45.153.75.48
Название | Описание | |
---|---|---|
shop_id |
ID кассы | |
amount |
Сумма платежа в формате 100.00 | |
label |
ID платежа в вашей системе Пример получения двух чисел: $req = '08052023111'; // 08052023 - дата, 111 - user_id echo $date = substr($req, 0, 8); // 08052023 - дата $dqwdc = strlen($date); echo $userid = mb_substr($req, $dqwdc); // 111 - user_id |
|
pay |
Номер платежа в системе FROPAY | |
hash |
Зашифрованная строка shop_id.amount.secretKey.label.pay методом sha256 |
$hash = hash('sha256', $_POST['shop_id'].$_POST['amount'].'Секретный ключ'.$_POST['label'].$_POST['pay']);
Пример обработчика на PHP
<?php
$shop_id = 'shop_id'; // ID кассы
$secret_key = 'secret_key'; // Секретный ключ в настройках кассы
$pay = $_POST['pay']; // Номер платежа в системе FROPAY
$label = $_POST['label']; // ID платежа в вашей системе
$amount = $_POST['amount']; // Сумма платежа в формате 100.00
$hashsign = $_POST['hash']; // Зашифрованная строка shop_id.amount.secretKey.label.pay методом sha256
$sign = hash('sha256', $shop_id.$amount.$secret_key.$label.$pay);
if ($sign != $hashsign) {
die('Неверный hash'); // проверка hash, при желании можно не использовать
}
// Оплата прошла успешно, можно проводить операцию начисления
// при успешном зачислении необходимо ответить HTTP кодом 200 (быть доступным для бота)
// Обрабочтик может отправлять несколько уведомлений, что-бы избежать непредвиденных затрат, необходимо дополнительно выполнять проверку на вашей стороне по уникальному id в вашей базе
?>
Статус операции
Название | Описание |
---|---|
id |
id операции в системе fropay |
secret |
Сектретный ключ из настроек кассы, зашифрованый в sha256 Пример шифрования: $secretkey = "v7c2n5x9f1"; $secret = hash('sha256', $secretkey); |
{
"status": "0",
"amount": "100.00",
"label": "123100",
"time": "1684615204"
}
Что означает:
status - 0 в ожидании, 1 платеж получен выполняется обработка, 2 успешно обработан и зачислен на баланс владельца кассы
amount - актуальная сумма платежа
label - id который был отправлен при создании операции
time - время в unixtime когда создана операция
При успешной обработке на вашей стороне ваш сайт должен ответить HTTP кодом
200
Если ваш сайт не ответит 5 раз подряд(1раз в минуту), операция остается в статусе "Обработка" без отправки дальнейших запросов по этой операции.
1. Перейдите к своему сайту в Cloudflare
2. Выберите из раздела Security, подраздел WAF
3. Нажмите на синюю кнопку "Create rule" и создайте правило по тексту ниже:
"Rule name" - любой текст
"Field" - Header
"Name" - fropay
"Operator" - equals
"Value" - yes
4. Ниже есть текст "Then take action…", под ним:
"Choose action" - Skip
5. Включите все галочки ниже, если не включены
6. Нажмите на синюю кнопку "Deploy"
Теперь ResultURL должен быть доступен нашему боту в любой ситуации и при любом уровне защиты на вашей стороне
Нажмите чтобы открыть в новом окне

API для H2H
https://sci.fropay.bid/get?amount=100.00&desc=MTAyMTU=&shop_id=2100&label=123&hash=22c7a1fc66a26dee563cea00822fdd1c0b2b2f8f63d8e0386e5ab23189684c0d&userh2h=&iph2h=&nored=1&ps=625010
ps - выбор метода реквезитов
625010 - карты рф
265125 - сбп
/ - карты кз
Для предотвращения спама(желательно использовать, для успешного поиска чеков при ошибочной оплате):
userh2h - уникальный идентификатор плательщика
iph2h - ip плательщика
При успехе получаете ответ:
{"id":1687462759608,"success":"success","fullamount":"108.70","card":"2202207172733274"}
При спаме пользователем получаете ответ:
{"id":1687462759608,"success":"error","error":"spam"}
При повторном запрсе с тем же label получаете ответ:
{"id":1687462759608,"success":"error","error":"label уже существует"}
fullamount - сумма которая должна быть отправлена плательщиком на реквезиты одним платежом. Если больше/меньше платеж не зачислится.
Если success : success то платеж успешно выставлен, если нет то смотрим error : ошибка.
Время на оплату 15 минут.
Карту к одному label можно получить 1 раз
Пример Python
import requests
import random
import hashlib
import base64
def createPay(public_key, shop_id, amount):
try:
random_number = random.randint(0, 999999999) # Генерируем случайное число от 0 до 999999999
hash_str = f'{shop_id}{amount}{public_key}{random_number}'
hash = hashlib.sha256(hash_str.encode('utf-8')).hexdigest()
create_pay = requests.get(f'https://sci.fropay.bid/get?amount={amount}&desc=MTAyMTU=&shop_id={shop_id}&label={random_number}&hash={hash}&nored=1')
payments_id = create_pay.json()['id']
pay_url = create_pay.json()['url']
return {'bill': payments_id, 'url': pay_url}
except:
return 'False'
def getTransaction(secret_id, payments_id):
hash_payment = hashlib.sha256(secret_id.encode('utf-8')).hexdigest()
status = requests.get(f'https://sci.fropay.bid/status?id={payments_id}&secret={hash_payment}')
print(status.json())
return status.json()['status']
API выплаты
<?php
$ps = '1'; // платежная система (первая цифра в списке ниже)
$wallet = '4436161270154012'; // кошелек получателя
$amount = '1000'; // сумма которая поступит на кошелек получателя
$id = '512'; // Ваш id из https://my.fropay.bid/setting
$uid = 'df34tg4w3r2qed12e12e'; // Ваш uid из https://my.fropay.bid/setting
$sign = hash('sha256', $wallet.$id.$uid); // генерация HASH
?>
<form method="GET" action="https://sci.fropay.bid/with">
<input type="text" name="hash" value="<?php echo $sign; ?>">
<input type="number" name="id" value="<?php echo $id; ?>">
<input type="text" name="uid" value="<?php echo $uid; ?>">
<input type="text" name="wallet" value="<?php echo $wallet; ?>">
<input type="text" name="amount" value="<?php echo $amount; ?>">
<input type="text" name="ps" value="<?php echo $ps; ?>">
<input type="submit" value="Отправить запрос">
</form>
// с баланса снимается сумма с учётом комиссии
// 1 card Карты РФ - от 600 (Комиссия: 5%)
// 2 usdt USDT (TRC20) - от 11000 (Комиссия: 5%)
// 3 qiwi QIWI - от 10000 (Комиссия: 5%)
// 4 yoomoney ЮMoney - от 1000 (Комиссия: 5%)
// 5 payeer Payeer - от 2000 (Комиссия: 8%)
// 6 piastrix Piastrix - от 600 (Комиссия: 3%)
// 7 cardkz Карты KZ - от 500 (Комиссия: 5%)
// При недостаточном балансе получаете json ответ с ошибкой
// При других ошибках, получаете ошибку текстом
// При успехе, получаете json ответ с success: success, newbalance и дата создания
API получение баланса
<?php
$id = '512'; // Ваш id из https://my.fropay.bid/setting
$uid = 'c253d064ec5254040ba1'; // Ваш uid из https://my.fropay.bid/setting
$sign = hash('sha256', $id.$uid); // генерация HASH
?>
<form method="GET" action="https://sci.fropay.bid/bal">
<input type="text" name="hash" value="<?php echo $sign; ?>">
<input type="number" name="id" value="<?php echo $id; ?>">
<input type="text" name="uid" value="<?php echo $uid; ?>">
<input type="submit" value="Отправить запрос">
</form>
// При ошибках, получаете ошибку текстом
// При успехе, получаете json ответ типа: {"success":"success","balance":"10750.05"}
Пример использования виджета
Пример кода для генерации виджета:
<script src="https://sci.fropay.bid/assets/widgetnew.js"></script>
<script>
var amount = '100.00';
var label = '12';
var shop_id = '3299';
var desc = 'VEVTVA==';
var sign = '<?php echo hash('sha256', '3299'.'100.00'.'Публичный ключ'.'12');?>';
</script>
<a href="#" onclick="createWidget(amount,label,shop_id,desc,sign);" class="btn" style="color: #fff;background: linear-gradient(90deg,rgb(63 158 255 / 77%) 0%,#2194f9 100%);"> Оплатить 100p</a>
<script>
window.addEventListener("message", function(event) {
if (event.data === "closeIframe") { // попали на https://sci.fropay.bid/success и получили сигнал об успешной оплате
var widgetElement = document.querySelector(".up-widget");
widgetElement.parentNode.removeChild(widgetElement); // удаляем виджет с страницы
}
});
</script>
Класс для работы с SCI PHP
- Telegram по всем вопросам: @gsrps