[PRESTASHOP] Módulo PayPal e Multi-Loja
Olá,
Hoje venho falar-vos de outro problema que afeta as lojas PrestaShop, o módulo de pagamentos por PayPal.
Este problema, que nas primeiras versões do PrestaShop não se verificava, teima agora em estar sempre lá, parece que os programadores nem se importam com esses promenores.
Antes de dizer o nome do problema, imaginem este cenário:
- Vocês têm 1 conta PayPal, registada para a vossa empresa, com todos os dados legais.
- Têm uma instalação PrestaShop Multi-Loja ou, várias instalações do PrestaShop para lojas diferentes.
- Cada loja tem 1 logotipo diferente, nomes diferentes, mas, recebem de todas na mesma conta PayPal.
Sempre que um cliente, de uma das vossas lojas vai pagar com o PayPal, o logotipo que aparece em cima é o pré-definido da vossa área de administração do PayPal, certo? Porquê?
Esta situação, faz com que alguns dos vossos clientes não paguem por pensarem tratar-se de um erro, não perceberem porque estão a pagar a outra loja, ou desconfiarem…
Esta sitação foi em tempos corrigida porque em versões antigas do PrestaShop em que era possivel definir o logotipo que ia para o PayPal.
Há tempos que andava para corrigir o problema e fiz um pequeno MOD no módulo do PayPal que corrige temporariamente.
Então precisam de:
- 1 logotipo que queiram com as dimensões máximas de 190px x 60px.
- Colocar esse logotipo na pasta /img/ da vossa loja.
- Darem o nome que quiserem à imagem, no examplo vou chamar-lhe: “logo_paypal.jpg”.
Depois, vão à pasta modules/paypal/express_checkout/ e abram o ficheiro: “process.php”.
Procurem a função “public function setExpressCheckout()”, por volta da linha 134 e vem ver qualquer coisa como isto:
[syntax type=”php”]
public function setExpressCheckout()
{
$this->method = ‘SetExpressCheckout’;
$this->setCancelUrl($fields);
// Only this call need to get the value from the $_GET / $_POST array
if (!$this->initParameters(true) || !$fields[‘CANCELURL’])
return false;
// Set payment detail (reference)
$this->_setPaymentDetails($fields);
$fields[‘SOLUTIONTYPE’] = ‘Sole’;
$fields[‘LANDINGPAGE’] = ‘Login’;
// Seller informations
$fields[‘USER’] = Configuration::get(‘PAYPAL_API_USER’);
$fields[‘PWD’] = Configuration::get(‘PAYPAL_API_PASSWORD’);
$fields[‘SIGNATURE’] = Configuration::get(‘PAYPAL_API_SIGNATURE’);
$this->callAPI($fields);
$this->_storeToken();
}[/syntax]
Substituam o código por:
[syntax type=”php”]
public function setExpressCheckout()
{
$this->method = ‘SetExpressCheckout’;
$this->setCancelUrl($fields);
// Only this call need to get the value from the $_GET / $_POST array
if (!$this->initParameters(true) || !$fields[‘CANCELURL’])
return false;
// Set payment detail (reference)
$this->_setPaymentDetails($fields);
$fields[‘SOLUTIONTYPE’] = ‘Sole’;
$fields[‘LANDINGPAGE’] = ‘Login’;
// Seller informations
$fields[‘USER’] = Configuration::get(‘PAYPAL_API_USER’);
$fields[‘PWD’] = Configuration::get(‘PAYPAL_API_PASSWORD’);
$fields[‘SIGNATURE’] = Configuration::get(‘PAYPAL_API_SIGNATURE’);
$fields[‘LOGOIMG’] = PayPal::getShopDomainSsl(true, true)._PS_IMG_.’logo_paypal.jpg’;
$this->callAPI($fields);
$this->_storeToken();
}
[/syntax]
Como podem ver, adicionámos uma linha ao código:
[syntax type=”php”]$fields[‘LOGOIMG’] = PayPal::getShopDomainSsl(true, true)._PS_IMG_.’logo_paypal.jpg’;[/syntax]
Este código, vai buscar o logo que criámos para o PayPal à pasta /img/ e envia para o PayPal.
Salvem o ficheiro e testem. O código funciona na versão 1.5.6 do PrestaShop e nas versões 3.x do PayPal.
Qualquer dúvida, mandem os comentários abaixo que eu respondo.
Abraços