Многие люди хотят продавать что-нибудь на сайте, может предоставлять какую-то услугу, а как вы знаете, принимать все способы оплаты очень трудно, тем более в автоматическом режиме. Есть множество платежных агрегаторов, которые содержат в себе все популярные способы оплаты. Вам нужно лишь подключиться к ним, чтобы принимать платежи на своём сайте. В конце урока есть исходники, скачав которые вы можете без проблем настроить оплату на вашем сайте.
Почему именно они?
На самом деле у каждого свой выбор, но на данный момент могу выделить лишь несколько плюсов:
- Довольно низкая комиссия.
- Можно настроить распределение комиссии.
- Популярные способы оплаты.
- Простое подключение
Но есть и минус: ужасная техническая поддержка. Хоть вы и редко будете к ним обращаться (а может и никогда не обратитесь), но отдел по работе с партнерами крайне ужасен. В онлайн чате вам не помогут, скажут писать на почту, где вам просто, в большинстве случаев, не ответят.
С чего начать?
Для начала зарегистрируйтесь на сайте и добавьте проект, подтвердите владение сайтом и ожидайте одобрения вашего проекта. Как одобрят, так можно переходить к техническому подключению.
Техническое подключение
Нам понадобится Public Key и Secret Key. Они есть в информации о проекте. Затем создадим файл payment.php в корне сайта и напишем переход на страницу оплаты. Предполагается, что у нас есть таблица в базе данных с историей платежей, в которую мы и будем заносить наш платёж.
Структура таблицы следующая:
id (int) — уникальный номер платежа (счётчик)
uid (int) — ID пользователя (покупателя) в вашем проекте
amount (float) — сумма платежа
created_at (timestamp) — дата создания платежа
paid_at (timestamp) — дата оплаты
Теперь напишем скрипт создания платежа и перехода на страницу оплаты:
<?php $public_key = ""; $secret_key = ""; $uid = ""; #где вы храните ID авторизованного пользователя (например в сессии) $amount = 0; #сумма платежа за товар $desc = "Оплата за товар"; $mysqli = @new mysqli(db_host, db_user, db_password, db_name); if (mysqli_connect_errno()) die("error_connect"); $mysqli->query("SET NAMES 'utf8'"); $mysqli->query("INSERT INTO `payments` (`uid`,`amount`) VALUES ('".$uid."','".$amount."') "); $id = $mysqli->insert_id; $sign = md5($amount.$desc.$amount.$secret_key); ?>
<!DOCTYPE html> <html> <head> <title>Перенаправление...</title> <meta charset="utf-8" /> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> </head> <body> <form id="payment" action="https://unitpay.ru/pay/<?= $public_key;?>" method="POST"> <input type="hidden" name="sum" value="<?= $amount;?>" /> <input type="hidden" name="account" value="<?= $id;?>" /> <input type="hidden" name="desc" value="<?= $desc;?>" /> <input type="hidden" name="sign" value="<?= $sign;?>" /> <input type="hidden" name="hideOrderCost" value="true" /> <input style="display:none;" id="btn_payment" type="submit" value="Оплатить" /> </form> <script type="text/javascript"> $("#payment").submit(); </script> </body> </html>
Это один файл, не обращайте внимание, что разделено. Сделано это для подсветки синтаксиса для PHP и HTML.
И теперь нам осталось лишь написать скрипт обработчик, который будет предоставлять услугу:
<?php $method = strtolower($_GET['method']); $mysqli = @new mysqli(db_host, db_user, db_password, db_name); if (mysqli_connect_errno()) die("error_connect"); $mysqli->query("SET NAMES 'utf8'"); $payment = $mysqli->query("SELECT * FROM `payments` WHERE `id` = '".intval($_GET['account'])."'"); if (!$payment) $json['error']['message'] = "Указанный номер счёта не найден"; else if ($payment->paid_at > 0) $json['error']['message'] = "Счёт уже оплачен"; else if ($method == 'check' && $params['orderSum'] != $payment->amount) $json['error']['message'] = "Сумма платежа была изменена"; #обязательно нужно проверять валюту, если у вас стоит цена в 100 долларов, #то изменят на рубли и вы получите 100 рублей, а оплата будет успешной else if ($method == 'check' && $params['orderCurrency'] != 'RUB') $json['error']['message'] = "Сумма платежа была изменена"; else if ($method != 'pay' && count($json) == 0) $json['result']['message'] = 'OK'; if ($method == 'pay') { /* успешное действие */ $json['result']['message'] = 'OK'; } if (count($json) > 0) echo json_encode($json); ?>
Для тех, кто не хочет читать, могут просто скачать исходники: Скачать
Теперь вы можете принимать платежи в автоматическом режиме, а по возможности и оказывать услугу автоматизировано, вместо того, чтобы тратить своё время.