retep Posted May 7, 2013 Share Posted May 7, 2013 Zdravím, mám shop bežiaci na PS 1.3.6 už dlhšiu dobu bez problémov, implementovaný skript pre HeurekaOvereno v PaymentModule a v cashondeliverywithffee posielajúci Heureke objednávky. Včera (6.5.) mi Heureka píše, že nedostáva všetky objednávky asi od 26.4. Aktualizoval som ich skript (pridali číslo objednávky), vykonal skúšobnú objednávku a - nič. Vôbec to nefunguje, netuším kde je chyba. Tu je HeurekaOvereno umiestnená v config <?php /** * Objednavka dotazniku spokojenosti * * Ukazka pouziti * * Nazvy produktu preferujeme v kódování UTF-8. Pokud název produktu * převést nedokážete, poradíme si s WINDOWS-1250 i ISO-8859-2 * * <code> * try { * $overeno = new HeurekaOvereno('API_KLIC'); * // pro slovenske obchody $overeno = new HeurekaOvereno('API_KLIC', HeurekaOvereno::LANGUAGE_SK); * $overeno->setEmail('[email protected]'); * $overeno->addProduct('Nokia N95'); * // nebo predat produkty pomoci itemId $overeno->addProductItemId('B1234'); * $overeno->send(); * } catch (Exception $e) { * print $e->getMessage(); * } * </code> * @author Ondrej Cech <[email protected]> */ class HeurekaOvereno { /** * Zakladni URL * * @var String */ const BASE_URL = 'http://www.heureka.cz/direct/dotaznik/objednavka.php'; const BASE_URL_SK = 'http://www.heureka.sk/direct/dotaznik/objednavka.php'; /** * ID jazykovych mutaci * * @var int */ const LANGUAGE_CZ = 1; const LANGUAGE_SK = 2; /** * Hlaseni OK * * @var String */ const RESPONSE_OK = 'ok'; /** * API klic pro identifikaci obchodu * * @var String */ private $apiKey; /** * Email zakaznika * * @var String */ private $email; /** * Pole objednanych produktu * * @var Array */ private $products = array(); /** * Cislo objednavky * * @var Int */ private $orderId; /** * ID jazykove mutace * * @var int */ private $languageId = 2; /** * Pole objednanych produktu - podle itemId * * @var Array */ private $productsItemId = array(); /** * Konstruktor tridy * * @param String $apiKey API klic pro identifikaci obchodu * @param Int $languageId Nastaveni jazykove mutace sluzby spolu se spravnou URL */ public function __construct ($apiKey, $languageId = self::LANGUAGE_CZ) { $this->apiKey = $apiKey; $this->languageId = $languageId; } /** * Setter pro email * * @param String $email Email zakaznika, kteremu bude odeslat dotaznik */ public function setEmail ($email) { $this->email = $email; } /** * Pridava objednane produkty do pozadavku * * Nazvy produktu preferujeme v kódování UTF-8. Pokud název produktu * převést nedokážete, poradíme si s WINDOWS-1250 i ISO-8859-2 * * @param String $productName Nazev objednaneho produktu */ public function addProduct ($productName) { $this->products[] = $productName; } /** * Pridava cislo objednavky * * Timto cislem bude oznacen vyplneny dotaznik * * @param Int $orderId cislo objednavky */ public function addOrderId ($orderId) { $this->orderId = $orderId; } /** * Pridava item ID nakoupeneho produktu * * @param string itemId Item ID produktu */ public function addProductItemId ($itemId) { $this->productsItemId[] = $itemId; } /** * Provadi HTTP pozadavek na server * * @param String $url Volana URL adresa * @return String Odpoved ze serveru */ private static function sendRequest ($url) { $parsed = parse_url($url); $fp = fsockopen($parsed['host'], 80, $errno, $errstr, 5); if (!$fp) { throw new Exception ($errstr . ' (' . $errno . ')'); } else { $return = ''; $out = "GET " . $parsed['path'] . "?" . $parsed['query'] . " HTTP/1.1\r\n" . "Host: " . $parsed['host'] . "\r\n" . "Connection: Close\r\n\r\n"; fputs($fp, $out); while (!feof($fp)) { $return .= fgets($fp, 128); } fclose($fp); $returnParsed = explode("\r\n\r\n", $return); return empty($returnParsed[1]) ? '' : trim($returnParsed[1]); } } /** * Vraci URL pro zadanou jazykovou mutaci * * @return String */ private function getUrl () { return self::LANGUAGE_CZ == (int) $this->languageId ? self::BASE_URL : self::BASE_URL_SK; } /** * Odesila pozadavek na objednani dotazniku * * @return Bool true */ public function send () { if (empty($this->email)) { throw new Exception('Je nutné vyplnit elektronickou adresu'); } // Stavime URL $url = $this->getUrl() . '?id=' . $this->apiKey . '&email=' . urlencode($this->email); foreach ($this->products as $product) { $url .= '&produkt[]=' . urlencode($product); } foreach ($this->productsItemId as $itemId) { $url .= '&itemId[]=' . urlencode($itemId); } if (isset($this->orderId)) { $url .= '&orderid=' . urlencode($this->orderId); } // Odesilame pozadavek a kontrolujeme stav $contents = self::sendRequest($url); if (false === $contents) { throw new Exception ('Nepodarilo se odeslat pozadavek'); } elseif (self::RESPONSE_OK == $contents) { return true; } else { throw new Exception ($contents); } } } a takto to volám v PaymentModule umiestnené v classes /* Heureka – ověřeno zákazníky */ require_once(dirname(__FILE__).'/../config/HeurekaOvereno.php'); try { $overeno = new HeurekaOvereno('xxx', HeurekaOvereno::LANGUAGE_SK); $overeno->setEmail($customer->email); foreach ($products AS $product) { $overeno->addProduct($product['name']); $overeno->addProductItemId($product['reference']); } $overeno->addOrderId($order->id); $overeno->send(); } catch (Exception $e) { // nastavení pro zalogování chyby print $e->getMessage(); } /* koniec heureka skript */ Prosím o radu, ako zistiť prečo to nefunguje Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now