Разработка платёжного модуля для OpenCart
В админке CMS, в форме настройки модуля вводится 2 параметра:
* Строка ID магазина из системы-эвайринга (строка до 32 символов)
* Строка приватного ключа из системы-эвайринга (строка до 128 символов)
Страница оплаты: вывод этой страницы в на сайте магазина.
Формат адреса страницы оплаты:
https:// payment . online /p/[ShopID]/[OrderID]/[Amount]/[Hash]
Где:
* ShopID – id магазина из системы-эвайринга (регистронезависимое)
* OrderID – номер ордера из интернет-магазина/CMS (латиница без спец.символов и пробелов, регистронезависимое)
* Amount – число, сумма по ордера (дробная часть через символ "." точка)
* Hash – подпись ордера(регистронезависимое), формируется на стороне интернет-магазина (CMS). Пример на php: ```$Hash = md5($PrivKey.";".$OrderID.";".$Amount);```
Скрипт для приема/обработки информации с системы-эвайринга (webhook).
Система передаёт следующую информацию в формате JSON:
```
{
"order_id": "fd-1240",
"status": "executed"
}
```
Где:
* order_id – номер ордера из интернет-магазина
* status – может быть:
* * "executed" – выполнен
* * "opened" – открыт, не исполнен, в ожидание
* * "canceled" – отменен
* * "error#1023" – ошибка, через # номер ошибки
При отмене ордера в интернет-магазине должно срабатывать событие для отмены ордера в системе-эвайринга (/api/v1/cancelorder).
В админке интернет-магазина у ордера(заказа) должна быть кнопка ручной проверки статуса ордера в системе-эвайринга (/api/v1/checkorder).
API системы-эвайринга:
* /api/v1/checkorder/[ShopID]/[OrderID] – проверка состояние ордера, ручная проверка для CMS
* * Возвращаемые данные в JSON:
* * {"status": "opened"}
* * значения 'status' смотрите выше.
* /api/v1/cancelorder/[ShopID]/[OrderID]/[Hash] – отменить Ордер (из *.CMS)
* * Возвращаемые данные в JSON:
* * {"status": "canceled"}
* * значения 'status' может быть: закрыт->"canceled" или ошибка с номером её->"error#1234"