Magento 2 注册回调 Url / webbook 例如添加到购物车而不更改 Magento 中的代码
Magento 2 register call back Url / webbook for e.g. add to cart without code changes in Magento
有没有办法从 magento2 注册 web hook 之类的函数,其中外部 API 在 magneto 网站上进行某些操作时被调用(将产品添加到购物车,添加发货等)
我需要从 API 执行此操作,Magento 站点托管在不同的终端(客户端),我几乎无法控制它。只是我想在 API 调用 magento 网站时做所有事情,
我知道可以通过 woocommerce 将我的外部 API 注册到 woocommerce 站点,然后我可以从那里将我的应用程序注册为回调。这一切都可以通过 API 调用 woocommerce 网站来完成,无需从 woocommerce 网站更改任何源代码。
有没有人对此有所了解,请给我一条参考路径。
对于这些情况,Magento 事件/观察者设计模式将是合适的,另请参阅 documentation。
因此,例如,要将产品添加到购物车 webhook,您可以使用 checkout_cart_product_add_after 事件。
您的模块应如下所示:
app/code/Company/Module/registration.php:
<?php
declare(strict_types = 1);
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Company_Module',
__DIR__
);
app/code/Company/Module/etc/module.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Company_Module"/>
</config>
app/code/Company/Module/etc/events.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_cart_product_add_after">
<observer name="company_module_checkout_cart_product_add_after" instance="Company\Module\Observer\CheckoutCartProductAddAfter" />
</event>
</config>
app/code/Company/Module/Observer/CheckoutCartProductAddAfter.php:
<?php
declare(strict_types = 1);
namespace Company\Module\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class CheckoutCartProductAddAfter implements ObserverInterface
{
/**
* Execute observer
*
* @param Observer $observer
* @return void
*/
public function execute(
Observer $observer
): void {
// Your code logic here, like:
$item = $observer->getEvent()->getQuoteItem();
$product = $item->getProduct();
$data = $this->_request->getParams();
}
}
从命令行添加这些文件后 运行 php bin/magento setup:upgrade
以启用模块。
如果您将其设为开源作曲家包,那么他们只需安装该包并进行一些配置。那就是要走的路。
然而,从 Magento 外部观察这些事件是不可能的。因此,如果您真的无法在 Magento 中进行任何更改,您可以做的是轮询 Magento api 以获取新的 quotes/shipments.
例如使用 Magento Rest API 获取发货清单(建议使用发送日期 from/to 过滤器):https://magento.redoc.ly/2.4.3-admin/tag/shipments#operation/salesShipmentRepositoryV1GetListGet
有没有办法从 magento2 注册 web hook 之类的函数,其中外部 API 在 magneto 网站上进行某些操作时被调用(将产品添加到购物车,添加发货等)
我需要从 API 执行此操作,Magento 站点托管在不同的终端(客户端),我几乎无法控制它。只是我想在 API 调用 magento 网站时做所有事情,
我知道可以通过 woocommerce 将我的外部 API 注册到 woocommerce 站点,然后我可以从那里将我的应用程序注册为回调。这一切都可以通过 API 调用 woocommerce 网站来完成,无需从 woocommerce 网站更改任何源代码。
有没有人对此有所了解,请给我一条参考路径。
对于这些情况,Magento 事件/观察者设计模式将是合适的,另请参阅 documentation。
因此,例如,要将产品添加到购物车 webhook,您可以使用 checkout_cart_product_add_after 事件。
您的模块应如下所示:
app/code/Company/Module/registration.php:
<?php
declare(strict_types = 1);
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Company_Module',
__DIR__
);
app/code/Company/Module/etc/module.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Company_Module"/>
</config>
app/code/Company/Module/etc/events.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_cart_product_add_after">
<observer name="company_module_checkout_cart_product_add_after" instance="Company\Module\Observer\CheckoutCartProductAddAfter" />
</event>
</config>
app/code/Company/Module/Observer/CheckoutCartProductAddAfter.php:
<?php
declare(strict_types = 1);
namespace Company\Module\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class CheckoutCartProductAddAfter implements ObserverInterface
{
/**
* Execute observer
*
* @param Observer $observer
* @return void
*/
public function execute(
Observer $observer
): void {
// Your code logic here, like:
$item = $observer->getEvent()->getQuoteItem();
$product = $item->getProduct();
$data = $this->_request->getParams();
}
}
从命令行添加这些文件后 运行 php bin/magento setup:upgrade
以启用模块。
如果您将其设为开源作曲家包,那么他们只需安装该包并进行一些配置。那就是要走的路。
然而,从 Magento 外部观察这些事件是不可能的。因此,如果您真的无法在 Magento 中进行任何更改,您可以做的是轮询 Magento api 以获取新的 quotes/shipments.
例如使用 Magento Rest API 获取发货清单(建议使用发送日期 from/to 过滤器):https://magento.redoc.ly/2.4.3-admin/tag/shipments#operation/salesShipmentRepositoryV1GetListGet