Jump to content

Problém s HeurekaOvereno


retep

Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...