Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".
Дата публикации: 30.12.2017
Дата обновления: 18.12.2021
PHP класс для приёма платежей от Тинькофф банка позволит вам в разы сократить время на подключение и полный разбор всей документации Тинькофф банка и свою разработку скриптов которые будут обрабатывать платежи.
Также хочу выделить хорошую и быструю поддержку банка, как обычную поддержку, так и техническую — способная адекватно и чётко ответить на ваши вопросы, а также решить некие проблемы связанные с использованием АПИ банка.
Однако в процессе ярой разработки у АПИ вылетела 500 ошибка, что позволила мне посмотреть как и что работает. Ознакомиться с данной информацией вы можете здесь — https://pastebin.com/fhLNhYS0, В основном Jetty, springframework (Java)
Говоря о рекуррентных платежах, при подключении вас попросят:
При тестировании тест-кейсов в личном кабинете не используйте рекуррентные платежи. Сумма в чеке Receipt.Amount высчитывается как Price * Quantity. Запросы все посылаются через POST CURL запрос указывать Content-Type Json очень важно, также и отправлять через json_encode
Принцип использования класса:
1. Создаете файл tinkoff.params.php, желательно подключить базу через PDO.
<?php
use NeatekTinkoff\NeatekTinkoff\NeatekTinkoff;
require_once 'tinkoff.class.php';
$tinkoff = new NeatekTinkoff(
array(
array(
'TerminalKey' => '', // Терминал
'Password' => '', // Пароль
),
array(
// Подключение к БД через PDO
'db_name' => '',
'db_host' => '',
'db_user' => '',
'db_pass' => '',
),
)
);
2. Создаете index.php для перекидывания на платёж, только уберите SetRecurrent() если не нужны рекуррентные платежи.
<?php
require_once 'tinkoff.params.php';
$tinkoff->AddMainInfo(
array(
'OrderId' => 1, // Не будет работать при подключении к БД, будет автоматически ставиться свой номер заказа из базы данных, рекомендуется всегда оставлять значение = 1 при использовании PDO DB
'Description' => 'Описание заказа до 250 символов', // Описание заказа
'Language' => 'ru', // Язык интерфейса Тинькофф
)
);
$tinkoff->SetRecurrent(); // Указать что рекуррентный платёж, можно не указывать
$tinkoff->AddItem(
array(
'Name' => 'Название товара 128 символов', // Максимум 128 символов
'Price' => 100, // В копейках
"Quantity" => (float) 1.00, // Вес или количество
"Tax" => "none", // В чеке НДС
)
);
$tinkoff->SetOrderEmail('neatek@icloud.com'); // Обязательно указать емайл
//$tinkoff->SetOrderMobile('+79999999999'); // Установить мобильный телефон
$tinkoff->SetTaxation('usn_income'); // Тип налогообложения
//$tinkoff->DeleteItem(0); // Можно удалить товар по индексу
$tinkoff->Init(); // Инициализация заказа, и запись в БД если прописаны настройки
$tinkoff->doRedirect(); // Переадресация на оплату заказа
Далее пользователь оплачивает заказ, и после чего идёт от банка уведомление на наш скрипт, который ниже об успешном платеже.
3. Обработка нотификаций (уведомлений)
<?php
require_once 'tinkoff.params.php';
$tinkoff->getResultResponse(); // Ответ на нотификации
4. Рекуррентные платежи, можете указать что угодно здесь.
<?php
require_once 'tinkoff.params.php';
$recurrents = $tinkoff->getLatestForRecurrent();
if (!empty($recurrents)) {
foreach ($recurrents as $column => $client) {
/**
* Params for Init *
*/
$params = array(
// Сумма всех Items.Amount
'Amount' => (string)$client['Amount'],
// Номер заказа берется из DB
'OrderId' => (string)$client['order_id'],
// из DB
'Description' => $client['Description'],
);
$params['DATA'] = (object) array(
'Email' => $client['Email'],
);
$params['Receipt'] = (object) array(
// Береться из DB
'Email' => $client['Email'],
// Налогообложение
'Taxation' => 'usn_income',
// С предметами в чеке, можно добавить что вам нужно
'Items' => array(
(object) array(
'Name' => 'Описание товара 128 символов',
'Price' => $client['Amount'],
"Quantity" => 1.00,
// Amount = Price * Quantity
"Amount" => $client['Amount'],
"Tax" => "none",
),
),
);
/**
* Charge - повторый платёж *
*/
$tinkoff->Charge($tinkoff->Init($params, '[Automatic]'), $client);
}
}
В принципе всё.
Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".