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

WordPress WooCommerce对接Smsbroadcast API实现下单后自动发送SMS

WooCommerce 集成 Smsbroadcast 下单后自动发短信实现方案

我们通过WooCommerce提供的订单状态钩子触发短信发送逻辑,把你提供的Smsbroadcast API调用代码封装后绑定到对应钩子即可,代码可以放到当前主题的functions.php文件末尾,也可以封装为独立的自定义插件使用,不要修改WooCommerce核心文件。

  • 提前把代码中的USERNAME、PASSWORD替换为你在Smsbroadcast平台的实际账号密码
  • $source变量替换为你的品牌名,长度需要符合Smsbroadcast平台的发送方名称规则
  • 可根据自身业务需求调整触发短信的时机,以下示例默认在订单付款完成后触发
<?php
// 封装Smsbroadcast短信发送函数
function send_sms_via_smsbroadcast($content) {
    $ch = curl_init('https://api.smsbroadcast.com.au/api-adv.php');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;    
}

// 绑定WooCommerce付款完成钩子
add_action('woocommerce_payment_complete', 'send_sms_after_order_paid', 10, 1);
function send_sms_after_order_paid($order_id) {
    // 获取订单对象
    $order = wc_get_order($order_id);
    if (!$order) return;

    // 配置参数
    $username = 'USERNAME';
    $password = 'PASSWORD';
    $destination = $order->get_billing_phone(); // 动态获取订单收货人的手机号
    $source = '你的品牌名称';
    // 自定义短信内容,可按需拼接订单号、金额等信息
    $text = '您好,您的订单'.$order->get_order_number().'已支付成功,我们将尽快为您发货,感谢您的购买!';
    $ref = 'order_'.$order_id; // 用订单号作为参考标识方便后续排查

    // 组装请求参数
    $content =  'username='.rawurlencode($username).
                '&password='.rawurlencode($password).
                '&to='.rawurlencode($destination).
                '&from='.rawurlencode($source).
                '&message='.rawurlencode($text).
                '&ref='.rawurlencode($ref);

    // 调用发送接口
    $smsbroadcast_response = send_sms_via_smsbroadcast($content);
    $response_lines = explode("\n", $smsbroadcast_response);

    foreach($response_lines as $data_line){
        $message_data = explode(':',$data_line);
        if(empty($message_data)) continue;
        
        // 生产环境建议把返回结果写入日志,不要直接输出,示例用error_log记录
        if($message_data[0] == "OK"){
            error_log("短信发送成功,收件人:".$message_data[1].",参考标识:".$message_data[2]);
        }elseif($message_data[0] == "BAD"){
            error_log("短信发送失败,收件人:".$message_data[1].",失败原因:".$message_data[2]);
        }elseif($message_data[0] == "ERROR"){
            error_log("短信请求出错,错误原因:".$message_data[1]);
        }
    }
}
?>

补充说明

  • 如果你需要在用户提交订单(未付款)时就发送短信,可以把钩子换成woocommerce_new_order
  • 如果你需要在订单标记为已完成(发货后)发送短信,可以把钩子换成woocommerce_order_status_completed
  • 测试阶段可以把$destination变量临时写死为自己的手机号,确认发送功能正常后再换回动态获取的订单手机号
  • 如果你的站点服务器限制了curl请求,需要联系服务器运营商放开对smsbroadcast.com.au接口的访问限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 01:15:03