在Joomla中从回调URL更新MySQL表


Updating MySQL table from callback URL in Joomla

我的网站是建立在joomla 2.5.8。该网站使用支付网关处理付款。

如你所知,joomla有这样的url结构(没有SEF):

index.php?option=com_componentname&controller=order&task=notify&gateway=paymentgateway

现在,支付网关提供商要求我向他们发送一个回调URL,以将事务的值传递给它,并允许我使用基于此URL值的事务信息更新MySQL数据库表。

问题是支付网关提供者将在回调URL中使用这些值:
?Response=1&status=10&code=123456-123456&token=f0021bfa-7ae4-48af-b4a2-d08d7a647b5e&lang=en&ignore=1

我的组件用作回调URL的链接应该是这样的:

index.php?option=com_componentname&controller=order&task=notify&gateway=paymentgateway
因此,支付提供商拒绝在他们的系统中设置这个回调URL,因为它包含"?"。它们必须使用这个"?"来传递回调URL中的事务值。

如果它们接受我给它们的回调,回调URL将是这样的:

index.php?option=com_componentname&controller=order&task=notify&gateway=paymentgateway?Response=1&status=10&code=123456-123456&token=f0021bfa-7ae4-48af-b4a2-d08d7a647b5e&lang=en&ignore=1

正如你在上面注意到的,回调URL将包含两个"?"问号。

到目前为止我所做的:我安装了一个组件,可以在我的Joomla网站上SEF任何非SEF url。因此,我将这个链接(index.php?option=com_componentname&controller=order&task=notify&gateway=paymentgateway)设置为(payment-status),并将其发送回支付提供者。但是,回调URL中传递的值不会更新我的数据库表。

所以在支付过程中一切都很好。一旦我到达获取参数值来更新数据库的点,它就不会。我怎样才能解决这个问题?

BR,

您需要向您的组件添加一个菜单项,以便您可以为回调页面创建一个菜单项。然后可以使用内置的Joomla SEF URL作为回调URL。由于它是一个菜单项,因此它将传递所需的正确参数以及支付处理程序发回的附加值。

如果您不熟悉组件的菜单项,您可以查看这里- show joomla component in menu item type