Скрипт приема оплаты на сайте через Robox

Максим19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
03.05.2008

Необходима система приема платежей на сайте через мерчант Roboxchange.

Приницип работы:

Пользователь заходит на страницу payment.php.

Там форма:

Введите свой номер договора.

Введите сумму, которую Вы хотите положить на счет.

И кнопка "Оплатить". При нажатии на кнопку скрипт проверяет следующее:

- оба поля не должны быть пустыми

- поле "номер договора" должно содержать ровно 7 цифр.

- в поле "номер договора" не должно быть букв и других символов, только цифры.

- сумма должна быть больше 100 рублей.

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

Если что-то введено не верно, то опять появляется та же форма, сверху появляется текст ошибки и при этом введенные ранее данные остаются на своих местах и никуда не исчезают!!!

Если же все проверки пройдены удачно, то скрипт делает следующее:

Поле "сумма" преобразовывает до вида 100.00, т.е. 100 рублей 00 копеек. Разделитель "точка".

Затем коннектися к БД, и вставляет в таблицу следующие данные:

- порядковый номер операции (счетчик полей из БД)

- сумма к оплате

- номер договора

- дата формирования счета в формате 10.05.2008 21:13:46, т.е. дд.мм.гггг чч.мм.сс

- статус операции (0 - значит не проведена)

После этого он берет номер этой операции (из БД куда он это вставил) и отправляет пользователя на сайт ROBOX

При этом в качестве номера счета он передает вот этот порядковый номер операции из БД. Ну и сумму в виде 100.00.

Теперь скрипт приема результата оплаты от ROBOX: называется он payokRobox.php

Согласно требованиям документации Robox он принимает данные о проведенной оплате, коннектися к БД, по полученному номеру счета (от Robox) вытягивает из БД информацию о платеже, сверяет сумму из БД и сумму пришедшую от Robox, сверяет контрольную подпись. Если все верно, то скрипт опять коннектися к БД и у данного платежа (номер счета пришедший от Robox = номер строчки в БД) ставит в поле статус 1 (т.е. платеж совершен) и обновляет поле "дата" на текущую опять в том же формате дд.мм.гггг чч.мм.сс

Все. Да, а в ответе скрипт Робоксу отдает OKNNN, где NNN - это номер счета (согласно документации). Отдает просто выводом.

Если же что-то несовпадает (контрольная подпись или сумма), то скрипт отдает Робоксу ERROR, а мне на е-майл пишет письмо вида "Не совпала контрольная подпись (не совпала сумма) от NNNN, сумма XXX" где NNN это номер договора (не номер счета, а номер договора по этому счету, XXX - сумма, тоже из БД). при этом статус платежа и дату не меняет.

Теперь скрипт админки:

Лежит в папке adminpay

При входе спрашивает логин и пароль, я ввожу и появляется табличка, которая формируется из всех строчек таблицы БД, у которых статус платежа равен 1 (оплачено):

| 12 | Номер договора: 1761259 | Сумма: 100.00 | 10.05.2008 21:13:46 | Оплачено, не проведено | Провести>> |

Где, 12 - номер счета (номер строчки из БД)

второе и третье поле думаю понятно

10.05.2008 21:13:46 - дата из таблицы

Оплачено, не проведено - это означает, что статус у платежа 1

Провести>> - ссылка. При нажатии на которую у платежа меняется статус на 2 (т.е. платеж проведен и про него можно забыть). При нажатии на ссылку страница перегружается и просто пропадает строчка у которой я нажал на ссылку.

Вверху выпадающее меню или просто меню, в нем:

- показать не оплаченные (при этом показываются все платежи со статусом 0)

- показать оплаченные (при этом показываются все платежи со статусом 1)

- показать проведенные (при этом показываются все платежи со статусом 2)

Формат таблицы такой же:

- для неоплаченных:

| 12 | Номер договора: 1761259 | Сумма: 100.00 | 10.05.2008 21:13:46 | Не оплачено | Провести>> |

- для проведенных:

| 12 | Номер договора: 1761259 | Сумма: 100.00 | 10.05.2008 21:13:46 | Оплачено, проведено | Провести>> |

Все. Жду стоимость работы и примерные сроки.

Заявки фрилансеров