Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wybór płatności nie pojawia się w realizacji zamówienia #37

Open
lwadas opened this issue Nov 14, 2019 · 0 comments
Open

Wybór płatności nie pojawia się w realizacji zamówienia #37

lwadas opened this issue Nov 14, 2019 · 0 comments

Comments

@lwadas
Copy link

lwadas commented Nov 14, 2019

Dzień dobry,

Mam dziwną sytuacje tzn:

Wersja prestashop 1.7.6.0
Wersja dotpay plugina 1.2.1

Podczas ładowania metod płatności dotpay się nie wyświetla. Jest skonfigurowany poprawnie bez zaawansowanych opcji. Na starszej wersji sklepu, plugin działa bez problemu.

Przeanalizowałem sytuacje krok po kroku użycie hookPaymentOptions
pierwszy trop pokierował mnie na to że do konstruktorów wywoływanych przez sdk/Dotpay/Loader.php nic nie było przekazywane, argumenty były null.

Drugi trop pokierował mnie na metodę initializeChannelsDataFromCart z pliku dotpay.php

I tutaj było bingo!

 if (!empty($params['cart']->id_customer)) {
            $originalCustomer = new Customer($params['cart']->id_customer);
            $this->sdkLoader->parameter('Customer:email', $originalCustomer->email);
            $this->sdkLoader->parameter('Customer:firstName', $originalCustomer->firstname);
            $this->sdkLoader->parameter('Customer:lastName', $originalCustomer->lastname);
            $customer = $this->sdkLoader->get('Customer');
            $customer->setLanguage($this->getLanguage());
            $currency = new Currency($params['cart']->id_currency);
            $this->sdkLoader->parameter('Order:id', null);
            $this->sdkLoader->parameter('Order:amount', $params['cart']->getOrderTotal());
            $this->sdkLoader->parameter('Order:currency', $currency->iso_code);
            $this->sdkLoader->parameter('PaymentModel:description', '');
            $order = $this->sdkLoader->get('Order');
            $order->setShippingAmount($params['cart']->getOrderTotal(true, Cart::ONLY_SHIPPING));
            unset($originalCustomer);
            unset($customer);
            unset($currency);
         } else if(Context::getContext()->customer->isLogged()) {
            throw new IncompleteDataException('Customer id');
        }

Dla nowego klienta który nie ma konta jeszcze $params['cart']->id_customer jest równy zero.

Podmieniłem tą metodę na takie coś

  private function initializeChannelsDataFromCart($params)
    {
        if (!empty($params['cart']->id_customer)) {
            $originalCustomer = new Customer($params['cart']->id_customer);
            $this->sdkLoader->parameter('Customer:email', $originalCustomer->email);
            $this->sdkLoader->parameter('Customer:firstName', $originalCustomer->firstname);
            $this->sdkLoader->parameter('Customer:lastName', $originalCustomer->lastname);
            unset($originalCustomer);
        } else if (Context::getContext()->customer->isLogged()) {
            throw new IncompleteDataException('Customer id');
        }
        $customer = $this->sdkLoader->get('Customer');
        $customer->setLanguage($this->getLanguage());
        $currency = new Currency($params['cart']->id_currency);
        $this->sdkLoader->parameter('Order:id', null);
        $this->sdkLoader->parameter('Order:amount', $params['cart']->getOrderTotal());
        $this->sdkLoader->parameter('Order:currency', $currency->iso_code);
        $this->sdkLoader->parameter('PaymentModel:description', '');
        $order = $this->sdkLoader->get('Order');
        $order->setShippingAmount($params['cart']->getOrderTotal(true, Cart::ONLY_SHIPPING));
        unset($customer);
        unset($currency);
    }

I zadziałało..... choć nie jestem do końca przekonany do tego else if, który został.

Dlaczego pluginie ustawienie parametrów waluty jest zależne od istnienia id klienta?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant