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

Guía de integración del módulo de pago

Integración y el modo de colección pago

Antes de que presentamos la integración del módulo de pago, necesitamos entender lo que es el modo de cobro pago en modul ágil vendedor múltiples. Cuando usted utiliza ágil vendedor múltiples y sus módulos accesorios como su solución online para el mercado, necesita integrar/personalizar el módulo de pago en ágil entorno de vendedor múltiples. Depende el modo de colección de pago de su ágil vendedor múltiples que está utilizando, los requisitos del módulo de pago son un poco diferente.

Tienda recoge pago

No necesita integrar o personalizar el módulo de pago, puede utilizar los módulos de pago 3er partido para este modo de cobro pago. Pero el módulo de pago debe seguir siguiendo pasos para procesar el pago y crear órdenes de
= > Pago proess primero (el conjunto carrito)
= > Luego crear pedidos llamando al valiateOrder() de PaymentModule clase o su anulación

El vendedor carga un pago
 

Se necesita integrar el módulo de pago .

Tienda y vendedor cobrar el pago 

Usted necesita integrar /personalizar el módulo de pago.


Condiciones del 3er módulo de pago de partido para ser capaces de integrar con el módulo de ágil vendedor múltiples.

Pago de proceso de A. en tienda
El módulo de pago debe terminar proceso de pago dentro del PrestaShop sin redirigir usuarios al sitio web de gateway de pago para autorizar el pago. Este tipo de módulo de pago suele utilizar servicio de API o web de gateway de pago para enviar pago comprador información a pasarela de pago y retorno el resultado del pago en el lado del servidor, comprador no tiene que ser redirigido al sitio web de la empresa de pago para autorizar el pago. Más módulos de pago de tarjeta de crédito utilizan esta forma.

B. proceso pago primero antes de crear órdenes
El módulo de pago debe procesar pago primero antes de crear órdenes. Que es sólo cuando pago con éxito, entonces llamada PaymentModule -> validateOrder() para crear orden. La validateOrder() podría ser el método de anulación de módulo de pago.

PASOS para integrar el módulo 3 de partido con vendedor múltiples - ágil vendedor múltiples 3.2.0.1 o superior
Por favor enfocar las líneas de código en azul - código para la integración.

1. definir modo de colección de pago para apoyar
Añadir línea a la clase de módulo de pago para definir de qué modo de colección de pago módulo se apoyará

clase AgilePaypalParallel extiende PaymentModule
{
público estático $PaymentCollectionMode = array ()
1 = > ///seller cierto recoge el pago.-los pagos del comprador se dividirá en cuenta vendedores
, 2 = > true ///both tienda y vendedor cobrar el pago - pago comprador se dividirá en cuenta store(commission) y vendedores
, 3 = > ///store cierto recoge el pago de los compradores
   );
   ................
}

2. pago módulo disponibilidad de control.
Añadir los siguientes líneas de código al principio del método de hookDisplayPayment() para el control de las disponibilidades de módulo

Si este módulo de pago no admite corriente múltiples vendedor pago colección modo y luego retorno falso - no se presenta a
$paymode = (int)Configuration::get('AGILE_MS_PAYMENT_MODE');
if(Module::isInstalled('agilemultipleseller') & &! uno mismo:: $PaymentCollectionMode [$paymode]) devuelve false;


3. registrar un gancho para informar al módulo de vendedor múltiples para integrar
Dentro de su módulo instalar método, añadiendo una línea al registro del gancho actionAgilePaymentModuleIntegrate informar ágil módulo de vendedor múltiples para integrar este módulo de pago.


función pública uninstall()
{
if(!Parent::Uninstall()) return false;
Si (! los padres:: install()
O! $this -> registerHook('actionAgilePaymentModuleIntegrate')
O! Configuration::updateValue ('AGILE_PAYPALPL_BUSINESS', '[email protected]')
O! Configuration::updateValue ('AGILE_PAYPALPL_SANDBOX', 1)
O! $this -> registerHook('displayPayment')
O! $this -> registerHook('displayPaymentReturn')
) devuelven el valor false;
    .............

}

4. prepare el gancho () para devolver la información de la necesaria integración
Crear siguiendo el método en la clase de base del módulo de pago, por lo que se denomina módulo de vendedor múltiples para recuperar la integración de información relacionada.

función pública hookActionAgilePaymentModuleIntegrate($params)
{
volver () matriz
'nombre' = > $this -> nombre,
'desc' = > $this -> displayName,
'modo' = > self:: $PaymentCollectionMode,
'eMule' = > array ()
() matriz
'label' = > $this -> l ('autorizar raya conexión')
, 'url' = > 'https://connect.stripe.com/oauth/authorize'
, 'Descripción' = > $this -> l ('haga clic aquí para autorizar o volver a autorizar su cuenta de banda para conectar con esta plataforma de mercado')
             ),
      ),

'info1' = > array ('label' = > $this -> l ('API Login ID'), 'is_unique' = > 1, 'is_readonly' = > 0, 'Descripción' = > $this -> l ('explicación de los campos')),
"info2" = > array ('label' = > $this -> l ('llave de transacción'), 'is_unique' = > 1, 'is_readonly' = > 1, 'Descripción' = > $this -> l ('explicación de los campos')),
'info3' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),

'info4' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),
'info5' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),
'info6' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),
'info7' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),
'info8' = > array ('label' = > 'N/A', 'is_unique' = > 0,'is_readonly' = > 0, 'Descripción' = > ''),
    );
}

seller payment setting screen - integrated module

En sobre el método del gancho, usted proveerá a raíz de información ágil módulo vendedor múltiples.
-nombre del módulo (nombre interno)
-Descripción del módulo (nombre para mostrar del módulo)
-modo de pago disponibles colección apoyará su módulo
-información de pago que el vendedor tiene que proporcionar para cobrar el pago de los compradores a través de este módulo. Esto generalmente los campos de configuración de sus módulos. Hay máximo 8 campos disponibles para su uso. El número de campos requeridos depende de su módulo de pago.

Mayoría de los casos los campos de información requited tienda principal es diferente de los vendedores, pero en algún momento son lo mismo. Por ejemplo, Authorize.NET ágil módulo tendrá 2 campos según definido en sobre el código de ejemplo.
-API de registro ID
-Llave de transacción

Tienes que definir la etiqueta del campo y también especificar si el campo es parte de los únicos campos a validar cuando un vendedor de agregar nueva información de pago. El módulo a utilizar los campos con is_unique valor 1 para comprobar si la información de pago es el mismo con otros vendedores a evitar la duplicación.

Nota
Guarde el código como está, sólo cambiar el valor por lo que la etiqueta será capaz de soportar múltiples idiomas y usted será capaz de traducir el nombre de campo en diferentes idiomas en la pestaña de operaciones de back-office - localizaciones-

5. prepare el validador de campo de información de pago (opcional)
Cada vendedor tendrá que introducir la información de pago para recibir el pago de los compradores (o de tienda). Usted puede necesitar validar cada campo que el vendedor entra en datos válidos. Por ejemplo, si se trata de un módulo de Paypal, tienes que validar el primer campo "info1" que el vendedor entrado es una dirección válida de correo electrónico.

Este es un ejemplo de validación en el módulo de pago

función pública validatePaymentInfoFields($paymentinfo)
{
$errors = array();
   
if(Empty($PaymentInfo)) $errors [] = $this -> l ('información de pago no válida');

$info1 = (is_array($paymentinfo)? $paymentinfo ['info1']: $paymentinfo -> info1);
if (!. Validate::isEmail($info1)) $errors [] = $this -> nombre. ":" . $this -> l ('dirección de correo electrónico Paypl'). $this -> l ('no es válido.');

retorno $errors;
}


6. proceso de pago y validateOrder() - crear pedido
Con el fin de integrar el módulo de pago, el módulo de pago debes seguir los pasos estándar de PrestaShop verificación y procedimiento relacionado con el pago de procesamiento de pedidos. Aquí es el proceso que está relacionado con el pago de la orden.

== > Información de pago recuperar A. == > B. realizar pago == > C. ValidateOrder(Create Order data)

Recuperar datos de pago

Usted necesitará llamar siguiendo el método del módulo de Agiile Mulltiple vendedor al recibir los datos de pago.

$payments = AgileMultipleSeller::get_payment_info_from_cart();

El módulo devolverá un array con información de pago en la modalidad de cobro pago. Cada elemento de la matriz contendrá siguientes información.

-$id_seller como clave de la matriz
-' correo electrónico ": beneficiario (vendedor) correo electrónico (vendedor o tienda), por ejemplo, [email protected]
-'cantidad': la cantidad de la receptora debe recibir, por ejemplo, $230,00
-'la Comisión': la Comisión de pagar al vendedor o la tienda para recibir

Nota
: es la cantidad en moneda de carrito de compras, usted tendrá que convertir a su moneda específica del módulo de pago antes de enviar a escapada de pago.

A continuación es el código de ejemplo para mostrar los datos de pago para el módulo de pago.

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

$this -> validateOrder(...)
 

El código para el proceso de pago será diferente para los módulos de pago diferentes. Dejaremos para que determinar cómo implementar el pago. También vamos a salir el error de pago para gestionar. Por ejemplo, si hay vendedor múltiples en un carrito de la compra, usted necesitará manejar si no de algún pago de vendedor. Algún crédito carro pago soporta 2 pasos - autorizar el pago en primer lugar y capturar la cantidad para terminar uno de los pagos, sugerimos que usted autoriza todos los pagos de vendedores primero y luego validateOrder() y luego de la llamada "capturan" para finalizar los pagos.

Nota:

Dependiendo de la pasarela de pago, necesitará información de pago del vendedor como las credenciales de la API en lugar de tu tienda si el beneficiario de pago es el vendedor. Puede utilizar siguiente código para obtener el vendedor pago información (como las credenciales de la API) para el módulo de pago.

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




Diviértete con la integración.