/** * Kontrola stavu platby eshopu * - verifikace parametru z redirectu * - kontrola stavu platby * * @param long $paymentSessionId - identifikator platby * @param long $eshopGoId - identifikator eshopu - GoId * @param string $variableSymbol - identifikator objednavky v eshopu * @param int $totalPriceInCents - celkova cena objednavky v halerich * @param string $productName - popis objednavky zobrazujici se na platebni brane * @param string $secret - kryptovaci heslo pridelene eshopu * * @return $result * result["code"] - kod vysledku volani * result["description"] - popis vysledku volani */ public static function isEshopPaymentDone($paymentSessionId, $eshopGoId, $variableSymbol, $totalPriceInCents, $productName, $secret) { $result = array(); try { /* * Inicializace WS */ ini_set("soap.wsdl_cache_enabled", "0"); $go_client = new SoapClient(GopayConfig::ws(), array()); /* * Sestaveni dotazu na stav platby */ $sessionEncryptedSignature = GopayHelper::encrypt(GopayHelper::hash(GopayHelper::concatPaymentSession((double) $eshopGoId, (double) $paymentSessionId, $secret)), $secret); $payment_session = array("eshopGoId" => (double) $eshopGoId, "paymentSessionId" => (double) $paymentSessionId, "encryptedSignature" => $sessionEncryptedSignature); /* * Kontrola stavu platby na strane GoPay prostrednictvim WS */ $payment_status = $go_client->__call('paymentStatusGW2', array('paymentSessionInfo' => $payment_session)); $result["description"] = $payment_status->resultDescription; $result["code"] = $payment_status->sessionState; /* * Kontrola zaplacenosti objednavky, verifikace parametru objednavky */ if ($result["code"] == GopayHelper::PAYMENT_DONE && !GopayHelper::checkEshopPaymentStatus($payment_status, 'PAYMENT_DONE', (double) $eshopGoId, $variableSymbol, (int) $totalPriceInCents, $productName, $secret) || $result["code"] == GopayHelper::WAITING && !GopayHelper::checkEshopPaymentStatus($payment_status, 'WAITING', (double) $eshopGoId, $variableSymbol, (int) $totalPriceInCents, $productName, $secret) || $result["code"] == GopayHelper::TIMEOUTED && !GopayHelper::checkEshopPaymentStatus($payment_status, 'TIMEOUTED', (double) $eshopGoId, $variableSymbol, (int) $totalPriceInCents, $productName, $secret) || $result["code"] == GopayHelper::CANCELED && !GopayHelper::checkEshopPaymentStatus($payment_status, 'CANCELED', (double) $eshopGoId, $variableSymbol, (int) $totalPriceInCents, $productName, $secret)) { /* * Platba nesprobehla korektne */ $result["code"] = GopayHelper::FAILED; } } catch (SoapFault $f) { /* * Chyba v komunikaci s GoPay serverem */ $result["code"] = GopayHelper::FAILED; $result["description"] = GopayHelper::FAILED; } return $result; }