如何在Shopware 6结账完成页集成额外JS上报订单至第三方服务
Shopware 6结账完成页第三方订单数据上报集成方案
一、代码放置位置
你可以将第三方上报代码直接添加到现有Google Ads追踪代码所在的layout_head_javascript_tracking_google_ads_after_finish代码块内,或在该块之后新增独立代码块。推荐和现有追踪逻辑放在同一区域,便于后续维护。
如果第三方上报不需要依赖Google Ads的启用状态,建议将代码放在{% if swagData.active and swagData.conversionLabel %}判断之外,确保无论Google Ads是否启用,订单数据都能正常上报。
二、Twig变量获取订单信息
所需的三类订单数据可直接通过Shopware预定义的Twig变量获取,注意使用escape('js')避免JavaScript语法错误:
- 订单编号:
page.order.orderNumber - 订单总额:根据需求选择
page.order.amountNet(订单净额,不含税费)或page.order.amountTotal(订单总额,含税费) - 货币类型:
context.currency.shortName(如USD、EUR等标准货币代码)
三、完整示例代码
{% sw_extends '@Storefront/storefront/page/checkout/finish/index.html.twig' %} {% block layout_head_javascript_tracking_google_ads_after %} {{ parent() }} {% block layout_head_javascript_tracking_google_ads_after_finish %} {# 原有Google Ads转化追踪代码 #} {% if swagData.active and swagData.conversionLabel %} <script> window._tmGoogleAdsFns.push(function () { gtag('event', 'conversion', { 'send_to': '{{ swagData.conversionId }}/{{ swagData.conversionLabel|escape('js') }}', 'value': '{{ page.order.amountNet|escape('js') }}', 'currency': '{{ context.currency.shortName|escape('js') }}', 'transaction_id': '{{ page.order.orderNumber|escape('js') }}' }); }); </script> {% endif %} {# 新增第三方服务订单上报代码 #} <script> // 替换为第三方服务的实际上报逻辑 function reportOrderToThirdParty(orderNumber, orderAmount, currency) { // 示例:发送请求到第三方API fetch('https://第三方服务接口地址', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ order_number: orderNumber, total_amount: orderAmount, currency: currency }) }); } // 确保订单数据存在时执行上报 if ({{ page.order is defined ? 'true' : 'false' }}) { reportOrderToThirdParty( '{{ page.order.orderNumber|escape('js') }}', '{{ page.order.amountTotal|escape('js') }}', '{{ context.currency.shortName|escape('js') }}' ); } </script> {% endblock %} {% endblock %}
注意事项
- 替换示例中的第三方服务接口地址和上报逻辑为实际需求
- 根据第三方平台要求选择使用
amountNet或amountTotal - 若第三方上报需要异步执行,可参考Google Ads的写法,将逻辑放入合适的异步队列中(如果有)
内容的提问来源于stack exchange,提问作者Auhona
相关产品推荐
相关产品推荐

