- Подключение классов
- Класс CustomerInfo
- Класс NewPay
- Файл callback.php
- Вспомогательный класс для form.php IndexForm
- Демо
Класс предназначен для работы с методами API банка mandarin Класс включает в себя следующие методы:
- Оплата через API форм
- Создание транзакции без привязки карты
- Создание привязки карты
- Создание транзакции по привязанной карте
- Создание транзакции на повторное списание (rebill)
- Создание транзакции по известному номеру карты
- Уведомления о статусе транзакций и привязок карт
Подробно о структуре и необходимых файлах:
-
Папка Class содержит основные классы непосредственно для работы а так же вспомогательные классы, для работы с базой данных.
-
Папка css содержит файлы, отвечающие за форматирование внешнего вида файла index.php;
-
Папка fonts содержит шрифты для index.php;
-
Папка js содержит js скрипты и библиотеки для index.php;
-
Файл callback.php принимает callback уведомления от сервера.
-
Файл form.php основная логика по обработке формы, и работы с базой данных.
-
Файл index.php содержит в себе таблицу всех запросов, а так же форму для создания запроса.
Теперь подробнее о классах и о их методах.
Для начала мы подключаем наши классы из папки Class:
spl_autoload_register(function ($class_name) {
require_once 'Class/' . $class_name . '.php';
});
Класс принимающий некоторые поля данных пользователя.
$costumerinfo = new CustomerInfo($array_form['email'], $array_form['phone']);
Подробнее о каждом параметре.
- 1ый параметр - EMAIL ПОЛЬЗОВАТЕЛЯ
- 2ой параметр — НОМЕР ТЕЛЕФОНА (обязательно в формате +7ХХХХХХХХХХ, иначе API не примет номер)
Класс занимающийся основными операциями по взаимодействию с API
$new_user = new NewPay('216','123321','https://secure.mandarinpay.com/');
Подробнее о каждом параметре.
- 1ый параметр - mercantId можно получить в клиентском интерфейсе.
- 2ой параметр - secret он же sharedsec так же можно получить в клиентском интерфейсе.
- 3ий параметр - Базовый url API
Параметрами по умолчанию являются приведенные в примере выше. Это является оптимальным быстрым стартом для быстрой отладки вашего проекта.
Генерирует скрытую форму оплаты с видимой кнопкой оплатить.
Пример вызова:
$form=$new_user->generate_form($orderid, $price, $customer_mail)
Подробнее о каждом параметре.
1ый параметр - Уникальный номер заказа в вашей системе. 2ой параметр - Сумма платежа. Обязательна к передаче. 3ий параметр - email Пользователя.
В ответ вы получите скрытую форму с видимой кнопкой купить, после нажатия на неё Пользователя отправит на страницу оплаты.
Создание транзакции без привязки карты.
Пример вызова:
$operation = $new_user->pay_interactive($orderid, $price, $costumerinfo);
Подробнее о каждом параметре.
1ый параметр - Уникальный номер заказа в вашей системе. 2ой параметр - Сумма платежа. Обязательна к передаче. 3ий параметр - Экземпляр класса custumer info
В ответ вы получите:
Успешно:
{
"id": "43913ddc000c4d3990fddbd3980c1725",
"userWebLink": "https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518"
}
Неуспешно:
{
"error": "Invalid request"
}
Метод схож с pay_interactive разница в том, что этот метод нужен для выплат.
Привязка новой карты
Пример вызова:
$operation = $new_user->new_card_binding($costumerinfo);
Подробнее о каждом параметре.
1ый параметр - Экземпляр класса custumer info
В ответ вы получите:
Успешно:
{
"id": "0eb51e74-e704-4c36-b5cb-8f0227621518",
"userWebLink": "https://secure.mandarinpay.com/CardBindings/New?id=0eb51e74-e704-4c36-b5cb-8f0227621518"
}
Неуспешно:
{
"error": "Invalid request"
}
Полученный id следует сохранить, а пользователя перенаправить по ссылке, полученной в поле userWebLink. Привязанную карту можно будет использовать после получения callback-уведомления об её успешной привязке.
Создание транзакции по привязанной карте
Пример вызова:
$operation = $new_user->pay_from_card_binding($orderid, $price, $id_card);
Подробнее о каждом параметре.
1ый параметр - Уникальный номер заказа в вашей системе. 2ой параметр - Сумма платежа. Обязательна к передаче. 3ий параметр - ID успешно привязанной карты.
В ответ вы получите:
Успешно:
{
"id": "43913ddc000c4d3990fddbd3980c1725"
}
Неуспешно:
{
"error": "Invalid request"
}
Транзакция будет совершена в асинхронном режиме, ожидайте получение callback-вызова
Метод схож с payout_from_card_binding разница в том, что этот метод нужен для выплат.
Создание транзакции на повторное списание (rebill)
Пример вызова:
$operation = $new_user->rebill_transaction($orderid, $price, $id_card);
Подробнее о каждом параметре.
1ый параметр - Уникальный номер заказа в вашей системе. 2ой параметр - Сумма платежа. Обязательна к передаче. 3ий параметр - ID успешно привязанной карты.
В ответ вы получите:
Успешно:
{
"id": "43913ddc000c4d3990fddbd3980c1725"
}
Неуспешно:
{
"error": "Invalid request"
}
Транзакция будет совершена в асинхронном режиме, ожидайте получение callback-вызова
Создание транзакции по известному номеру карты
Пример вызова:
$operation = $new_user->payout_to_known_card($orderid, $price, $costumerinfo, $card_num);
Подробнее о каждом параметре.
1ый параметр - Уникальный номер заказа в вашей системе. 2ой параметр - Сумма платежа. Обязательна к передаче. 3ий параметр - ID успешно привязанной карты. 4ый параметр - Номер карты.
Следует использовать ТОЛЬКО если номер карты был получен ЛИЧНО от клиента на бумаге без участия вашего веб-сайта. Ввод номера карты на вашем сайте без прохождения процедуры сертификации PCI-DSS недопустим.
В ответ вы получите:
Успешно:
{
"id": "43913ddc000c4d3990fddbd3980c1725"
}
Неуспешно:
{
"error": "Invalid request"
}
Транзакция будет совершена в асинхронном режиме, ожидайте получение callback-вызова
Проверка совпадения sign Для подтверждения того, что уведомление пришло именно от системы MandarinPay необходимо проверять значение поля sign.
Пример вызова:
$calc_sigh = $testform->check_sign($_POST);
Служит для приема данных от API на ваш сервис.
Пример:
<?php
spl_autoload_register(function ($class_name) {
require_once 'Class/' . $class_name . '.php';
});
$testform = new NewPay();
$calc_sigh = $testform->check_sign($_POST);
if ($calc_sigh == true) {
$new_index = new IndexForm('my_database');
$new_index->updtade_status($_POST);
}
Подробнее о методах IndexForm ниже
Вспомогательный класс не имеет отношение к работе с API нужен для обслуживания, и удобной работы примера использования основого класса.
Создание Экземпляра Класса:
$new_index = new IndexForm('my_database');
Подробнее о каждом параметре.
1ый параметр - Имя базы данных(в тестовом варианте работает c SQLite)
Создание и открытие для чтения таблицы
Пример использования:
$new_index->create_and_open_table();
Обработка полученых данных и очистка от спецсимволов
Пример вызова:
$array_form = $new_index->protect_site($_POST);
Подробнее о каждом параметре.
1ый параметр - Массив с данными(1-мерный)
Получение интересующей услуги пользователя.
Пример вызова:
$option_select_num = $new_index->get_option($array_form);
Подробнее о каждом параметре.
1ый параметр - Массив с данными(1-мерный)
Добавления значений в базу данных
Пример использования:
$new_index->create_data_value($array_form, $option_select_num);
Подробнее о каждом параметре.
1ый параметр - Массив с данными(1-мерный) 2ой параметр - Выбранная опция
#method get_order_id
Получить ID последней операции
Пример вызова:
$orderid = $new_index->get_order_id();
Получить ID карточки определенного юзера c успешной привязкой.
Пример вызова:
$id_card = $new_index->get_id_card($array_form);
Подробнее о каждом параметре.
1ый параметр - Массив с данными(1-мерный)
Получить ID карточки определенного юзера c успешной привязкой и транзакцией.
Пример вызова:
$id_card = $new_index->get_id_card_sucsess_pay($array_form);
Подробнее о каждом параметре.
1ый параметр - Массив с данными(1-мерный)
Дозапись в базу данных после выполнения операции и перенаправления пользователя.
Пример вызова:
$new_index->write_and_go($operation, $orderid);
Подробнее о каждом параметре.
1ый параметр - Результат операции 2ой параметр - Уникальный идентефикатор в вашей системе.
Обновляет данные после получения callback вызова.
Пример вызова:
$new_index->updtade_status($_POST);
Подробнее о каждом параметре.
1ый параметр - Данные Callback операции.
Демо пример рабочего приложения, полностью настроенного для ознакомления:
- в index.php — формы для отправки данных;
- в form.php — логика по взаимодействию с классом.
- mydatabase — база данных.