public function checkPaymentStatus($event, $request) { $sql = "SELECT idpaymentmethod FROM paymentmethod WHERE controller = 'paybynet' AND active=1"; $stmt = Db::getInstance()->prepare($sql); $stmt->execute(); $rs = $stmt->fetch(); if (!$rs) { return; } $settings = $this->registry->core->loadModuleSettings('paybynet', Helper::getViewId()); if (empty($settings)) { return; } $id = $request['id']; $sql = "SELECT\n\t\t\t\tidorder\n\t\t\tFROM\n\t\t\t\t`order`\n\t\t\tWHERE\n\t\t\t\tidorder = :id\n\t\t\tAND\n\t\t\t\tpaymentmethodid = :paymentmethodid\n\t\t\tAND\n\t\t\t\torderstatusid = :positiveorderstatusid"; $stmt = Db::getInstance()->prepare($sql); $stmt->bindValue('id', $id); $stmt->bindValue('idpaymentmethod', $rs['idpaymentmethod']); $stmt->bindValue('positiveorderstatusid', $settings['positiveorderstatusid']); $stmt->execute(); if ($stmt->fetch()) { return; } try { $soap = new \SoapClient(self::WSDL); $statusCode = $soap->getStatusByPaymentID($id, $settings['id_client']); } catch (\SoapFault $e) { throw new CoreException('Nie można połączyć się z pbn.paybynet.com.pl'); } $status = 0; if ($statusCode >= 1000 && $statusCode <= 1012) { $status = $settings['verificationrejectedorderstatusid']; $comment = 'Weryfikacja odrzucona'; } else { if ($statusCode == 2303) { $status = $settings['positiveorderstatusid']; $comment = 'Płatność zakończona sukcesem'; } else { if ($statusCode == 2301 || $statusCode == 2302) { $status = $settings['negativeorderstatusid']; $comment = 'Płatność zakończona niepowodzeniem'; } } } if ($status == 0) { return; } $sql = "UPDATE `order` SET orderstatusid = :status WHERE idorder = :idorder"; $stmt = Db::getInstance()->prepare($sql); $stmt->bindValue('status', $status); $stmt->bindValue('idorder', $id); $stmt->execute(); $sql = 'INSERT INTO orderhistory SET content = :content, orderstatusid = :status, orderid = :idorder, inform = 0'; $stmt = Db::getInstance()->prepare($sql); $stmt->bindValue('content', $comment); $stmt->bindValue('idorder', $id); $stmt->bindValue('status', $status); $stmt->execute(); }