You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用WooCommerce Rest Api创建订单未返回checkout url问题求助

WooCommerce 调用REST API创建订单无checkout URL问题解决方案

问题根因

mailchimp_woocommerce_landing_site 是Mailchimp for WooCommerce插件的自定义字段,只有用户通过前端页面触发结账流程时,插件才会自动将当前落地的结账地址写入该meta字段。直接调用REST API创建订单不会触发前端页面相关的插件钩子,因此该字段默认值为空。

可用解决方案

方案1:直接按规则拼接结账URL(最稳定,无需修改站点代码)

WooCommerce订单结账支付URL有固定拼接规则,调用创建订单接口成功后,直接用返回的两个核心参数拼接即可,无需依赖第三方插件的meta字段:

  • 拼接规则:[你的站点域名]/checkout/order-pay/[订单ID]/?key=[订单key]
  • 接口返回参数说明:
    • 订单ID:创建订单成功后返回的顶层id字段值
    • 订单key:创建订单成功后返回的顶层order_key字段值
  • 示例:若订单ID为443614,订单key为wc_order_o9LVuBKCMnKP6,拼接后的完整URL为https://firewallforce.se/checkout/order-pay/443614/?key=wc_order_o9LVuBKCMnKP6,和你手动生成订单拿到的地址完全一致。

方案2:添加钩子自动填充meta字段(适用于必须保留该meta字段值的场景)

如果业务要求必须在mailchimp_woocommerce_landing_site字段中存储结账地址,可在站点主题的functions.php文件中添加如下钩子代码,监听REST API创建订单的动作,自动写入对应值:

add_action('woocommerce_rest_insert_shop_order', function($order, $request, $creating) {
    // 仅处理新建订单的场景
    if ($creating) {
        // 调用WooCommerce原生方法获取结账支付URL
        $payment_url = $order->get_checkout_payment_url();
        // 写入对应meta字段
        $order->update_meta_data('mailchimp_woocommerce_landing_site', $payment_url);
        $order->save_meta_data();
    }
}, 10, 3);

添加代码后再调用创建订单API,返回结果中对应meta字段的value就会自动填充正确的结账URL。

内容的提问来源于stack exchange,提问作者Prince Hamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:18:00