Jump to content
  • 0

Oficjalna wtyczka PayU a zliczanie konwersji przez Google Analytics


hakeryk2

Question

Witam,

 

Odkryłem ostatnio, że oficjalna wtyczka PayU (o ta -> https://github.com/PayU/plugin_prestashop) nie jest kompatybilna z oficjalnym modułem Google Analytics do presty, przez co nie można mierzyć konwersji oraz śledzić skąd trafiła do nas osoba, która wykonała zamówienie.

 

Problemem wtyczki jest to, że po wykonanej płatności przenosi ona nas od razu nie na stronę podsumowania zamówienia jak to zawsze bywa, lecz na stronę śledzenia zamówienia gdzie nie umieszczony jest hook ganalytics. Czy ktoś wie może jak sprawić by ten moduł PayU przekazał informacje do Ganalytics?

 

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

O ile dobrze pamiętam te zamówienia były doliczane jeśli wejdziesz w panelu w takie zamówienie ale to musiałbyś ewentualnie sprawdzić czy dalej tak to działa.

 

PS: Osobiście nie jestem zwolennikiem przekazywania do G aż tylu danych ;)

Link to comment
Share on other sites

  • 0

No niestety nie przekazuje danych. Mam statystyki ze wszystkich innych metod płatności, również PayPal, ale PayU nie ma szans.

 

Teraz sprawdziłem hooki i wyszły na to, że moduł PayU głównie był w kolejności za modułem Google analytics jeśli ma to jakieś znaczenie. Przestawiłem i może coś wyjdzie, choć chyba rozwiązaniem będzie jakoś dodanie hooka ganalytics do podstrony z historią zamówienia. 

 

 

 

 

Link to comment
Share on other sites

  • 0

Głównym hookiem Ganalytics jest displayOrderConfirmation 

 

	public function hookOrderConfirmation($params)
	{
		$order = $params['objOrder'];
		if (Validate::isLoadedObject($order) && $order->getCurrentState() != (int)Configuration::get('PS_OS_ERROR'))
		{
			$ga_order_sent = Db::getInstance()->getValue('SELECT id_order FROM `'._DB_PREFIX_.'ganalytics` WHERE id_order = '.(int)$order->id);
			if ($ga_order_sent === false)
			{
				Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'ganalytics` (id_order, id_shop, sent, date_add) VALUES ('.(int)$order->id.', '.(int)$this->context->shop->id.', 0, NOW())');
				if ($order->id_customer == $this->context->cookie->id_customer)
				{
					$order_products = array();
					$cart = new Cart($order->id_cart);
					foreach ($cart->getProducts() as $order_product)
						$order_products[] = $this->wrapProduct($order_product, array(), 0, true);

					$transaction = array(
						'id' => $order->id,
						'affiliation' => (version_compare(_PS_VERSION_, '1.5', '>=') && Shop::isFeatureActive()) ? $this->context->shop->name : Configuration::get('PS_SHOP_NAME'),
						'revenue' => $order->total_paid,
						'shipping' => $order->total_shipping,
						'tax' => $order->total_paid_tax_incl - $order->total_paid_tax_excl,
						'url' => $this->context->link->getModuleLink('ganalytics', 'ajax', array(), true),
						'customer' => $order->id_customer);
					$ga_scripts = $this->addTransaction($order_products, $transaction);

					$this->js_state = 1;
					return $this->_runJs($ga_scripts);
				}
			}
		}
	}

Hook ten oczywiście wywoływany jest na stronie potwierdzenia płatności i potrzebuje $params objektu Order by to wszystko przeforsować do googla.

PayU natomiast w displayOrderDetail również na szczęście zwraca w $params objekt Order

 

 public function hookDisplayOrderDetail($params)
    {

        if ($this->hasRetryPayment($params['order']->id, $params['order']->current_state)) {
            $this->context->smarty->assign(
                array(
                    'payuImage' => $this->getPayuLogo(),
                    'payuActionUrl' => $this->context->link->getModuleLink(
                        'payu', 'payment', array('id_order' => $params['order']->id)
                    )
                )
            );

            return $this->fetchTemplate('/views/templates/hook/retryPayment.tpl');
        }
    }

Więc teraz pytanie - czy gdzieś trzeba zaczepić dodatkowego hooka czy może w którymś z tych hooków wykonać Hook:exec ?

Na logikę wydaje się, że wykonanie hooka Ganalytics hookOrderConfirmation powinno nastąpić w hooku PayU hookDisplayOrderDetail. 

Niestety kompletnie się w tym nie ogarniam - ktoś mógłby pomóc?


 

Link to comment
Share on other sites

  • 0

Jakie masz wersje modułów? Sprawdziłem przed chwilą 2 sklepy z payu 3.0.1 i ga 2.3.4 i w panelu ga są widoczne transakcje robione przez payu.

Mogą być jakieś rozbieżności, ale ogólnie transakcje z payu widać więc może u Ciebie coś się sypie?

Natomiast nie analizowałem w którym momencie co jest przesyłane ;)

Link to comment
Share on other sites

  • 0

Mam najnowsze moduły, jednak mam 2 pytania. Czy w tych sklepach w opcji konfiguracji wtyczki PayU wartość
 

Wyświetlaj metody płatności

Wyświetlaj metody płatności na stronie podsumowania zamówienia Prestashop 

masz na Tak czy na Nie? 

Ja mam na Nie, bo uważam, że lepiej gdy wybiorą już swój bank na stronie PayU.

 

----------------------------------------

Sprawa druga jest taka, że używam również modułu One Page Checkout od X13 i to może też mieć wpływ na to że dane nie są przesyłane.

Link to comment
Share on other sites

  • 0

Przepraszam za wiadomość pod wiadomością, ale nie mogę edytować wiadomości na forum (zarówno na Opera/Chrome) - zrobiło się to dzisiaj. 

 

Jedna rzecz która również jest ciekawa to fakt, że w tabeli prefix_ganalytics mam zamówienie o id takim którym było płacone przez PayU wartość "1" w columnie "sent" czyli tak jakby te dane zostały wysłane, ale że pewnie nie miały skąd ich pobrać to wysłały puste? Nie wiem już ...

Link to comment
Share on other sites

  • 0

moduł PayU głównie był w kolejności za modułem Google analytics jeśli ma to jakieś znaczenie

hooki payu są za ga czyli to nie to

 

 

Wyświetlaj metody płatności na stronie podsumowania zamówienia Prestashop 

 

masz na Tak czy na Nie?

 

Mam na Tak.

Modułu od x13 nie używam, standardowe OPC z presty.

 

 

Jedna rzecz która również jest ciekawa to fakt, że w tabeli prefix_ganalytics mam zamówienie o id takim którym było płacone przez PayU wartość "1" w columnie "sent" czyli tak jakby te dane zostały wysłane, ale że pewnie nie miały skąd ich pobrać to wysłały puste?

 

Też jest tam 1 ale nie wiem w którym momencie się to ustawia (czy po złożeniu zamówienia czy po wejściu w nie w panelu - weź pod uwagę, że dane o statusie transakcji są lub mogą być przesyłane do sklepu później a nie w momencie powrotu klienta do sklepu). Myślę, że jeśli byłoby wysłane jako puste dane to miałbyś transakcję ale np. bez kwoty i produktów, ale zgaduję tylko.

Link to comment
Share on other sites

  • 0

No właśnie jest w tym wszystkim coś dziwnego i nie do końca rozumiem jak wtyczka Ganalytics i kiedy wysyła te dane, ponieważ dane dat z tabeli ps_ganalytics są przeważnie kilka/kilkanaście minut późniejsze niż złożone zamówienie, ale również nie pokrywają się z godzinami statusów.

 

Nie widzę również w konsoli by pliki js google analytics cokolwiek wysyłały XHR lub w JS nawet przy zmianach statusów na anulowane. 

Za to wszystkie zamówienia pobraniowe/przelewowe pojawiają się w około godzinę w Analytics e-commerce.

 

Sprawdzę jeszcze jak włącze te banki na stronie sklepu czy wtedy może presta coś śle choć wątpie.

Link to comment
Share on other sites

  • 0

Musiałbyś prześledzić żądania przy pierwszym wejściu do panela i ewentualnie zamówienia po jego złożeniu z płatnością payu.

Z tego co widzę to przy pobraniu są różnice sekund między statusami/mailami a datą w tabeli analytics, czyli jest to od razu wysyłane.

Przy payu różnice są większe z czego wnioskuję, że dane są wysyłane w innym momencie.

Link to comment
Share on other sites

  • 0

Teraz przeprowadziłem test i po prostu po przeprowadzonej transakcji PayU hook hookOrderConfirmation nie jest odpalony po zaakceptowanej płatności. Bankwire, cod inne odpalają ten zaczep tylko nie PayU. Ktoś ma pomysł wstawić ten HookExec?

 

Gdy w funkcji public function hookOrderConfirmation($params)  w ganalytics.zip wstawię pod $order = $params['objOrder'];  kod 

ddd($params['objOrder']);

by sprawdzić czy paramsy i w ogóle sama funkcja startuje tak po płatności przelewem, za pobraniem i paypalem wszystko jest debugowane i widzę obiekt tego zamówienia, natomiast po pozytywnej płatności PayU funkcja nie jest uruchomiona.

Edited by hakeryk2 (see edit history)
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...