# 使用webhook自动同步woocommerce的订单

## erp-API 服务非 https 也可用配置

webhook 调用的时候默认是需要 https，但开发时本地一般不配置 ssl(或者只是自签名），所以需要在 wordpress 中添加非 https 也可用配置。
执行:在你应用的主题对应的 `functions.php` 中添加以下代码(可以放在最后）即可访问非https地址
备注:路径:比如你应用的主题是 `twentytwentyfive`，则对应的文件路径是 `<siteFolder>/app/public/wp-content/themes/twentytwentyfive/functions.php`

```php
add_filter( 'http_request_args', function( $args ) {
    $args['reject_unsafe_urls'] = false;
    return $args;
} );

// 跨平台获取请求头
$headers = [];
foreach ($_SERVER as $key => $value) {
    if (strpos($key, 'HTTP_') === 0) {
        $header_name = str_replace('_', '-', ucwords(substr($key, 5), '-'));
        $headers[$header_name] = $value;
    }
}

// 修正后的条件判断
if ( (isset($_GET['consumer_key']) && isset($_GET['consumer_secret'])) || isset($headers['Authorization']) ) {
    $_SERVER['HTTPS'] = 'on';
    if (!is_ssl()) { // WordPress内置函数检查
        wp_redirect(str_replace('http://', 'https://', $_SERVER['REQUEST_URI']));
        exit;
    }
}
```

## 在wordpress管理端网页添加webhook

地址: <http://wp-test.local/wp-admin/admin.php?page=wc-settings&tab=advanced&section=webhooks>
举例说明:
![1760338330047](image/使用webhook自动同步woocommerce的订单/1760338330047.png)

## 最终在订单更新时会调用地址，然后进而调用 syncSingleOrder 函数

## 备注
