Los siguientes diagramas de flujo representan el flujo básico necesario para que los pagos divididos de Paystack funcionen para WC Vendors. Esto también se puede adaptar para admitir cualquier pasarela de pago que admita pagos divididos.
Al observar el plugin de pasarela de pago Paystack para WooCommerce, parece que los pagos divididos ya son compatibles, pero son para una subcuenta fija/predefinida, y no admiten subcuentas dinámicas basadas en la lista de proveedores recuperada del pedido actual que se está procesando. Para que WC Vendors Marketplace admita pagos divididos con Paystack, se requiere que la división se genere dinámicamente según el número de proveedores cuyos productos se encuentran en el pedido que se está procesando actualmente.
Para admitir pagos múltiples divididos, el administrador del Marketplace debe tener una cuenta de Paystack y configurar el plugin con las claves de API para que las subcuentas se puedan crear a través de la API de Paystack. Durante la incorporación de proveedores, estos proporcionarán los detalles de su cuenta de liquidación que se utilizarán para configurar las subcuentas y facilitar los pagos divididos.
Descargar el diagrama de flujo como un documento PDF
Incorporación de proveedores
Recomendamos un sistema de incorporación sencillo que permita a los proveedores crear una cuenta desde la configuración del Marketplace rellenando un formulario sencillo con los detalles requeridos por Paystack para crear una cuenta, o pueden rellenar manualmente los detalles de la cuenta si ya tienen una cuenta con Paystack.
Aquí hay un diagrama de flujo que muestra el proceso de incorporación. Esto comienza desde el Panel de control del proveedor en la página de Configuración de pago.

Una vez creada la subcuenta, el código de subcuenta del proveedor debe guardarse en la cuenta del proveedor actual en el marketplace para que pueda utilizarse para pagos divididos. Consulte la guía de integración de la pasarela de pago para obtener más detalles.
Ejemplo
<?php update_user_meta( $user->ID, '_paystack_sub_account_code', 'ACCT_xxxxxxxxxxxxx' ); ?>
Flujo de pago del cliente
En la página de la Tienda del marketplace, un cliente puede comprar cualquier número de productos de cualquier número de proveedores. Al pagar, la integración de la pasarela de pago debe recuperar la lista de proveedores del pedido creado y utilizar esta lista para crear los pagos divididos según el total de cada proveedor en el carrito y la comisión establecida por el administrador del marketplace.

Procesamiento del pago
El procesamiento de un pago implica calcular las divisiones según las deudas del proveedor del pedido, consulte el documento de Integración de la pasarela de pago para obtener más detalles. A continuación, se muestra un diagrama de flujo para procesar el pago.

Los importes divididos deben calcularse dinámicamente en función de los artículos del pedido, la configuración de la comisión y las tarifas adicionales del carrito, como impuestos o gastos de envío. También es necesario comprobar lo siguiente para determinar quién recibe la comisión de impuestos y envío.
<?php
if ( wc_string_to_bool( get_option( 'wcvendors_vendor_give_taxes' ) ) ) {
// Addd tax fees to vendor total
} else {
// Add tax total to marketplace split
}
?>
if ( wc_string_to_bool( get_option( 'wcvendors_vendor_give_shipping' ) ) ) {
// Addd shipping fees to vendor total
} else {
// Add shipping total to marketplace split
}
Para crear la división para cada vendedor basándose en el pedido, puede obtener las deudas del vendedor del pedido y, a continuación, recuperar el código de subcuenta de cada vendedor de la base de datos local utilizando el ID del vendedor; consulte el documento de integración de la pasarela de pago como referencia. El código de subcuenta se guardará en la cuenta del vendedor durante la incorporación.
Ejemplo:
public function process_split_payment( $order ) {
$vendors_due = WCV_Vendors::get_vendor_dues_from_order( $order, false );
$sub_accounts = array();
foreach ( $vendors_due as $vendor_id => $products ) {
$_vendor_account = get_user_meta( $vendor_id, '_paystack_sub_account_code', true );
$sub_accounts[] = array(
'subaccount' => $_vendor_account,
'share' => $calculated_share,
);
// Other processing.
}
$split_payments = array(
'name' => 'Percentage Split for order #' . $order->get_id(),
'type' => 'percentage',
'currency' => woocommerce_get_currency(),
'subaccounts' => $sub_accounts,
'bearer_type' => 'subaccount',
'bearer_subaccount' => 'ACCT_hdl8abxl8drhrl3',
);
$this->send_split_to_paystack( $split_payments );
// Other processing.
}
Ajustes adicionales
Al crear los pagos divididos, es necesario comprobar la configuración del administrador y la configuración de la comisión para detectar cualquier tarifa que pueda deducirse del administrador o de las subcuentas. Estas incluyen los gastos de envío, las tarifas de Paystack, los impuestos y otros cargos. Estos cargos deben asignarse y deducirse correctamente o pagarse a cada vendedor si es necesario.
Estos también se pueden configurar por transacción y pueden utilizar la configuración establecida por el propietario de la plataforma en la página de configuración del plugin. Además, también necesitaríamos mostrar esta información a los vendedores durante la incorporación para que sepan en qué se están metiendo y las tarifas relacionadas con esto. Asimismo, esta configuración solo debería estar disponible cuando se hayan instalado WooCommerce + Paystack plugin para WooCommerce.