Интеграция с платежными системами
Введение
L-Shop позволяет быстро добавлять интеграцию с платежными системами, отличными от стандартных.
Ход
Для того, чтобы добавить интеграцию с платежной системой вам нужно:
Создать класс и имплементировать интерфейс
App\Services\Purchasing\Payers\Payer
.Написать реализацию для 5 методов:
paymentUrl()
,validate()
,successAnswer()
,name()
,enabled()
.
Зарегистрировать реализацию этой платежной системы.
Перейдите в файл
/config/purchasing.php
.Добавьте полное имя класса нового payer'а в элемент массива
payers
.
Сбросьте кэш приложения, дабы новая конфигурация закэшировалась.
Спецификация
Ключевые слова "ДОЛЖЕН”, “НЕ ДОЛЖЕН”, “ ТРЕБУЕТСЯ”, “СЛЕДУЕТ”, “НЕ СЛЕДУЕТ”, “РЕКОМЕНДУЕТСЯ”, “МОЖЕТ” должны интерпретироваться так же, как описано в RFC 2119.
Класс payer ДОЛЖЕН реализовывать интерфейс
App\Services\Purchasing\Payers\Payer
.РЕКОМЕНДУЕТСЯ добавлять к имени класса суффикс Payer, дабы класс можно было идентифицировать по названию.
РЕКОМЕНДУЕТСЯ помещать payer'ы в неймспейс
App\Services\Purchasing\Payer
.Реализация метода
paymentUrl()
ДОЛЖНА возвращать строку, являющуюся URL'ом по которому необходимо будет перейти пользователю для совершения оплаты.Реализация метода
validate()
ДОЛЖНА возвращать результат валидации принятых данных, которые сформировала платежный сервис для сообщения о статусе платежа. Булево значениеtrue
означает, что принятые данные валидны,false
- невалидны.Реализация метода
validate()
МОЖЕТ бросать исключение типаApp\Exceptions\Payer\InvalidPaymentDataException
в случае невалидности полученных данных.Реализация метода
successAnswer()
ДОЛЖНА возвращать строку, которая будет возвращена платежному сервису в случае валидности данных, переданных в методvalidate()
в ответ на запрос о сообщении статуса платежа.Реализация метода
name()
ДОЛЖНА возвращать строку, являющуюся именем платежной системы. Это значение будет видеть пользователь при взаимодействии с системой.Реализация метода
enabled()
ДОЛЖНА возвращать булево значение, которое говорит о том, доступна ли данная реализация payer'а для работы или нет.
Last updated