Webhook
Нэхэмжлэл төлөгдсөн, цуцлагдсан, хугацаа хэтэрсэн үед манай сервер мерчантын бүртгүүлсэн event хүлээн авах хаяг руу дараах бүтэцтэйгээр Event явуулна.
Event-н дата нь ирэхдээ цахим гарын үсэгтэй ирэх бөгөөд гарын үсгийг Лэндмн-с өгсөн public key-н тусламжтай баталгаажуулна.
Хэрвээ баталгаажуулалт хийхгүй тохиолдолд нэхэмжлэлийг лавлах api дуудаж тухайн нэхэмжлэлийг баталгаажуулж болно.
Example
// json data received
$content = trim(file_get_contents("php://input"));
$decoded = json_decode($content, true);
//If json_decode failed, the JSON is invalid.
if (!is_array($decoded)) {
throw new Exception('Received content contained invalid JSON!');
}
// received event
$eventType = $decoded['eventType'];
$data = $decoded['data'];
$signature = $decoded['signature'];
//
unset($decoded['signature']);
// public key
$publicKey = './data/public.pem';
$publicKeyPem = openssl_pkey_get_public(file_get_contents($publicKey));
$dataNotVerified = json_encode($decoded, JSON_UNESCAPED_UNICODE);
// өгөгдөл зөв эсэхийг шалгах
$isValid = openssl_verify($dataNotVerified, base64_decode($signature), $publicKeyPem, 'sha256WithRSAEncryption');
// алдаатай өгөгдөл
if (0 == $isValid) {
throw new Exception('Signature error!');
}
// Нэхэмжлэлийн дугаар
$invoiceNumber = $data['invoiceNumber'];
$description = $data['description'];
$status = $data['status'];
$amount = $data['amount'];
$trackingData = $data['trackingData'];
$createdAt = $data['createdAt'];
$expireDate = $data['expireDate'];
$paidDate = $data['paidDate'];
//
switch ($eventType) {
case 'invoice.paid':
// ..
break;
case 'invoice.cancelled':
// ..
break;
case 'invoice.expired':
// ..
break;
}