I need to set up the module I'm building to listen for webhooks from an external service. What is the right approach for this? I've been trying to set up etc/frontend/routes.xml like so:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="paystandmagento" frontName="paystandmagento">
<module name="PayStand_PayStandMagento" />
</route>
</router>
</config>I have a controller at Controller/Webhook/PayStand.php like this:
<?php
namespace PayStand\PayStandMagento\Controller;
/**
* Webhook Receiver Controller
*/
class WebhookReceiver extends \Magento\Framework\App\Action\Action
{
/** @var \Psr\Log\LoggerInterface */
protected $_logger;
/**
* @param \Magento\Framework\App\Action\Context $context
* @param \Psr\Log\LoggerInterface $logger
*/
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Psr\Log\LoggerInterface $logger
) {
$this->_logger = $logger;
parent::__construct($context);
}
/**
* Receives webhook events from Roadrunner
*/
public function execute()
{
$this->_logger->addDebug('paystandmagento/webhook/paystand endpoint was hit');
}
}However, when I try to send a post request to http://<<magento base url>>/paystandmagento/webhook/paystand/ I get a 404 error page in response. What I want is for the endpoint to not return anything but a http 200 code, but for my controller to have access to the data payload to act upon.
Can this be done with routes, or do I need to configure a web api? I don't have control of the service that will be sending me webhooks except to set to url, so I can't use authentication.
Googling for answers here is difficult because searching for "Magento webhook" keeps returning results about the magento system sending out webhooks for it's own events - nothing about how to receive a webhook from outside.
I want the same thing but unable to get any thing