首页 > 解决方案 > 通过 webhook 发布时触发 javascript

问题描述

我有一个允许用户为订阅付费的网关。因此,一旦用户付款,就会通过 webhook 向我们的网站发送通知以及订单 ID、金额、产品名称等......我们会相应地更新数据库。

我想做的是整合谷歌电子商务跟踪。问题是网关不会重定向回我们的站点,而是将值发布到 webhook。

下面是我的跟踪代码。

ga('ecommerce:addTransaction', {
  'id': '<?php $_POST['orderid'] ?>',
  'affiliation': '<?php $_POST['company'] ?>',
  'revenue': '<?php $_POST['amount'] ?>',
  'shipping': '<?php $_POST['shipping_cost'] ?>',
  'tax': '<?php $_POST['tax'] ?>',
  'currency': 'EUR'
});

虽然我已将上述代码添加到 webhook,但它会更新数据库但不会触发分析事件。我认为这是因为需要打开页面才能执行 JS 代码。

相同的代码已添加到另一个页面,它工作正常。

数据发布到 webhook 时是否可以触发 JS 事件?

标签: javascriptphp

解决方案


您是否缺少echo输出字符串的关键字?此外,您确实需要转义这些变量。

我强烈建议让 PHP 在这里完成繁重的工作:

ga('ecommerce:addTransaction', <?php
echo json_encode([
    "id" => $_POST['orderid'],
    "affiliation" => $_POST['company'],
    "revenue" => $_POST['revenue'],
    "shipping" => $_POST['shipping'],
    "tax" => $_POST['tax'],
    "currency" => "EUR"
], JSON_PRETTY_PRINT);
?>);

使用json_encode可确保您的所有值都正确转义并输出有效的 JSON(这也是有效的 javascript)。

根据您提供的信息,无法知道这是否会解决您的问题;如果它不起作用并且您需要更多帮助,请发布 stackblitz 示例或更完整的版本。


推荐阅读