Integrate invoice payment into checkout
Edit on GitHubThis document describes how to integrate invoice payment into the checkout.
In PaymentMethods/Dependency/Injector
, in Yves, add CheckoutDependencyInjector
that injects the invoice form and handler into the Checkout
module:
Code sample:
<?php
namespace Pyz\Yves\PaymentMethods\Dependency\Injector;
use Spryker\Shared\Kernel\ContainerInterface;
use Spryker\Shared\Kernel\Dependency\Injector\DependencyInjectorInterface;
use Spryker\Yves\Checkout\CheckoutDependencyProvider;
use Pyz\Yves\PaymentMethods\Plugin\InvoiceHandlerPlugin;
use Pyz\Yves\PaymentMethods\Plugin\InvoiceSubFormPlugin;
use Spryker\Yves\StepEngine\Dependency\Plugin\Form\SubFormPluginCollection;
use Spryker\Yves\StepEngine\Dependency\Plugin\Handler\StepHandlerPluginCollection;
use Pyz\Shared\PaymentMethods\PaymentMethodsConstants;
class CheckoutDependencyInjector implements DependencyInjectorInterface
{
/**
* @param \Spryker\Shared\Kernel\ContainerInterface|\Spryker\Yves\Kernel\Container $container
*
* @return \Spryker\Shared\Kernel\ContainerInterface|\Spryker\Yves\Kernel\Container
*/
public function inject(ContainerInterface $container)
{
$container = $this->injectPaymentSubForms($container);
$container = $this->injectPaymentMethodHandler($container);
return $container;
}
/**
* @param \Spryker\Shared\Kernel\ContainerInterface $container
*
* @return \Spryker\Shared\Kernel\ContainerInterface
*/
protected function injectPaymentSubForms(ContainerInterface $container)
{
$container->extend(static::PAYMENT_SUB_FORMS, function (SubFormPluginCollection $paymentSubForms) {
$paymentSubForms->add(new InvoiceSubFormPlugin());
return $paymentSubForms;
});
return $container;
}
/**
* @param \Spryker\Shared\Kernel\ContainerInterface $container
*
* @return \Spryker\Shared\Kernel\ContainerInterface
*/
protected function injectPaymentMethodHandler(ContainerInterface $container)
{
$container->extend(static::PAYMENT_METHOD_HANDLER, function (StepHandlerPluginCollection $paymentMethodHandler) {
$paymentMethodHandler->add(new InvoiceHandlerPlugin(), PaymentMethodsConstants::PROVIDER);
return $paymentMethodHandler;
});
return $container;
}
}
If you recreate this example in Demoshop, you’ll need to do some adjustments on selectPayment()
from checkout.js
.
Thank you!
For submitting the form