Añadir formas de pago PortalCliente🔗
El plugin está diseñado para que otros plugins puedan añadir sus propias formas de pago. Para hacer esto posible se creo un sistema fácil para añadir cualquier botón de pago deseada dentro de los pedidos y facturas.
Puede ver las siguientes clases de ejemplo para entender el código mejor.
FacturaScripts\Plugins\PortalCliente\Lib\Pay\PortalPaymentGatewayStripe;
FacturaScripts\Plugins\PortalCliente\Lib\Pay\PortalPaymentGatewayBank;
Creamos nuestra clase de pago🔗
Creamos nuestra clase dentro de Lib\Pay en nuestro plugin, podemos llamar a la clase como queramos, por ejemplo PortalPaymentGatewayPaypal.
<?php
namespace FacturaScripts\Plugins\MiPlugin\Lib\Pay;
use FacturaScripts\Core\Model\Base\SalesDocument;
use FacturaScripts\Dinamic\Model\Contacto;
use FacturaScripts\Plugins\PortalCliente\Contract\PortalPaymentGatewayInterface;
use FacturaScripts\Plugins\PortalCliente\Lib\PortalTools;
use Symfony\Component\HttpFoundation\Request;
class PortalPaymentGatewayPaypal implements PortalPaymentGatewayInterface
{
public function getHtml(SalesDocument $model, Contacto $contact): string
{
// aquí haremos lo necesario para mostrar nuestro botón de pago en la página del pedido o factura
// para recuperar los datos de pago será necesario volver al mismo sitio para añadiendo como mínimo la url como la ejemplo
// url retorno: PortalTools::getSiteUrl() . '/' . $model->url('public') . '&action=pay&platform=' . $this->name()
}
public function name(): string
{
return 'paypal';
}
public function payAction(SalesDocument &$model, Request $request): bool
{
// aquí recibiremos los datos de pago obtenidos en la url de devolución
// simplemente tendremos que comprobar si el pago es correcto y devovler true o false
// al devovler true, ya se marcará el documento como pagado, eso no es necesario que lo haga usted
}
}
Init.php🔗
Cargamos el controlador necesario para añadir nuestra clase personalizada de pago.
use FacturaScripts\Plugins\PortalCliente\Lib\Pay\PortalPaymentGateway;
use FacturaScripts\Plugins\MiPlugin\Lib\Pay\PortalPaymentGatewayPaypal;
public function init()
{
PortalPaymentGateway::register(new PortalPaymentGatewayPaypal());
}