22
33namespace OxidEsales \MonduPayment \Core \WebhookHandler ;
44
5+ use OxidEsales \Eshop \Application \Model \Order ;
56use OxidEsales \Eshop \Core \Registry ;
67use OxidEsales \MonduPayment \Model \MonduInvoice ;
78use OxidEsales \MonduPayment \Model \MonduOrder ;
89use Psr \Log \LoggerInterface ;
910use Symfony \Component \HttpFoundation \Response ;
11+ use OxidEsales \Eshop \Core \DatabaseProvider ;
1012
1113class WebhookHandler
1214{
@@ -19,7 +21,9 @@ public function __construct()
1921
2022 public function handleWebhook ($ params )
2123 {
22- $ this ->_logger ->debug ('MonduWebhookHandler [handleWebhook]: ' . print_r ($ params , true ));
24+ $ logger = \OxidEsales \Eshop \Core \Registry::getLogger ();
25+ $ logger ->debug ('MonduWebhooksController [WebhooksSecret]: ' . print_r ($ params , true ));
26+
2327 switch ($ params ['topic ' ]) {
2428 case 'order/confirmed ' :
2529 case 'order/authorized ' :
@@ -42,13 +46,63 @@ public function handleOrderStateChanged($params)
4246 $ monduOrder = $ this ->getOrder ($ params ['order_uuid ' ]);
4347
4448 if ($ monduOrder ) {
49+ if (
50+ stripos ($ params ['topic ' ], 'confirmed ' ) !== false ||
51+ stripos ($ params ['topic ' ], 'authorized ' ) !== false
52+ ) {
53+ $ order = oxNew (Order::class);
54+ $ order ->load ($ monduOrder ->getFieldData ('oemondu_orders__oxid_order_id ' ));
55+
56+ $ sQuery = "
57+ UPDATE
58+ oxorder
59+ SET
60+ oxfolder = 'ORDERFOLDER_NEW',
61+ oxtransstatus = 'OK'
62+ WHERE
63+ OXORDERNR = ' {$ order ->getFieldData ('oxorder__oxordernr ' )}'
64+ " ;
65+ DatabaseProvider::getDb ()->execute ($ sQuery );
66+ } else if (stripos ($ params ['topic ' ], 'declined ' ) !== false ) {
67+ $ order = oxNew (Order::class);
68+ $ order ->load ($ monduOrder ->getFieldData ('oemondu_orders__oxid_order_id ' ));
69+
70+ $ sQuery = "
71+ UPDATE
72+ oxorder
73+ SET
74+ oxfolder = 'ORDERFOLDER_PROBLEMS',
75+ oxtransstatus = 'CANCELLED'
76+ WHERE
77+ OXORDERNR = ' {$ order ->getFieldData ('oxorder__oxordernr ' )}'
78+ " ;
79+ DatabaseProvider::getDb ()->execute ($ sQuery );
80+ }
4581 $ monduOrder ->updateOrderState ($ params ['order_state ' ]);
4682 return [['order ' => $ monduOrder ], Response::HTTP_OK ];
4783 }
4884
4985 return [['error ' => 'Order not found ' ], Response::HTTP_BAD_REQUEST ];
5086 }
5187
88+ public function getWebhookSecretByShopId ($ shopId )
89+ {
90+ return Registry::getConfig ()->getShopConfVar (
91+ 'oemonduWebhookSecret ' ,
92+ $ shopId ,
93+ 'module:oemondu '
94+ );
95+ }
96+
97+ public function getShopId ($ params )
98+ {
99+ $ monduOrder = $ this ->getOrder ($ params ['order_uuid ' ]);
100+ $ order = oxNew (Order::class);
101+ $ order ->load ($ monduOrder ->getFieldData ('oemondu_orders__oxid_order_id ' ));
102+
103+ return $ order ->oxorder__oxshopid ->value ;
104+ }
105+
52106 public function handleInvoiceStateChanged ($ params , $ state )
53107 {
54108 $ this ->_logger ->debug ('MonduWebhookHandler [handleInvoiceStateChanged]: ' . print_r ($ params , true ));
@@ -75,4 +129,4 @@ private function getInvoice($invoiceUuid)
75129 $ monduInvoice ->loadByInvoiceUuid ($ invoiceUuid );
76130 return $ monduInvoice ;
77131 }
78- }
132+ }
0 commit comments