УКР | [ENG](https://hackmd.io/mW_dr90eRriYJ6OpXj7ASA) ![](https://i.imgur.com/ULmPUgP.jpg) # Робота сервісу "Cipher" (Сайфер) **"Cipher"** - це сервіс Оператора, що встановлюється на сервері Партнера та виконує функцію криптоперетворення даних для взаємодії з системою Оператора. :::success [Завантажити сервіс "Cipher" (для Linux) >>](https://drive.google.com/file/d/10l2S4dLmcA1hRd6SXsyISyUlLZX9U9pu/view) ::: ## Конфігурація сервісу Для початку роботи необхідно налаштувати конфігурацію сервісу, що знаходиться у файлі: cipher/config/config.toml ### Ключі конфігурації *Загальну інформацію по формуванню запитів та опис ключів див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).* | Ключ | Опис | Приклад | |:-:|-|:-:| |`Port`|Порт, на якому працюватиме сервіс "Cipher".|`1111`| |`PartnerToken`|Унікальний ідентифікатор Партнера в системі Оператора (токен Партнера).|`72a8ddb8-9145-4a41-af1a-8c48ecaa4be1`| |`XpayKey`|Відносний шлях до файлу *публічного ключа* Оператора, яким шифрується пакет даних.|`keys/xpay`| |`Key`|Відносний шлях до файлу *приватного ключа* Партнера, яким підписується пакет даних.|`keys`| ## Шифрування даних Шифрування даних проводиться надсиланням повністю сформованого пакета даних, або застосуванням більш спрощеного варіанту - надсиланням даних “Data” для формування пакета з зашифрованими даними. ### 1. Надсилання сформованого пакета даних для шифрування **URL:** `http://localhost:<порт_конфігурації>/cipher` Партнер надсилає сервісу "Cipher" повністю сформований пакет даних, у відповідь - сервіс повертає пакет з зашифрованими даними, зашифрованим ключем та підписом. Надсилання сформованого пакета даних застосовується, наприклад, за наявності у Партнера двох і більше токенів ("PartnerToken"), і необхідно в запиті вказати, який саме бере участь в операції. Параметри "KeyAES" та "Sign" у структурі даних для шифрування передаються порожніми або відсутні. :::success <details> <summary>Приклад надсилання пакета даних для шифрування</summary> <br> ~~~md curl -X POST http://localhost:1111/cipher -d '{"Partner":{"PartnerToken":"72a8ddb8-9145-4a41-af1a-8c48ecaa4be1","OperationType":22222},"Data":{"ID":"380123456789","Sum":17300,"DateTime":"20220624 15:56:38"}}' ~~~ </details> ::: :::success <details> <summary>Приклад відповіді сервісу "Cipher"</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 22222 }, "Data": "MlztSNrb+mYKy37I3EkqUIUy+fnr03HUiMaFZA+xRPlRQFlSEJDA66AbutTPvNNK", "KeyAES": "AE0Mk+IID+BHx5uVAnCHDKDZsRhzHVZj+yjej/tT09PyCwc6T5U6e3ou9DEAalkDLvL4KDZiYKW3CTzTx87joO17/Yu9H1gNrhRztUqhrsqGbgZ+Usd5s8z6S72ML4o1qEDFid7VlJqM/Fq95PE0WV2FoStn9PjXCOKYdmRyzYHtqGZ/iQLv+3oR8jQ6ZAI1M/Yc/8F7pwFdavnVxlptMy0UiRjPDeqGgwcYG5+RVPNM7nTM/WarcPgnJEx71WJv50N0hE5n36avolINFZxmjuh2uImvGd1GvoxP1p/F+YkZ4izNJRcc69CY5+pH9jd4nXPMRkEvJyXGziauBElajg==", "Sign": "E/qTx4R5IutFuQgXD4FMppoT3nB1e8fdVizt1mgHYhM0pD3NFInAOdT550a/DkVgxDkK0qKyInUVUcjBD8VESzflbULljHFaQ+vFaIRdxTmKbWFc4JcSLSNhePxsP8MYSxXo5g5gNozYHG3QGr+JHv+Xc7rcr7izdPtzUVtZXO1VZDdHSfAYC1oJFpFj02kH3uqEZNv3EyWNoI81p5erZwzCsdcjMvRbfAf9s8mtqsi6ZGH2KpSA4YJChTcAEsV5ehOI5kbYQjYh5IuSDVubEUtxBp1aUAeg0wH9mK0915IHw5RuZIYHu1gkjdMkGHbXiJHqZcYgmOvkeQE1fsxl8Q==" } ~~~ </details> ::: ### 2. Надсилання даних "Data" для шифрування **URL:** `http://localhost:<порт_конфігурації>/packet/<тип_операції>` Партнер надсилає сервісу "Cipher" лише рядок даних "Data" для шифрування, у відповідь - сервіс повертає сформований пакет з зашифрованими даними, зашифрованим ключем та підписом. При цьому на URL адресу необхідно передати тип операції, для якої формується пакет даних. :::success <details> <summary>Приклад надсилання даних для шифрування</summary> <br> ~~~md curl -X POST http://localhost:1111/packet/22222 -d '{"ID":"380123456789","Sum":17300,"DateTime":"20220624 15:56:38"}' ~~~ </details> ::: :::success <details> <summary>Приклад відповіді сервісу "Cipher"</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 22222 }, "Data": "MlztSNrb+mYKy37I3EkqUIUy+fnr03HUiMaFZA+xRPlRQFlSEJDA66AbutTPvNNK", "KeyAES": "AE0Mk+IID+BHx5uVAnCHDKDZsRhzHVZj+yjej/tT09PyCwc6T5U6e3ou9DEAalkDLvL4KDZiYKW3CTzTx87joO17/Yu9H1gNrhRztUqhrsqGbgZ+Usd5s8z6S72ML4o1qEDFid7VlJqM/Fq95PE0WV2FoStn9PjXCOKYdmRyzYHtqGZ/iQLv+3oR8jQ6ZAI1M/Yc/8F7pwFdavnVxlptMy0UiRjPDeqGgwcYG5+RVPNM7nTM/WarcPgnJEx71WJv50N0hE5n36avolINFZxmjuh2uImvGd1GvoxP1p/F+YkZ4izNJRcc69CY5+pH9jd4nXPMRkEvJyXGziauBElajg==", "Sign": "E/qTx4R5IutFuQgXD4FMppoT3nB1e8fdVizt1mgHYhM0pD3NFInAOdT550a/DkVgxDkK0qKyInUVUcjBD8VESzflbULljHFaQ+vFaIRdxTmKbWFc4JcSLSNhePxsP8MYSxXo5g5gNozYHG3QGr+JHv+Xc7rcr7izdPtzUVtZXO1VZDdHSfAYC1oJFpFj02kH3uqEZNv3EyWNoI81p5erZwzCsdcjMvRbfAf9s8mtqsi6ZGH2KpSA4YJChTcAEsV5ehOI5kbYQjYh5IuSDVubEUtxBp1aUAeg0wH9mK0915IHw5RuZIYHu1gkjdMkGHbXiJHqZcYgmOvkeQE1fsxl8Q==" } ~~~ </details> ::: ![](https://i.imgur.com/17gAyWb.png) :arrow_left: [XPAY API Зміст](/Mj2ZqCVpSq6A6Jzm6ladlw) :arrow_left: [XPASS API Зміст](https://hackmd.io/eSq3juGWQLS1wVvJZiTUAQ) :arrow_left: [Загальна інформація по підключенню (API)](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA) <details> <summary>Служба підтримки XPAY</summary> </br> Телефон: +38 093 891 92 00 Email: info@xpay.com.ua Telegram: @xpaysupportbot </details>