Webhooks
საქართველოს ბანკის callback-ები
საქართველოს ბანკი card-payment state changes-ისთვის CodeOn-ს signed callbacks-ს უგზავნის. CodeOn raw body-ს parsing-მდე ამოწმებს, event-ს ინახავს და matching order-ზე payment state machine-ს ატარებს.
- მეთოდი
POST- მისამართი
/api/payments/bog/callback
Signature-ის შემოწმება
- წაიკითხეთ raw request body bytes. Verification-მდე parse და re-stringify არ გააკეთოთ.
- წაიკითხეთ
Callback-Signatureheader. - Signature გადაამოწმეთ configured Bank of Georgia callback public key-ით.
- JSON მხოლოდ signature-ის წარმატებით შემოწმების შემდეგ parse-დება.
Order matching
CodeOn ჯერ body.external_order_id-ს იყენებს. ეს არის CodeOn order UUID, რომელიც BoG order-ის შექმნისას იგზავნება. თუ ის აკლია, fallback არის BOG-ის body.order_id, რომელიც order-ზე ინახება.
Idempotency
ყოველი verified event ინახება idempotency key-ით, რომელიც არის sha256(rawBody). Duplicate callback deliveries database layer-ზე no-op ხდება. State machine-იც idempotent არის, რომ განმეორებულმა callback-ებმა იგივე საბოლოო order state-ზე მივიდეს.