Jump to content

Problem z walutami i przelewy24


belialek

Recommended Posts

Witam,

 

Mam problem, z którym nie mogę sobie poradzić w żaden sposób - podczas wykonywania zakupów w innej walucie niż PLN, kwota przekazywana do zapłaty (moduł Przelewy24) zostaje przeliczona zgodnie z kursem ustawionym w Prescie ale waluta w dalszym ciągu to PLN. W rezultacie towar wart np 100 PLN, zostaje przez Prestę poprawnie przeliczony na 23.99 EUR, natomiast wg modułu przelewy24 jest to 23.99 PLN i taka kwota widnieje w każdej formie płatności oferowanej przez tego usługodawcę... Tak jakby po drodze była gubiona/ignorowana informacja o walucie.

 

Będę wdzieczny za każdą sugestię...

Link to comment
Share on other sites

Witam,

 

Znam ten ból, trzeba wprowadzić kilka zmian w kodzie:

 

w pliku przelewy24.php zaraz przed deklaracją zmiennych

 

...$smarty->assign...

 

 

Dodałem kilka dodatkowych zmiennych:

 

$validate_kwota = ceil($kwota/$ratecurrency);
 //Kwoty do wyświetlenia w złotówkach 123/100=1.23zł

 $show_kwota = $kwota/100;
 $show_validate_kwota = $validate_kwota/100;

 

Następnie wysyłam je dalej:

 

$smarty->assign
 (
  array
  (
'p24_session_id'=> $cart->id.'|'.$s_sid,//$sid,
'p24_id_sprzedawcy'=>Configuration::get('P24_ID_SPRZEDAWCY'),
'p24_cena_w_walucie'=>$show_kwota,
'p24_przelicznik_waluty'=>$ratecurrency,
'p24_cena_przeliczona_pln'=>$show_validate_kwota,
'p24_iso_waluty'=>$currency_iso_code,
'p24_kwota'=>$validate_kwota,
'p24_opis'=> $s_descr,
'p24_klient'=>$customer->firstname.' '.$customer->lastname,
'p24_adres'=>$address->address1." ".$address->address2,
'p24_kod'=>$address->postcode,
'p24_miasto'=>$address->city,
'p24_language'=>strtolower($s_lang->iso_code),
'p24_kraj'=>$s_lang->iso_code,
'p24_email'=>$customer->email,
'p24_return_url_ok' => 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.'/modules/przelewy24/validation_prestashop_ok.php',
'p24_return_url_error' => 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.'/modules/przelewy24/validation_prestashop_error.php'
  )
 );

 

Następnie edytujemy plik pay.tpl i dodajemy do wyświetlenia/przesłania do walidacji nasze nowe zmienne:

 

{if $p24_iso_waluty != 'PLN'}
<p>{$p24_cena_w_walucie} {$p24_iso_waluty} = {$p24_cena_przeliczona_pln} PLN</p>
{/if}
<form action="https://secure.przelewy24.pl" method="post" id="przelewy24Form" name="przelewy24Form" accept-charset="iso-8859-2">
<input type="hidden" name="p24_session_id" value="{$p24_session_id}" />
<input type="hidden" name="p24_id_sprzedawcy" value="{$p24_id_sprzedawcy}" />
<input type="hidden" name="p24_kwota" value="{$p24_kwota}" />
<input type="hidden" name="p24_opis" value="{$p24_opis}" />
<input type="hidden" name="p24_klient" value="{$p24_klient}" />
<input type="hidden" name="p24_adres" value="{$p24_adres}" />
<input type="hidden" name="p24_kod" value="{$p24_kod}" />
<input type="hidden" name="p24_miasto" value="{$p24_miasto}" />
<input type="hidden" name="p24_kraj" value="{$p24_kraj}" />
<input type="hidden" name="p24_email" value="{$p24_email}" />
<input type="hidden" name="p24_language" value="{$p24_language}" />
<input type="hidden" name="p24_return_url_ok" value="{$p24_return_url_ok}" />
<input type="hidden" name="p24_return_url_error" value="{$p24_return_url_error}" />
<p class="cart_navigation">
<a href="{$base_dir_ssl}order.php?step=3" class="button_large">{l s='Other payment methods' mod='przelewy24'}</a>
<input type="submit" name="submit" value="{l s='I confirm my order' mod='przelewy24'}" class="exclusive_large" />
</p>
</form>

 

To są wycinki kodu, powinieneś sobie z tym poradzić, ja dodałem opcję, że kiedy klient złoży zamówienie w walucie innej niż PLN, to przed potwierdzeniem wyświetla mu się kwota przeliczona na złotówki.

 

Pozdrawiam, Marcos.

Edited by m.andrzejak (see edit history)
Link to comment
Share on other sites

  • 3 months later...

Witam,

 

Posiadam wersje Presty 1.5.4.0.

 

Próbuję przystosować moduł "Przelewy24".

Prawie się udało, ale...

Kiedy klikam na "Potwierdzam zamówienie" (źródło: pay.tpl),

powinno przetwarzac plik - pay_send.php, a pojawia się błąd o treści:

 

Warning: Function isLogged() is deprecated in /home/....adres sklepu...../modules/przelewy24/pay_send.php on line 23

in /home/....adres sklepu...../classes/Tools.php on line 1843

Cart cannot be loaded or an order has already been placed using this cart

 

Kod pay_send.php:

<?php
/* SSL Management */
$useSSL = true;
include(dirname(__FILE__).'/../../config/config.inc.php');
//require_once(dirname(__FILE__).'/../../init.php');
//$fc=new FrontController();
//$fc -> setmedia();
//include(dirname(__FILE__).'/../../header.php');
include(dirname(__FILE__).'/przelewy24.php');
if (!$cookie->isLogged())
   Tools::redirect('authentication.php?back=order.php');
$o_przelewy24 = new Przelewy24();
//echo $o_przelewy24->execPayment($cart);
$customer = new Customer((int)($cart->id_customer));
$sa_sid=explode('|',$_POST["p24_session_id"]);
$o_order=Db::getInstance()->getRow('SELECT `i_id_order`,`i_amount` FROM `przelewy24_amount` WHERE `s_sid`="'.$sa_sid[1].'"');
$kwota = $o_order['i_amount'];// WYNIK POBRANY Z TWOJEJ BAZY (w groszach)
$i_id_order = $o_order['i_id_order'];
   $opis = "przelewy24.pl";
$id_order = $o_przelewy24->validateOrder((int)$i_id_order, 1, $kwota, 'przelewy24.pl', NULL, array(), NULL, false, $customer->secure_key);
//$id_order = $this->validateOrder((int)$cart->id, 1, $kwota, $this->displayName, NULL, array(), NULL, false, $customer->secure_key);
?>
<html><head></head><body onload="document.getElementById('przelewy24').submit();" >
<p>
<form id="przelewy24" action="https://<?php echo $_POST["p24_url"] ?>" method="post" id="przelewy24Form" name="przelewy24Form" accept-charset="iso-8859-2">
<input type="hidden" name="p24_session_id" value="<?php echo $_POST["p24_session_id"] ?>"/>
<input type="hidden" name="p24_id_sprzedawcy" value="<?php echo $_POST["p24_id_sprzedawcy"] ?>" />
<input type="hidden" name="p24_kwota" value="<?php echo $_POST["p24_kwota"] ?>" />
<input type="hidden" name="p24_opis" value="<?php echo $_POST["p24_opis"] ?>" />
<input type="hidden" name="p24_klient" value="<?php echo $_POST["p24_klient"] ?>" />
<input type="hidden" name="p24_adres" value="<?php echo $_POST["p24_adres"] ?>" />
<input type="hidden" name="p24_kod" value="<?php echo $_POST["p24_kod"] ?>" />
<input type="hidden" name="p24_miasto" value="<?php echo $_POST["p24_miasto"] ?>" />
<input type="hidden" name="p24_kraj" value="<?php echo $_POST["p24_kraj"] ?>" />
<input type="hidden" name="p24_email" value="<?php echo $_POST["p24_email"] ?>" />
<input type="hidden" name="p24_language" value="<?php echo $_POST["p24_language"] ?>" />
<input type="hidden" name="p24_return_url_ok" value="<?php echo $_POST["p24_return_url_ok"] ?>" />
<input type="hidden" name="p24_return_url_error" value="<?php echo $_POST["p24_return_url_error"] ?>" />
<p class="cart_navigation">
</p>
</form><p>Przekierowanie na stronę serwisu przelewy24.pl...</p>
<?php
//include_once(dirname(__FILE__).'/../../footer.php');
?>

 

Kiedy wyłącze fragment kodu:

//if (!$cookie->isLogged())
  // Tools::redirect('authentication.php?back=order.php');

 

Zostaje tylko błąd:

Cart cannot be loaded or an order has already been placed using this cart

 

Czy jest ktoś w stanie pomóc w rozwiązaniu tego problemu?

Link to comment
Share on other sites

witaj

 

 

kod

if (!$cookie->isLogged())

 

zastąp tym:

$context = Context::getContext();
if (!$context->customer->isLogged())

 

wszystko dlatego, że w prestashop 1.5 odeszło się od obiektu $cookie, wprowadzony został tzw. context

 

problem z deprecated powinien zniknąć, zobaczmy co wyjdzie z tym drugim

Link to comment
Share on other sites

Zgadza się problem z deprecated zniknął ale pozostaje ten drugi.

 

"Cart cannot be loaded or an order has already been placed using this cart".

 

Czemu to nie chce przejść dalej?

 

Pomoc techniczna "przelewy24" nie raczy żadnego słowa odpisać na zapytanie

o aktualizację modułu do nowszych wersji presty.

 

Czy istnieje jakikolwiek moduł płatności który działa z wersją 1.5.4.0 ?

Edited by Mikele (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...