-
Notifications
You must be signed in to change notification settings - Fork 79
Description
Ten kod odpowiada za dodanie karty i PayU:
plugin_prestashop/payu/payu.php
Lines 776 to 991 in fac720a
| public function hookPaymentOptions($params, $retry = false) | |
| { | |
| if (!$this->active) { | |
| return; | |
| } | |
| if (isset($params['cart'])) { | |
| if (!$this->checkCurrency($params['cart'])) { | |
| return; | |
| } | |
| $cart = $params['cart']; | |
| $totalPrice = $cart->getOrderTotal(); | |
| } else { | |
| $totalPrice = $params['order_total']; | |
| } | |
| $paymentOptions = []; | |
| $retry16 = !$this->is17() && $retry; | |
| if ($retry) { | |
| $paymentMethods = $params['paymentMethods']; | |
| } else { | |
| $paymentMethods = $this->getPaymethods(Currency::getCurrency($this->context->cart->id_currency), $totalPrice); | |
| } | |
| $this->smarty->assign([ | |
| 'conditionTemplate' => _PS_MODULE_DIR_ . 'payu/views/templates/front/conditions17.tpl', | |
| 'conditionUrl' => $this->getPayConditionUrl(), | |
| 'payuPayAction' => $this->context->link->getModuleLink('payu', 'payment'), | |
| 'paymentMethods' => $paymentMethods['payByLinks'], | |
| 'separateBlik' => Configuration::get('PAYU_SEPARATE_BLIK_PAYMENT'), | |
| 'separateTwisto' => Configuration::get('PAYU_SEPARATE_PAY_LATER_TWISTO'), | |
| 'separateCard' => Configuration::get('PAYU_SEPARATE_CARD_PAYMENT'), | |
| 'posId' => OpenPayU_Configuration::getMerchantPosId(), | |
| 'lang' => Language::getIsoById($this->context->language->id), | |
| 'paymentId' => Tools::getValue('payment_id'), | |
| 'params' => $params, | |
| 'grid' => Configuration::get('PAYU_PAYMENT_METHODS_GRID'), | |
| 'retryPayment' => $retry, | |
| 'modulePath' => _PS_MODULE_DIR_ . 'payu', | |
| 'has_sf' => false | |
| ]); | |
| $this->setPayuNotification(); | |
| if (Configuration::get('PAYU_SEPARATE_CARD_PAYMENT') === '1' && $this->isCardAvailable()) { | |
| if (Configuration::get('PAYU_CARD_PAYMENT_WIDGET') === '1') { | |
| $this->smarty->assign([ | |
| 'conditionTemplate' => _PS_MODULE_DIR_ . 'payu/views/templates/front/conditions17.tpl', | |
| 'secureFormJsTemplate' => _PS_MODULE_DIR_ . 'payu/views/templates/front/secureFormJs.tpl', | |
| 'payCardTemplate' => _PS_MODULE_DIR_ . 'payu/views/templates/front/payuCardForm.tpl', | |
| 'conditionUrl' => $this->getPayConditionUrl(), | |
| 'jsSdk' => $this->getPayuUrl(Configuration::get('PAYU_SANDBOX') === '1') . 'javascript/sdk', | |
| 'posId' => OpenPayU_Configuration::getMerchantPosId(), | |
| 'lang' => Language::getIsoById($this->context->language->id), | |
| 'paymentId' => Tools::getValue('payment_id'), | |
| 'has_sf' => true | |
| ]); | |
| } | |
| if ($retry16) { | |
| $cardPaymentOption = [ | |
| 'CallToActionText' => $this->l('Pay by card'), | |
| 'AdditionalInformation' => Configuration::get('PAYU_CARD_PAYMENT_WIDGET') == 1 ? $this->fetchTemplate('secureForm16.tpl') : '<span class="payment-name" data-pm="c"></span>', | |
| 'ModuleName' => $this->name, | |
| 'Logo' => $this->getPayuLogo('card-visa-mc.svg'), | |
| ]; | |
| } else { | |
| $cardPaymentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); | |
| $cardPaymentOption->setCallToActionText($this->l('Pay by card')) | |
| ->setModuleName($this->name) | |
| ->setLogo($this->getPayuLogo('card-visa-mc.svg')); | |
| if (Configuration::get('PAYU_CARD_PAYMENT_WIDGET') === '1') { | |
| $cardPaymentOption->setAdditionalInformation($this->fetchTemplate('secureForm17.tpl')); | |
| } else { | |
| if ($retry) { | |
| $cardPaymentOption->setAdditionalInformation('<span class="payment-name" data-pm="c"></span>'); | |
| } | |
| $cardPaymentOption->setAction($this->context->link->getModuleLink($this->name, 'payment', ['payMethod' => 'c'])); | |
| } | |
| } | |
| $paymentOptions[] = $cardPaymentOption; | |
| } | |
| if (Configuration::get('PAYU_SEPARATE_BLIK_PAYMENT') === '1' && $this->isBlikAvailable()) { | |
| if ($retry16) { | |
| $blikPaymentOption = [ | |
| 'CallToActionText' => $this->l('Pay by BLIK'), | |
| 'AdditionalInformation' => $this->fetchTemplate('conditions17.tpl') . '<span class="payment-name" data-pm="blik"></span>', | |
| 'ModuleName' => $this->name, | |
| 'Logo' => $this->getPayuLogo('blik.svg') | |
| ]; | |
| } else { | |
| $blikPaymentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); | |
| $blikPaymentOption->setCallToActionText($this->l('Pay by BLIK')) | |
| ->setAdditionalInformation($this->fetchTemplate('conditions17.tpl') . '<span class="payment-name" data-pm="blik"></span>') | |
| ->setModuleName($this->name) | |
| ->setLogo($this->getPayuLogo('blik.svg')) | |
| ->setAction($this->context->link->getModuleLink($this->name, 'payment', | |
| [ | |
| 'payMethod' => 'blik' | |
| ] | |
| )); | |
| } | |
| $paymentOptions[] = $blikPaymentOption; | |
| } | |
| if ($retry16) { | |
| $paymentOption = [ | |
| 'CallToActionText' => !isset($cardPaymentOption) | |
| ? $this->l('Pay by online transfer or card') | |
| : $this->l('Pay by online transfer'), | |
| 'ModuleName' => $this->name, | |
| 'Retry' => 1, | |
| 'Logo' => $this->getPayuLogo() | |
| ]; | |
| if (Configuration::get('PAYU_PAYMENT_METHODS_GRID') === '1') { | |
| $paymentOption['AdditionalInformation'] = $this->fetchTemplate('repaymentTransferList.tpl'); | |
| } elseif ($retry) { | |
| $paymentOption['AdditionalInformation'] = '<span class="payment-name" data-pm="pbl"></span>'; | |
| } | |
| } else { | |
| $paymentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); | |
| $paymentOption | |
| ->setModuleName($this->name) | |
| ->setAction($this->context->link->getModuleLink($this->name,'payment', ['payMethod' => Configuration::get('PAYU_PAYMENT_METHODS_GRID') === '1' ? 'transfer' : 'pbl'])) | |
| ->setLogo($this->getPayuLogo()) | |
| ->setCallToActionText(empty($paymentOptions) | |
| ? $this->l('Pay by online transfer or card') | |
| : $this->l('Pay by online transfer')); | |
| if (Configuration::get('PAYU_PAYMENT_METHODS_GRID') === '1') { | |
| $paymentOption->setAdditionalInformation( | |
| $this->fetchTemplate('paymentTransferList17.tpl') | |
| )->setInputs( | |
| [ | |
| [ | |
| 'type' => 'hidden', | |
| 'name' => 'payment_id', | |
| 'value' => '', | |
| ], | |
| [ | |
| 'type' => 'hidden', | |
| 'name' => 'transferGateway', | |
| 'value' => '', | |
| ] | |
| ] | |
| ); | |
| } else if ($retry) { | |
| $paymentOption->setAdditionalInformation('<span class="payment-name" data-pm="pbl"></span>'); | |
| } | |
| } | |
| $paymentOptions[] = $paymentOption; | |
| if (Configuration::get('PAYU_SEPARATE_PAY_LATER_TWISTO') === '1' && $this->isPayLaterTwistoAvailable()) { | |
| if ($retry16) { | |
| $payLaterTwistoOption = [ | |
| 'CallToActionText' => $this->l('Pay later'), | |
| 'AdditionalInformation' => '<span class="payment-name" data-pm="dpt"></span>', | |
| 'ModuleName' => $this->name, | |
| 'Logo' => $this->getPayuLogo('payu_later_twisto_logo_small.png') | |
| ]; | |
| } else { | |
| $payLaterTwistoOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); | |
| $payLaterTwistoOption | |
| ->setCallToActionText($this->l('Pay later')) | |
| ->setModuleName($this->name) | |
| ->setLogo($this->getPayuLogo('payu_later_twisto_logo_small.png')) | |
| ->setAction($this->context->link->getModuleLink($this->name, 'payment', | |
| [ | |
| 'payMethod' => 'dpt' | |
| ] | |
| )); | |
| if ($retry) { | |
| $payLaterTwistoOption->setAdditionalInformation('<span class="payment-name" data-pm="dpt"></span>'); | |
| } | |
| } | |
| $paymentOptions[] = $payLaterTwistoOption; | |
| } | |
| if ($this->isCreditAvailable($totalPrice)) { | |
| $this->context->smarty->assign([ | |
| 'total_price' => $totalPrice, | |
| 'payu_installment_img' => $this->getPayuLogo('payu_installment.svg'), | |
| 'payu_logo_img' => $this->getPayuLogo(), | |
| 'payu_question_mark_img' => $this->getPayuLogo('question_mark.png'), | |
| 'credit_pos' => OpenPayU_Configuration::getMerchantPosId(), | |
| 'credit_pos_key' => substr(OpenPayU_Configuration::getOauthClientSecret(), 0, 2) | |
| ]); | |
| if ($retry16) { | |
| $installmentOption = [ | |
| 'CallToActionText' => $this->l('Pay online in installments'), | |
| 'AdditionalInformation' => $this->fetchTemplate('checkout_installment.tpl'), | |
| 'ModuleName' => $this->name, | |
| 'Logo' => $this->getPayuLogo('payu_installment.svg') | |
| ]; | |
| } else { | |
| $installmentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); | |
| $installmentOption | |
| ->setCallToActionText($this->l('Pay online in installments')) | |
| ->setModuleName($this->name) | |
| ->setLogo($this->getPayuLogo('payu_installment.svg')) | |
| ->setAdditionalInformation($this->fetchTemplate('checkout_installment.tpl')) | |
| ->setAction($this->context->link->getModuleLink($this->name, 'payment', | |
| [ | |
| 'payMethod' => 'ai' | |
| ] | |
| )); | |
| } | |
| $paymentOptions[] = $installmentOption; | |
| } | |
| return $paymentOptions; | |
| } |
Na tej liście jest możliwość ustalania pozycji sposobów płatności:

W tej chwili metoda płatności kartą jest ZAWSZE nad metodą PayU jako że kod deklaruje ją powyżej standardowej metody a nie poniżej.
W tej chwili ta opcja nie jest intuicyjna, nie działa z osobną metodą płatności kartą, powoduje błędy a także w dalszej kolejności uniemożliwia mieszanie pozycji metod płatności z zewnętrznymi/wbudowanymi dostawcami:

Rozwiązanie błędu jest umożliwienie by w ramach natywnego sposobu wyboru płatności można było zarządzać z poziomu
Wygląd -> Pozycje -> paymentOptions wszystkich dostępnych metod dla klienta. By były one przypinane po pobraniu ustawień z panelu po aktywacji prawidłowej modułu i umożliwiały pełną konfigurację w ramach natywnych funkcjonalności prestashop.
Poza możliwością łatwego odczepiania/ustalania kolejności potrzebny byłby przycisk do resetowania tych zmian w pozycjach.
