Recommended PrestShop Version

Thanks for choosing Agile.
For customers using our Agile Multiple Seller module and its accessry modules, we highly recommend to use PrestaShop 1.6x or 1.7.5 or lower. PrestaShop has made some changes in versions higher than 1.7.6 that makes it possible or very difficult to implement some of features via hooks, or override, since required hooks or override is not available.

Sept. 05, 2019

Guia de integração do módulo de pagamento

Integração e o modo de coleta de pagamento

Antes de introduzirmos a integração do módulo de pagamento, precisamos entender o que é modo de cobranças no Agile vendedor múltiplos modul. Quando você estiver usando o vendedor múltiplas ágeis e seus módulos acessórios como sua solução de mercado on-line, você precisa integrar/personalizar seu módulo de pagamento para ágil ambiente múltiplo do vendedor. Depende o modo de coleta de pagamento de seu vendedor múltiplos ágil, você está usando, os requisitos do módulo de pagamento são um pouco diferente.

Loja recolhe pagamento

Você não precisa integrar ou personalizar seu módulo de pagamento, você pode usar quaisquer módulos de pagamento 3ª festa para este modo de cobranças. Mas o módulo de pagamento devem ser seguir seguindo passos para processar o pagamento e criar ordens
= > Pagamento proess primeiro (o carrinho de compras todo)
= > Em seguida, criar ordens por chamada valiateOrder() da classe PaymentModule ou sua substituição

Vendedor coleciona pagamento
 

Você precisará integrar seu módulo de pagamento .

Tanto o vendedor e o armazenamento de recolhem o pagamento 

Você precisa integrar /Personalizar o módulo de pagamento.


Condições do módulo de pagamento 3ª festa para ser capaz de integrar com módulo vendedor múltiplas ágeis.

Pagamento de processo r. na loja
O módulo de pagamento deve terminar o processo de pagamento dentro do PrestaShop sem redirecionar usuários para o site de gateway de pagamento para autorizar o pagamento. Este tipo de módulo de pagamento geralmente usar serviço de API ou web de gateway de pagamento para enviar o pagamento do comprador informação ao gateway de pagamento e retornar o resultado de pagamento no lado do servidor, comprador não tem que ser redirecionado para o site da empresa pagamento para autorizar o pagamento. A maioria dos módulos de pagamento de cartão de crédito usar desta forma.

B. processo pagamento primeiro antes de criar ordens
O módulo de pagamento deve processar o pagamento primeiro antes de criar ordens. Isso é só quando pagamento processada com êxito, em seguida, chame PaymentModule -> validateOrder() para criar a ordem. O validateOrder() pode ser o método de substituição do módulo de pagamento.

PASSOS para integrar seu 3º módulo de festa com vários vendedor - vendedor múltiplas ágeis 3.2.0.1 ou acima
Por favor, concentre-se as linhas de código em azul - código para integração.

1. definir o modo de coleta de pagamento para apoiar
Adicionar linha à sua classe de módulo de pagamento para definir o modo de coleta de pagamento você módulo apoiará

estende a classe AgilePaypalParallel PaymentModule
{
público estático $PaymentCollectionMode = (matriz
1 = > verdadeiro ///seller coleta de pagamento - pagamentos comprador serão divididos em conta de vendedores
, 2 = > verdadeiro ///both loja e o vendedor recolhem o pagamento - o pagamento do comprador será dividido em conta store(commission) e vendedores
, 3 = > verdadeiro ///store recolhe o pagamento dos compradores
   );
   ................
}

2. controle de disponibilidade de módulo o pagamento.
Adicionar seguinte linhas de código no início do método hookDisplayPayment() para controlar as disponibilidades de módulo

Se este módulo de pagamento não suporta corrente vários modo de coleta de pagamento de vendedor, em seguida, retornam false - não aparecem
$paymode = (int)Configuration::get('AGILE_MS_PAYMENT_MODE');
If(Module::IsInstalled('agilemultipleseller') & &! auto:: $PaymentCollectionMode [$paymode]) retornar false;


3. Registre-se um gancho para informar múltiplos módulo de vendedor para integrar
Dentro de seu módulo de método de instalação, adicionando uma linha para registrar gancho actionAgilePaymentModuleIntegrate informar ágil módulo múltiplo de vendedor para integrar este módulo de pagamento.


Uninstall () função pública
{
If(!Parent::Uninstall()) retornam false;
se (! pai:: install()
OU! $this -> registerHook('actionAgilePaymentModuleIntegrate')
OU! Configuration::updateValue ('AGILE_PAYPALPL_BUSINESS', '[email protected]')
OU! Configuration::updateValue ('AGILE_PAYPALPL_SANDBOX', 1)
OU! $this -> registerHook('displayPayment')
OU! $this -> registerHook('displayPaymentReturn')
) retornar false;
    .............

}

4. prepare o gancho método para retornar as informações de integração necessária
Criar seguindo o método na sua classe de núcleo de módulo de pagamento, então ele será chamado pelo módulo múltiplo de vendedor para recuperar a integração de informações relacionadas.

função pública hookActionAgilePaymentModuleIntegrate($params)
{
retorno (matriz
'nome' = > $this -> nome,
'desc' = > $this -> displayName,
'modo' = > Auto:: $PaymentCollectionMode,
'elinks' = > array (
(matriz
'rótulo' = > $this -> l ('autorizar listra Conexão')
, 'url' = > 'https://connect.stripe.com/oauth/authorize'
, 'tooltip' = > $this -> l (» clique aqui para autorizar ou re-autorizar sua listra conta para se conectar com esta plataforma de mercado')
             ),
      ),

'info1' = > array ('rótulo' = > $this -> l ('API Login ID'), 'is_unique' = > 1, 'is_readonly' = > 0, 'tooltip' = > $this -> l ('explicação da PERÌCIA')),
'info2' = > array ('rótulo' = > $this -> l ('chave de transação'), 'is_unique' = > 1, 'is_readonly' = > 1, 'tooltip' = > $this -> l ('explicação da PERÌCIA')),
'info3' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, 'tooltip' = > '),

'info4' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,,'is_readonly' = > 0, 'tooltip' = > '),
'info5' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,,'is_readonly' = > 0, 'tooltip' = > '),
'info6' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,,'is_readonly' = > 0, 'tooltip' = > '),
'info7' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,,'is_readonly' = > 0, 'tooltip' = > '),
'info8' = > array ('rótulo' = > ' N/a', 'is_unique' = > 0,,'is_readonly' = > 0, 'tooltip' = > '),
    );
}

seller payment setting screen - integrated module

Em acima método do gancho, você fornecerá seguintes informações para agile módulo múltiplo do vendedor.
-nome do módulo (nome interno)
-Descrição do módulo (nome para exibição do módulo)
-modo de coleta de pagamento disponível seu módulo apoiará
-informações de pagamento que o vendedor tem de fornecer para recolher o pagamento dos compradores através deste módulo. Isso geralmente os campos de configuração de seus módulos. Há máx 8 campos disponíveis para uso. O número de campos exigidos depende de seu módulo de pagamento.

Mais casos, os campos de informações correspondidos para loja principal é diferente de vendedores, mas em algum momento, eles são os mesmos. Por exemplo, ágil Authorize.NET módulo terá 2 campos a seguir conforme definido no código de exemplo acima.
-Log API ID
-Transação chave

Você tem que definir o rótulo do campo e também especificar se o campo é parte dos campos exclusivos para ser validados quando um vendedor adicionando novas informações de pagamento. O módulo usará os campos com is_unique valor 1, para verificar se as informações de pagamento são o mesmo com outros vendedores para evitar a duplicação.

Nota
Por favor, mantenha o código como está, apenas altere o valor para que o rótulo será capaz de suportar vários idiomas, e você será capaz de traduzir o nome do campo em diferentes línguas no guia de operações de back-office - localizações-

5. prepare o validador de campo de informação de pagamento (opcional)
Cada vendedor precisará inserir informações de pagamento para receber o pagamento dos compradores (ou da loja). Você pode precisar de validar cada campo que o vendedor entra é dados válidos. Por exemplo, se é um módulo do Paypal, você vai querer validar o primeiro campo "info1" que entrou o vendedor é um endereço de email válido.

Aqui está um exemplo do validador no seu módulo de pagamento

função pública validatePaymentInfoFields($paymentinfo)
{
$errors = array ();
   
If(Empty($PaymentInfo)) $errors [] = $this -> l ('informações de pagamento inválido');

$info1 = (is_array($paymentinfo)? $paymentinfo ['info1']: $paymentinfo -> info1);
If (!. Validate::isEmail($info1)) $errors [] = $this -> nome. ":" . $this -> l ('endereço de E-mail Paypl'). $this -> l ('é inválido.');

retorno $errors;
}


6. processo de pagamento e validateOrder() - criar ordem
A fim de integrar o módulo de pagamento, seu módulo de pagamento deve seguir as etapas padrão do PrestaShop check-out e procedimento relacionado com o pagamento de processamento de pedidos. Aqui é o processo que está relacionado com o pagamento da ordem.

= = > Informação de pagamento de recuperar A. = = > B. executar pagamento = = > C. ValidateOrder(Create Order data)

Recuperar dados de pagamento

Você precisará chamar seguindo o método do módulo Agiile Mulltiple vendedor para receber os dados de pagamento.

$payments = AgileMultipleSeller::get_payment_info_from_cart();

O módulo retornará uma matriz com informações de dados de pagamento com base no modo de cobranças. Cada elemento da matriz conterá seguir informações.

-$id_seller como chave da matriz
-"e-mail": destinatário (vendedor) e-mail (vendedor ou loja), por exemplo, [email protected]
-'quantidade': a quantidade do destinatário deve receber, por exemplo, $230,00
-«Comissão»: a Comissão do vendedor a pagar ou a loja para receber

Nota
: o montante em moeda de carrinho de compras, você precisará converter para sua moeda especificada módulo de pagamento antes de enviar para pagamento getway.

Abaixo está o código de exemplo para mostrar os dados de pagamento para seu módulo de pagamento.

$payments = AgileMultipleSeller::get_payment_info_from_cart();
foreach ($payments $id_seller = > $payment)
{
... código de processamento de pagamento
}

$this -> validateOrder(...)
 

O código de processamento de pagamento será diferente para os módulos de pagamento diferentes. Vamos deixar para você determinar como implementar o pagamento. Também deixamos o pagamento manipulação de erros para manipular. Por exemplo, se houver vários vendedor em um carrinho de compras, você precisará lidar com se algum pagamento vendedor falhou. Algum crédito carrinho pagamento suporta 2 passos - autorizar o pagamento primeiro, em seguida, capturar a quantidade para terminar os pagamentos, sugerimos que você autoriza todos os pagamentos de vendedores primeiro, em seguida, validateOrder() e em seguida chamada "capturam" para finalizar os pagamentos.

Nota:

Dependendo o gateway de pagamento, você pode precisar de informações de pagamento do vendedor como credenciais de API em vez da sua loja se o beneficiário do pagamento é vendedor. Você pode usar o seguinte código para receber o pagamento do vendedor informações (tais como credenciais de API) para seu módulo de pagamento.

include_once (_PS_ROOT_DIR_. "/ modules/agilemultipleseller/AgileSellerPaymentInfo.php");
$paymentinfo = AgileSellerPaymentInfo::getForSellerByModuleName ($this -> nome, $id_seller);




Divirta-se com a integração.