An example here from payment module of ps_checkout
/** * Add payment option at the checkout in the front office (prestashop 1.7) * * @param array{cookie: Cookie, cart: Cart, altern: int} $params * * @return array */ public function hookPaymentOptions(array $params) { /** @var Cart $cart */ $cart = $params['cart']; if (false === Validate::isLoadedObject($cart) || false === $this->checkCurrency($cart) || false === $this->merchantIsValid() ) { return []; } /** @var \PrestaShop\Module\PrestashopCheckout\Repository\PaypalAccountRepository $paypalAccountRepository */ $paypalAccountRepository = $this->getService('ps_checkout.repository.paypal.account'); /** @var \PrestaShop\Module\PrestashopCheckout\FundingSource\FundingSourceProvider $fundingSourceProvider */ $fundingSourceProvider = $this->getService('ps_checkout.funding_source.provider'); $paymentOptions = []; foreach ($fundingSourceProvider->getAll() as $fundingSource) { $paymentOption = new PrestaShop\PrestaShop\Core\Payment\PaymentOption(); $paymentOption->setModuleName($this->name . '-' . $fundingSource->name); $paymentOption->setCallToActionText($fundingSource->label); $paymentOption->setBinary(true); if ('card' === $fundingSource->name && $paypalAccountRepository->cardHostedFieldsIsAvailable()) { $this->context->smarty->assign('modulePath', $this->getPathUri()); $paymentOption->setForm($this->context->smarty->fetch('module:ps_checkout/views/templates/hook/paymentOptions.tpl')); } $paymentOptions[] = $paymentOption; } return $paymentOptions; }
As you see there is a method hookPaymentOptions which is transplanted automatically into paymentOptions hook. But in your case your payment module was not hooked to this and that is why you can not see this payment module as an option in checkout page. Because this method is responsible for sending data to FO in which to present it as a payment option.
Another thing is you said you could not transplant this module manually into the hook of paymentOptions because you do not see that in the list. That is what I understood. So, you should check if the payment module has implemented this method hookPaymentOptions or not. If it is there just check the install method of the module and use $this->register() to transplant the hook into the module. You should reset your module to take effect. If you have critical data in your payment module do not reset it. Just put this in the install method and in __construct() method. Then just reload the module lists in BO and the transplant action takes place.