Go to file
Pavel Popov 54b4024bf1 Subscriptions (#33)
* HOOK-35: Added customer supporting (#25)

* HOOK-49: Added customers into invoicing (#26)

* HOOK-49: Added customers into invoicing

* Added default handling in switch-cases

* Ft/hook 50/customer handlers (#27)

* HOOK-50: Customer webhooks supporting

* Added empty handlers

* Ft/hook 50/customer handlers (#28)

* HOOK-50: Customer webhooks supporting

* Added empty handlers

* HOOK-50: Customer handlers

* Added sql script

* HOOK-51: Subscriptions completed (#29)

* HOOK-53: Stabilization (#30)

* HOOK-59: backward_compatability (#34)

* Ft/hook 59/fixes (#35)

* HOOK-59: backward_compatability

* HOOK-59: Backward compatability

* Bump damsel version to master
2017-10-23 15:48:10 +03:00
src Subscriptions (#33) 2017-10-23 15:48:10 +03:00
.gitignore HOOK-2: initial commit (#1) 2017-04-13 12:38:34 +03:00
docker-compose.yml HOOK-2: initial commit (#1) 2017-04-13 12:38:34 +03:00
Jenkinsfile HOOK-33: up damsel version (#19) 2017-07-17 14:05:35 +03:00
pom.xml Subscriptions (#33) 2017-10-23 15:48:10 +03:00
README.md HOOK-28: fixed signature format (#16) 2017-05-17 13:22:32 +03:00

webhooker (hooker)

Сервис вебхуков

Build Status

  1. Сервис предоставляет интерфейс для CAPI для создания, удаления вебхуков, установки/редактирования опций вебхука (таких как url, public/private keys - они генерируются сервисом, типы событий).
  2. Сервис поллит bustermaze на появление событий, по которым должны отправляться сообщения мерчантам

Интерфейс для capi доступен по пути /hook

Для более подробного ознакомления со структурой объектов можно воспользоваться ссылкой на сам объект webhooker.thrift

Подробная информация по протоколу отправки сообщений мерчантам описана в swagger-спецификации

Пример запроса к мерчанту

curl -v -X POST 
-H "Content-Type: application/json; charset=utf-8" 
-H "Content-Signature: alg=RS256; digest=QydtAwZ8jmmrX1wP87vAJIXVBiRZe3Zo5xRYnzMQIsDxxsVn26XGMBeD4op8_9LmXIAirYWd53gfX638ZR83D2pTSCXkNpzHyqiyzhPlH2asaC9qiiOOWaQ-kHk9xFlOcMa1Qtt0BaVst-tbGDsFhgjl6tvGuN4JHRq5khzl_iIJ_ZQniEuzGOYReWn8wCLmaspX0MPyACMTo8HDwyihOHB1_RQBliBFYyvw523xvSQ6WxWYjYhFsjglIg1wdKUMyaiScw0kmKm53OdxDAnjl4MPQmtryuANjbklN8_EatOrQAqGwRUp1ayR_3WMlayhpxaEHlG1sAHQaaO3ulI35g==" 
-d '{"eventID":27,"occuredAt":"2017-05-16T13:49:34.935099Z","topic":"InvoicesTopic","eventType":"PaymentCaptured","invoice":{"id":"qXMiygTqb2","shopID":1,"createdAt":"2017-05-16T13:49:32.753723Z","status":"unpaid","reason":null,"dueDate":"2017-05-16T13:59:32Z","amount":100000,"currency":"RUB","metadata":{"type":"application/json","data":"eyJpbnZvaWNlX2R1bW15X2NvbnRleHQiOiJ0ZXN0X3ZhbHVlIn0="},"product":"test_product","description":"test_invoice_description"},"payment":{"id":"1","createdAt":"2017-05-16T13:49:33.182195Z","status":"captured","error":null,"amount":100000,"currency":"RUB","paymentToolToken":"5Gz2nhE1eleFGBAcGe9SrA","paymentSession":"2nTYVgk6h85O7vIVV9j4pA","contactInfo":{"email":"bla@bla.ru","phoneNumber":null},"ip":"10.100.2.1","fingerprint":"test fingerprint"}}
' https://{host}:{port}/{path}

Мерчант, используя публичный ключ и имея в распоряжении тело запроса, подпись, алгоритм подписи и хэширования, может произвести проверку подписи