С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 03.06.2014
Сообщений: 112

Кто нибудь настраивал Onpay?

21.07.2014, 21:37. Показов 2223. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно настроить автоматический прием платежей, не пойму с чего начинать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2014, 21:37
Ответы с готовыми решениями:

Парсер! Помогите кто-нибудь!
Здравствуйте! Задача - написать парсер для прайса. Необходимо приводить его к html коду. Обьясните кто-нибудь что это означает и как это...

Кто-нибудь реализовывал wish list в интернет магазине?
Нужна реализация wish list в интернет-магазине. если кто делал можете дать код? или подсказать хотя бы как делали, чо нужно делать?

Проверьте кто нибудь этот исходник на ошибки
<?php $name=file_get_contents('database.php'); $date=date(""); $ip = getenv ("REMOTE_ADDR"); ...

8
 Аватар для Nick007
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
21.07.2014, 22:48
к примеру с изучения предложений платежных систем для программистов
и регистрации в этих системах или заключением договоров
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
21.07.2014, 22:48
Инструкция для начинаюших, начните. клац
0
1 / 1 / 1
Регистрация: 03.06.2014
Сообщений: 112
21.07.2014, 23:13  [ТС]
создана папка Dir (закрытая директория ) в ней файл index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
/* В настройках кабинета необходимо указать "Проверять md5 на ссылках",
чтобы нельзя было заплатить сумму отличную от заданной в переменной $summa */
$summa=50; //Стоимость доступа к платному разделу, в рублях
$period=60*60*24*2; //Время доступа, в секундах (60 секунд * 60 минут * 24 часа * 2 суток = 172800 секунд). Исчисляется от времени поступления оплаты за код доступа.
$login='demo1'; //Ваше "Имя пользователя" (логин) в системе Onpay.ru
$key='a2su3ig8y'; //Ваш "Секретный пароль для API IN" в системе Onpay.ru
/* Для того, чтобы закрыть доступ к папке, данный код необходимо размещать в индексном файле (index.php) */
$path='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; //Путь к файлу с этим кодом (определяется автоматически), например: http://onpay.ru/dir/index.php
$access=0; //Запрещаем доступ, по умолчанию (0 = доступ закрыт, 1 = доступ открыт)
$code='';
$error='';
//Функция округления для md5
function to_float($sum) {
if (strpos($sum, ".")) {$sum=round($sum,2);}
else {$sum=$sum.".0";}
return $sum;
}
/* Подключаемся к базе данных, если нажали на кнопку оплатить или ввели код доступа */
if(isset($_POST['pay']) || isset($_POST['code'])) {
$db_host='localhost'; //Хост сервера базы данных (домен или IP-адрес)
$db_user='root'; //Имя пользователя БД
$db_pass=''; //Пароль БД
$db_name='pays'; //Название базы данных
$db_tabl='payments'; //Название таблицы в которой будут храниться платежи
if(!mysql_connect($db_host, $db_user, $db_pass)) {echo 'Невозможно подключиться к серверу баз данных';exit;} //Подключение к серверу баз данных
if(!mysql_select_db($db_name)) {echo 'Не получилось выбрать базу данных '.$db_name;exit;} //Выбор базы данных
}
/* Разбираем данные, отправленные через форму*/
if(isset($_POST['pay'])) { //Если нажали на кнопку покупки кода, то генерируем код, сохраняем его в базу данных и выводим форму оплаты:
if(is_numeric($summa)) { //Если сумма введена корректно
$sql = "INSERT INTO $db_tabl SET ".
"path='$path',".
"sum='$summa',".
"payed=0,".
"date=".time().",".
"ip='".$_SERVER['REMOTE_ADDR']."';"; //Запрос в базу данных на создание новой записи
$result=mysql_query($sql); //Добавляем новую строку в базу данных
if($result) { //Если сохранено в базу данных без ошибок
$id=mysql_insert_id(); //Получаем id записи
$code=$id.substr(time(),-7); //Создаем секретный код - соединяем уникальный номер строки в базе данных (id) и последние 7 знаков текущего времени в секундах (коды доступа не должны повторяться)
$sql = "UPDATE $db_tabl SET code='$code' WHERE id='$id';"; //Запрос в базу данных, для добавления кода доступа
$result=mysql_query($sql); //Сохраняем код в базу данных
if($result) { //Если сохранено в базу данных без ошибок
$sum_for_md5=to_float($summa);
$md5check=md5("fix;$sum_for_md5;RUR;$code;yes;$key"); //Создаем проверочную строку, которая защищает платежную ссылку от изменений
$url="http://secure.onpay.ru/pay/$login?pay_mode=fix&pay_for=$code&price=$summa&currency=RUR&convert=yes&md5=$md5check&url_success=".$path; //Формируем платежную ссылку
/*Выводим код*/
?><p style="font-size:14pt;color:blue;">Ваш код доступа: <b><?=$code; //Выводим код ?></b> (сохраните его в надежном месте)<?php
/*Выводим форму оплаты*/
?><h1><a target="_blank" href="<?=$url; //Выводим платежную ссылку ?>">Оплатить код доступа:</a></h1>
<iframe src="<?=$url; //Выводим платежную ссылку ?>" width="195" height="600" frameborder=no scrolling=no></iframe><?php
} else unset($_POST['pay']); //Удаляем элемент массива (чтобы выводилась кнопка покупки кода)
} else unset($_POST['pay']);
} else unset($_POST['pay']); //Конец условия if(is_numeric($summa)) { //Если сумма введена корректно
} elseif(isset($_POST['code'])) { //Если ввели код, то проверяем его в базе данных и если верный, то сохраняем в COOKIE
$code=intval($_POST['code']); //Код должен быть целым числом
$sql = "SELECT * FROM $db_tabl WHERE code='$code' AND path='$path' AND payed>=sum AND date>=".time().";"; //Проверка кода
$result=mysql_query($sql); //Сохраняем код в базу данных
if($result) { //Если сохранено в базу данных без ошибок
if($row=mysql_fetch_assoc($result)) { //Если в базе данных найдена строка с введенным кодом для данной директории и он не просрочен, то сохраняем код
$access=1; //Разрешаем доступ
} else $error='Введен неправильный код доступа.';
}
} //
if($access == 0) { //Если доступ запрещен, то выводим форму для покупки или ввода оплаченного кода
?><p style="font-size:14pt;font-weight:bold;">Доступ закрыт.<?php
?><p style="font-size:14pt;font-weight:bold;color:red;"><?=$error; //Выводим ошибки?><?php
if(!isset($_POST['pay'])) { //Если не выведена форма оплаты
?><form method="POST" action="<?=$path; //Выводим путь на который будет отправлена форма (на текущую страницу) ?>">
<input style="font-size:16pt;font-weight:bold;color:red;" type="submit" name="pay" value="Купить доступ до <?=date('H:i:s d.m.Y',time()+$period); //Выводим дату ?> всего за <?=$summa; //Выводим сумму ?>&nbsp;руб.">
</form><?php
}
?><p><form method="POST" action="<?=$path; //Выводим путь на который будет отправлена форма (на текущую страницу) ?>">
<input style="font-size:14pt;" type="text" name="code" value="<?=$code; //Выводим текущий код доступа, при его наличии ?>">
<input style="font-size:14pt;" type="submit" value="Ввести оплаченный код доступа">
</form><?php
exit; //Прекращаем выполнение скрипта и выходим
/*Все, что расположено ниже этой строки - не выводится без верного кода доступа. */
} //Конец условия if($access == 0) { if(isset($_POST['pay'])) {
?>
<h1>Доступ по коду <u><?=$row['code'];?></u> разрешен до <?=date('H:i:s d.m.Y',$row['date']);?></h1>
<p>Получено: <?=$row['payed'];?>&nbsp;руб.
<p>Цена продления: <?=$row['sum'];?>&nbsp;руб.
<p>onpay_id: <?=$row['onpay_id'];?>
<p><a href=" <?=$row['path'];?>">Секретная ссылка</a>
и файл api.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
$period=60*60*24*2; //Время доступа, в секундах (60 секунд * 60 минут * 24 часа * 2 суток = 172800 секунд). Исчисляется от времени поступления оплаты за код доступа.
$login='demo1'; //Ваше "Имя пользователя" (логин) в системе Onpay.ru
$key='a2su3ig8y'; //Ваш "Секретный пароль для API IN" в системе Onpay.ru
$db_host='localhost'; //Хост сервера базы данных (домен или IP-адрес)
$db_user='root'; //Имя пользователя БД
$db_pass=''; //Пароль БД
$db_name='pays'; //Название базы данных
$db_tabl='payments'; //Название таблицы в которой будут храниться платежи
if(!mysql_connect($db_host, $db_user, $db_pass)) {echo 'Невозможно подключиться к серверу баз данных';exit;} //Подключение к серверу баз данных
if(!mysql_select_db($db_name)) {echo 'Не получилось выбрать базу данных '.$db_name;exit;} //Выбор базы данных
if($_REQUEST['type']=='check') { //Ответ на запрос check от Onpay (проверка наличия кода в базе данных)
$error=0;
$order_amount=$_REQUEST['order_amount'];
$order_currency=$_REQUEST['order_currency'];
$code=$pay_for=$_REQUEST['pay_for'];
$md5=$_REQUEST['md5'];
$sum=floatval($order_amount);
$code=intval($code); //Код должен быть целым числом
$sql = "SELECT * FROM $db_tabl WHERE code='$code';"; //Проверка кода и переводимой за него суммы
$result=mysql_query($sql); //Сохраняем код в базу данных
if($result) { //Если сохранено в базу данных без ошибок
if(mysql_num_rows($result)) { //Если в базе данных найдена строка с введенным кодом для данной директории и он не просрочен, то отвечаем ОК
$rezult=answer($_REQUEST['type'],0,$pay_for,$order_amount,$order_currency,'OK'); //Отвечаем серверу Onpay, что все хорошо, можно принимать деньги
} else $error=1;
} else $error=1;
if($error==1)
$rezult=answer($_REQUEST['type'],2,$pay_for,$order_amount,$order_currency,'Error code pay_for: '.$code); //Сообщаем ошибку
}
if($_REQUEST['type']=="pay") { //Ответ на запрос pay от Onpay (прием оплаты за код)
$onpay_id=$_REQUEST['onpay_id'];
$code=$pay_for=$_REQUEST['pay_for'];
$order_amount=$_REQUEST['order_amount'];
$order_currency=$_REQUEST['order_currency'];
$balance_amount=$_REQUEST['balance_amount'];
$balance_currency=$_REQUEST['balance_currency'];
$exchange_rate=$_REQUEST['exchange_rate'];
$paymentDateTime=$_REQUEST['paymentDateTime'];
$md5=$_REQUEST['md5'];
$error='';
//Проверка входных данных
if (empty($onpay_id)) {$error .="Не указан id<br>";}
else {if (!is_numeric(intval($onpay_id))) {$error .="Параметр не является числом<br>";}}
if (empty($order_amount)) {$error .="Не указана сумма<br>";}
else {if (!is_numeric($order_amount)) {$error .="Параметр не является числом<br>";}}
if (empty($balance_amount)) {$error .="Не указана сумма<br>";}
else {if (!is_numeric(intval($balance_amount))) {$error .="Параметр не является числом<br>";}}
if (empty($balance_currency)) {$error .="Не указана валюта<br>";}
else {if (strlen($balance_currency)>4) {$error .="Параметр слишком длинный<br>";}}
if (empty($order_currency)) {$error .="Не указана валюта<br>";}
else {if (strlen($order_currency)>4) {$error .="Параметр слишком длинный<br>";}}
if (empty($exchange_rate)) {$error .="Не указана сумма<br>";}
else {if (!is_numeric($exchange_rate)) {$error .="Параметр не является числом<br>";}}
if (!$error) { //Если нет ошибок
if(is_numeric($code)) {//Если pay_for - число
$code=intval($code); //Код должен быть целым числом
$sum=floatval($order_amount);
$rezult=mysql_query("SELECT * FROM $db_tabl WHERE code='$code'"); //Проверяем, что код есть в базе данных, и оплачиваема сумма не меньше допустимой
if(mysql_num_rows($rezult) == 1) {
//Создаем строку хэша с присланных данных
$md5fb=strtoupper(md5($_REQUEST['type'].";".$pay_for.";".$onpay_id.";".$order_amount.";".$order_currency.";".$key.""));
//Сверяем строчки хеша (присланную и созданную нами)
if ($md5fb != $md5) {$rezult=answerpay($_REQUEST['type'],7,$pay_for,$order_amount,$order_currency,'Md5 signature is wrong',$onpay_id);}
else {
$time=time();
$rezult1=mysql_query("UPDATE $db_tabl SET date='".(time()+$period)."',payed=payed+'$sum',onpay_id='$onpay_id' WHERE code='$code';"); //Добавляем сумму оплаты и устанавливаем срок действия кода доступа
if ($rezult1) {$rezult=answerpay($_REQUEST['type'],0,$pay_for,$order_amount,$order_currency,'OK',$onpay_id);} //Если занесение информации в базу данных прошло без ошибок,
else {$rezult=answerpay($_REQUEST['type'],3,$pay_for,$order_amount,$order_currency,'Error in mechant database queries: operation or balance tables error',$onpay_id);}
}
} else {$rezult=answerpay($_REQUEST['type'],3,$pay_for,$order_amount,$order_currency,'Cannot find any pay rows acording to this parameters: wrong payment',$onpay_id);}
} else {//Если pay_for - не правильный формат
$rezult=answerpay($_REQUEST['type'],3,$pay_for,$order_amount,$order_currency,'Error in parameters data',$onpay_id);
}
} else {//Если есть ошибки
$rezult=answerpay($_REQUEST['type'],3,$pay_for,$order_amount,$order_currency,'Error in parameters data',$onpay_id);
}
}
echo $rezult;
//Функция выдает ответ для сервиса Onpay в формате XML на чек запрос
function answer($type,$code,$pay_for,$order_amount,$order_currency,$text) {
global $key;
$md5=strtoupper(md5("$type;$pay_for;$order_amount;$order_currency;$code;$key"));
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<result>\n<code>$code</code>\n<pay_for>$pay_for</pay_for>\n<comment>$text</comment>\n<md5>$md5</md5>\n</result>";
}
//Функция выдает ответ для сервиса Onpay в формате XML на pay запрос
function answerpay($type,$code,$pay_for,$order_amount,$order_currency,$text,$onpay_id) {
global $key;
$md5=strtoupper(md5("$type;$pay_for;$onpay_id;$pay_for;$order_amount;$order_currency;$code;$key"));
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<result>\n<code>$code</code>\n <comment>$text</comment>\n<onpay_id>$onpay_id</onpay_id>\n <pay_for>$pay_for</pay_for>\n<order_id>$pay_for</order_id>\n<md5>$md5</md5>\n</result>";
}
?>
в результате код выдается сразу (ваш секретный код сохраните...), потом идет форма приема платежа, платеж проходит все нормально , приходит письмо на почту. А сгенерированный секретный код почему выдает сразу и к тому же он не подходит, выдает сообщение , что он не правильный.
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
21.07.2014, 23:19
Это сообщение будет выводить после отправки формы, до этого не будет выводиться не как.
PHP
1
Ваш код доступа: $code;
А вообще оформление вашего кода, оставляет желать лучшего. Вы хоть сами можете разобраться в нем?
0
1 / 1 / 1
Регистрация: 03.06.2014
Сообщений: 112
22.07.2014, 12:04  [ТС]
Эти файлы-образец пример указанный на сайте. Сама не разберусь с ними . Помогите подкорректировать.

Добавлено через 3 часа 23 минуты
ну помогите, КАКИЕ ВАРИАНТЫ. я первый раз с этим столкнулась. Писала программистам -разработчикам, но они молчат.
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
22.07.2014, 12:12
iracwet, http://wiki.onpay.ru/doku.php?id=developers. Читайте wiki и пытайтесь самому сотворить, что не понятно пишите. Надеюсь у вас достаточный уровень знаний php для такого рода задачи.(API)
0
1 / 1 / 1
Регистрация: 03.06.2014
Сообщений: 112
22.07.2014, 21:38  [ТС]
В том-то и дело, я же говорю в первый раз. Объясните плиз что делать. Читала, но не понимаю, почему сразу выходит сообщение "ваш код...", оно по идее должно появляться после того, как прошла оплата. И сам код, он генерируется в БД, но я его ввожу, а выходит сообщение :"не правильный код доступа"

Добавлено через 19 минут
подключила в настройках магазина, уведомлять по API, теперь при вводе платежных данных выскакивает ошибка:Ошибки: 1.0.38 Получатель платежа не разрешил осуществление перевода . В ошибках написано:Попробуйте оплатить еще раз, если вторая попытка окончится неудачно, свяжитесь со службой поддержки продавца.

Добавлено через 18 минут
Может кто за оплату настроит, мой адрес ira_necwet@mail.ru

Добавлено через 8 часов 31 минуту
Ошибку убрала, нужно было в личном кабинете установить код для API, и в файле api.php этот же код.
Но как сделать , чтобы генерировался код доступа к закрытой странице и после приема оплаты он работал?
0
0 / 0 / 0
Регистрация: 15.10.2011
Сообщений: 6
16.02.2015, 12:20
iracwet, может быть этот пример пригодится?
http://wiki.onpay.ru/doku.php?... aid-sample
К сожалению проконсультировать не смогу, я сам не программист.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2015, 12:20
Помогаю со студенческими работами здесь

Кто нибудь пользовался системой Paypal Pro?
Здраствуйте! Приветствую вас форумчане! У меня к вам вопрос - кто нибудь пользовался системой paypal pro ? Как с ней работать? Или...

Кто-нибудь скажет что это за бок?
При использовании конструкции header ('Location:fdfd.php');exit; браузеры выдают что бесконечное перенаправление, и не открывают...

Обучение php в Москве кто-нибудь проходил?
Всем привет! Мне 19 лет, ищу где бы научиться программировать для веба. Прочитал книжку php теперь я понял что надо идти дальше начал...

Функция mail(): Не очень понятно, как указывается e-mail отправителя. Разъясните кто-нибудь, пожалуйста.
Есть вопрос по поводу функции mail(). Не очень понятно, как указывается e-mail отправителя. Разъясните кто-нибудь, пожалуйста.

Кто настраивал тему MyOffice?
Запутался со слайдером для избранных материалов. Везде пишут - Для слайдера потребуются картинки размером 628х250. Картинки вставляются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru