更改 WooCommerce 中的 Webhooks 信息

问题描述 投票:0回答:1

是否可以过滤/更改 WooCommerce 中为 webhook 提供的信息? 任务如下:我使用 WooCommerce 作为在线商店平台,并通过 API 使用外部服务,该服务通过 Webhooks 通过 WooCommerce 接收每个订单的信息。收到的信息包括:

                        [X-WC-Webhook-Topic] => order.updated
                        [X-WC-Webhook-Resource] => order
                        [X-WC-Webhook-Event] => updated

是否可以过滤信息并将其作为 webhooks 的处理信息进行传输? 使用 WooCommerce 中 function.php 文件的合适源代码,是否可以更改为保加利亚以外的欧盟国家/地区发出的给定订单的信息?换句话说,如果客户在保加利亚境外下了订单,要计算产品的总价值 + 增值税并将其仅以 0% 增值税发送到 Webhooks?

示例: 德国客户以10欧元购买一盏LED灯,征收19%的税,价值变为11.90欧元。这 11.90 欧元应以 0% 增值税的信息通过 Webhook 发送,因为税费已包含在 11.90 欧元的金额中。重要的是,我与 Webhooks 一起使用的外部应用程序会收到含税总额,并收到 0% 的税率。

WooCommerce 中的实际信息不应更改,仅应更改通过 WebHooks 发送的信息。

php wordpress woocommerce webhooks
1个回答
0
投票

查看

woocommerce/includes/class-wc-webhook.php
文件,有一个名为“woocommerce_webhook_payload”的过滤器,它应该允许您在发送数据之前更新数据。

/**
 * Change webhook data before sending to the endpoint.
 * 
 * @filter woocommerce_webhook_payload
 * @priority 10
 * @arguments 4
 * 
 * @param array $payload
 * @param \WC_Order|\WC_Product|WP_User $resource
 * @param int $resource_id
 * @param string $webhook_id
 * @return array New payload
 */
add_filter('woocommerce_webhook_payload', function($payload, $resource, $resource_id, $webhook_id) {
    // Do stuff.
    return $payload;
}, 10, 4);

如果您需要添加新标头,则可以使用“woocommerce_webhook_http_args”过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.