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

使用Stripe Connect Express搭建类Airbnb支付系统的配置咨询

解决方案:实现类Airbnb的Stripe Connect佣金与延迟付款流程

核心思路

放弃默认的Destination Charge直接打款模式,改用分离式收费+延迟转账方案:用户付款全额先进入平台账户,24小时后从该笔付款中拆分出酒店应得部分转账,平台留存15%佣金,无需动用自有余额。


1. 调整Stripe Connect付款模式

在「Payment Plugins for Stripe WooCommerce」插件中修改配置:

  • 切换Connect模式为Separate Charges and Transfers(平台先收全款,后续手动/自动转账给商家)。
  • 禁用插件默认的自动打款逻辑,确保用户付款资金直接进入你的平台Stripe账户。

2. 定制付款金额计算

通过Woocommerce钩子或插件定制功能,修改订单应付金额:

  • 用户最终付款 = 房源预订总价 × 1.15(包含15%平台佣金)。
  • 将酒店应得金额(原始总价)、平台佣金金额、酒店的Stripe Connect ID存储为订单元数据,方便后续转账使用。

3. 触发预订确认流程

利用Woocommerce订单状态钩子,在用户付款完成后(woocommerce_order_status_completed)执行:

  • 更新房源日历为已预订状态(通过Hivepress的房源状态API)。
  • 发送预订确认通知给管理员和用户。
  • 调度一个24小时后的延迟任务,用于执行酒店转账。

4. 实现延迟转账(无需平台余额)

通过Stripe API实现从用户付款资金中直接转账给酒店,代码示例(适配WordPress/Woocommerce环境):

// 订单完成后调度24小时后的转账任务
add_action('woocommerce_order_status_completed', 'schedule_hotel_payout', 10, 1);
function schedule_hotel_payout($order_id) {
    $order = wc_get_order($order_id);
    // 从订单元数据获取酒店Connect ID和应得金额
    $hotel_connect_id = $order->get_meta('_hotel_stripe_connect_id');
    $hotel_amount = $order->get_total() / 1.15; // 还原原始预订总价
    
    // 24小时后执行转账(86400秒)
    wp_schedule_single_event(time() + 86400, 'execute_hotel_payout', [$order_id, $hotel_connect_id, $hotel_amount]);
}

// 执行转账的回调函数
add_action('execute_hotel_payout', 'execute_hotel_payout_callback', 10, 3);
function execute_hotel_payout_callback($order_id, $hotel_connect_id, $hotel_amount) {
    $order = wc_get_order($order_id);
    $stripe_charge_id = $order->get_meta('_stripe_charge_id'); // 获取用户付款的Charge ID
    
    // 初始化Stripe客户端
    \Stripe\Stripe::setApiKey('你的平台Secret Key');
    
    try {
        $transfer = \Stripe\Transfer::create([
            'amount' => (int)($hotel_amount * 100), // Stripe以分为单位
            'currency' => 'cnx', // 替换为你的实际币种(如usd、eur)
            'destination' => $hotel_connect_id,
            'source_transaction' => $stripe_charge_id, // 关联原始付款,直接从该笔资金扣除
            'description' => "订单#{$order_id} 酒店结算款"
        ]);
        
        // 记录转账ID到订单,便于后续查询
        $order->update_meta_data('_stripe_transfer_id', $transfer->id);
        $order->save();
    } catch (\Stripe\Exception\ApiErrorException $e) {
        // 转账失败处理:记录日志、通知管理员
        error_log("Stripe转账失败(订单{$order_id}):" . $e->getMessage());
    }
}

5. 测试与验证

  • 使用Stripe测试卡号创建订单,确认付款资金进入平台账户。
  • 等待24小时后,检查Stripe Dashboard的Transfer记录,确认酒店账户收到对应金额,平台留存15%佣金。
  • 验证WP-Cron服务正常运行(延迟任务依赖此服务),若服务器Cron异常,可改用第三方定时任务工具触发转账。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:01:46