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

Kolejność płatności - osobna karta nie jest dostępna w zmianie pozycji #306

Open
Triloworld opened this issue Nov 29, 2022 · 1 comment

Comments

@Triloworld
Copy link
Contributor

Ta opcja:
Zrzut ekranu 2022-11-29 o 18 16 05

Ten kod odpowiada za dodanie karty i PayU:

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:
Zrzut ekranu 2022-11-29 o 18 18 12

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:
Zrzut ekranu 2022-11-29 o 18 21 05

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.

@regdos
Copy link
Contributor

regdos commented Dec 15, 2022

Zgadza się, że w ramach konfiguracji zaczepu paymentOptions można zmieniać kolejność. Niestety Plugin może zarejestrować tylko jeden zaczep danego rodzaju więc nie ma możliwości żeby każda wydzielona metoda (karta, blik, raty) miała swój zaczep co skutkuje tym, że metody PayU muszą być zgrupowane razem.
Zgadzam się, że nazwa opcji Kolejność metod płatności może być nieprecyzyjna ale w dokumentacji https://github.com/PayU-EMEA/plugin_prestashop#spos%C3%B3b-integracji jest informacja, że dotyczy tylko listy banków.

Kolejności metod w ramach wszystkich dostępnych nie można w tej chwili ustawić ale nawet jeżeli to dorobimy to będzie to ograniczenie, że nie mogą być mieszane z innymi metodami.

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

2 participants