Відкритий ключ
Endpoint для отримання Base64-кодованого ECDSA відкритого ключа, який використовується для перевірки підписів webhook.
Monobank підписує всі webhook-повідомлення, що дозволяє перевіряти їх цілісність і справжність. Для цього використовується ECDSA-підпис, який можна перевірити за допомогою відкритого ключа.
Цей розділ описує, як отримати відкритий ключ для верифікації таких підписів. Ви можете кешувати отриманий ключ і оновлювати його лише тоді, коли перевірка підписів почне завершуватися помилкою. Виконувати запит перед кожною верифікацією не потрібно.
Виклик методу для отримання відкритого ключа
Щоб отримати ключ, потрібно скористатися методом getMerchantPubkey.
import { Injectable } from '@nestjs/common';
import { MonobankService } from 'nestjs-monobank';
@Injectable()
export class PubkeyService {
constructor(private readonly monobankService: MonobankService) {}
async getPubkey() {
const pubkey = await this.monobankService.getMerchantPubkey();
return pubkey;
}
}Обробка відповіді від API
У відповіді від API повертається Base64-закодований ECDSA відкритий ключ, який використовується для перевірки підписів webhook.
{
"key": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFK0UxRnBVZzczYmhGdmp2SzlrMlhJeTZtQkU1MQpib2F0RU1qU053Z1l5ZW55blpZQWh3Z3dyTGhNY0FpT25SYzNXWGNyMGRrY2NvVnFXcVBhWVQ5T3hRPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="
}Отриманий ключ можна кешувати та використовувати для верифікації підписів. Новий запит потрібно робити лише тоді, коли підпис перестане успішно проходити перевірку.