WooCommerce订单完成后获取Stripe customer_id的相关技术问题咨询
问题解答
1. Stripe返回数据说明
- 官方WooCommerce Stripe Gateway插件会在支付流程完成后,自动将Stripe返回的
customer_id存储到站点数据库中,你可以直接读取调用:- 第一存储位置:对应订单的自定义元数据中,字段名为
_stripe_customer_id - 第二存储位置:如果下单用户是站点注册用户,
customer_id还会同步存储到该用户的WordPress用户元数据中,字段名同样为_stripe_customer_id,方便后续订单复用
- 第一存储位置:对应订单的自定义元数据中,字段名为
2. 可使用的WooCommerce Hook
完全有适配需求的钩子,如果你需要在订单状态标记为「完成」时触发操作,直接使用woocommerce_order_status_completed钩子即可,它会在订单状态变更为完成时自动触发执行自定义逻辑。
如果你不需要等订单手动标记完成,只要支付成功就执行操作,可替换为woocommerce_payment_complete钩子,触发时机更早。
3. 功能实现示例代码
你可以将以下代码添加到当前主题的functions.php文件中,或者封装为独立的自定义插件启用:
add_action( 'woocommerce_order_status_completed', 'send_stripe_customer_id_to_custom_api', 10, 2 ); function send_stripe_customer_id_to_custom_api( $order_id, $order ) { // 读取订单关联的Stripe customer_id $stripe_customer_id = $order->get_meta( '_stripe_customer_id', true ); // customer_id为空时直接终止,避免无效请求 if ( empty( $stripe_customer_id ) ) { return; } // 组装第三方API需要的参数 $request_data = [ 'order_id' => $order_id, 'billing_email' => $order->get_billing_email(), 'stripe_customer_id' => $stripe_customer_id // 可根据需求补充其他订单、用户字段 ]; // 发送请求到你的第三方API $api_response = wp_remote_post( '替换为你的第三方API接口地址', [ 'headers' => [ 'Content-Type' => 'application/json', // 按需添加API鉴权需要的请求头 ], 'body' => json_encode( $request_data ), 'timeout' => 30, ] ); // 可在此处增加请求结果校验、错误日志记录等逻辑 }
注:如果使用的是二次修改过的非官方Stripe Gateway插件,可先查看订单元数据确认
customer_id的存储字段名是否有调整。
内容的提问来源于stack exchange,提问作者User27
相关产品推荐
相关产品推荐

