简体   繁体   中英

Prestashop module payment hook not triggering

Prestashop 1.6.1.6 needs to make some API calls in the payment hook. However for some reason the hook is not triggering and hookPayment method is not executing. When comparing with Paypal module that has also hookPayment then this hook is executed. What I am doing wrong?

Module code is as simple as possible

<?php

if (!defined('_PS_VERSION_'))
    exit;

class TestModule extends Module
{

    public function __construct()
    {
        $this->name = 'testmodule';
        $this->tab = 'shipping_logistics';
        $this->version = '1.0.0';
        $this->author = 'Firstname Lastname';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Test Module');
        $this->description = $this->l('Description of my module.');

        $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
    }

    public function install()
    {
        if (!parent::install() || !$this->registerHook('payment'))
            return false;
        return true;
    }

    public function uninstall()
    {
        if (!parent::uninstall())
            return false;
        return true;
    }

    public function hookPayment($params)
    {
        ddd($params);
    }
}

After installing the hook is registered in database

mysql> select * from module where id_module=75;
+-----------+------------+--------+---------+
| id_module | name       | active | version |
+-----------+------------+--------+---------+
|        75 | testmodule |      1 | 1.0.0   |
+-----------+------------+--------+---------+
1 row in set (0,00 sec)

mysql> select * from hook_module where id_module=75;
+-----------+---------+---------+----------+
| id_module | id_shop | id_hook | position |
+-----------+---------+---------+----------+
|        75 |       1 |       1 |        4 |
+-----------+---------+---------+----------+
1 row in set (0,00 sec)

mysql> select * from hook where id_hook=1;
+---------+----------------+---------+-----------------------------------------------------+----------+-----------+
| id_hook | name           | title   | description                                         | position | live_edit |
+---------+----------------+---------+-----------------------------------------------------+----------+-----------+
|       1 | displayPayment | Payment | This hook displays new elements on the payment page |        1 |         1 |
+---------+----------------+---------+-----------------------------------------------------+----------+-----------+
1 row in set (0,00 sec)

您在函数名称中public function hoolPayment($params)字,它说public function hoolPayment($params) ,但应该是public function hookPayment($params)

PrestaShop module needs to extend PaymentModule during the installation for the ability to trigger payment hook. Just changing the extends nor reset do not help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM