add_filter('wc_stripe_payment_intent_args', 'custom_split_payment_stripe', 10, 2);
function custom_split_payment_stripe($args, $order) {
// Luăm primul produs din comandă pentru a identifica vendorul (simplificat)
$items = $order->get_items();
$first_item = reset($items);
$product_id = $first_item->get_product_id();
$vendor_stripe_id = get_post_meta($product_id, '_vendor_stripe_account_id', true);
if (!$vendor_stripe_id) {
return $args; // Mergem pe contul principal dacă nu e produs de vendor
}
$total_cents = round($order->get_total() * 100);
$platform_fee_percent = 10; // Comisionul tău de 10%
$application_fee_cents = round($total_cents * ($platform_fee_percent / 100));
// Direcționăm plata prin Direct Charges sau Destination Charges
$args['application_fee_amount'] = $application_fee_cents;
$args['transfer_data'] = [
'destination' => $vendor_stripe_id,
];
return $args;
}Am implementat recent split payments pe un marketplace WooCommerce cu 120 de vendori activi și vă zic direct: Stripe Connect e singura variantă stabilă, dar vine cu niște bătăi de cap monumentale pe partea de contabilitate și comisioane. Dacă vrei să împarți banii automat între platformă și vânzători direct la checkout, ai nevoie de o arhitectură solidă, nu doar de un plugin instalat din repository. În postarea asta vă arăt cum am mapat fluxul și unde ne-am lovit de pragul de sus.
De ce Stripe Connect și nu „soluții românești”?
Am încercat inițial să facem un sistem hibrid cu procesatori locali, dar legislația de escrow și split-ul automat de fonduri i-a blocat complet pe partea de API. Stripe Connect rezolvă asta legal și tehnic prin trei tipuri de conturi: Standard, Custom și Express.
Pentru un marketplace unde vendorii nu sunt neapărat tech-savvy, ai de ales între Custom și Express. Noi am mers pe Express. Am economisit cam 3 săptămâni de development pentru că Stripe se ocupă de tot ce înseamnă onboarding, validare de documente (KYC) și dashboard-ul de payout-uri pentru vendori.
Trade-off-ul? Costă mai mult. Stripe îți ia 2$ pe lună pentru fiecare cont activ (care primește bani) plus 0.25% din volumul transferat. Dacă ai vendori mici care vând de 50 de lei pe lună, taxa asta de 2$ îți va mânca tot profitul. Pentru proiecte la început de drum, e un cost greu de înghițit.
Cum legi WooCommerce de Stripe Connect în cod
Când clientul pune în coș produse de la doi vendori diferiți, WooCommerce Stripe Gateway-ul standard nu știe să împartă banii. Trebuie să interceptăm crearea Payment Intent-ului și să specificăm parametrii de transfer.
Iată o variantă simplificată de hook prin care calculăm comisionul platformei (application fee) și direcționăm restul banilor către contul Stripe al vendorului conectat. Presupunem că ai salvat stripe_user_id-ul vendorului în metadatele produsului sau ale user-ului.