WooCommerce: varias cuentas de Stripe (resuelto)

El complemento WooCommerce se integra completamente con el complemento WooCommerce Stripe Payment Gateway , desarrollado por Automattic. Con este complemento gratuito, la pasarela de pago de Stripe se puede habilitar a través de la configuración de WooCommerce y una vez que se configuran su "Clave publicable en vivo" y "Clave secreta en vivo" de Stripe , su tienda WooCommerce está lista para aceptar pagos con tarjeta de crédito con la tecnología de Stripe.

Ahora, hay alguna documentación en línea que explica, con un poco de código, cómo cambiar la cuenta de Stripe de forma programática y condicional, es decir, para una identificación de producto determinada o un slug de categoría de producto, igual que lo que hemos visto recientemente con PayPal Standard ( aquí está el tutorial para usar diferentes cuentas de PayPal dentro de una sola instalación de WooCommerce ). Por ejemplo, es posible que desee utilizar una cuenta de Stripe para ventas digitales y otra diferente para productos físicos.

Sin embargo, a diferencia de PayPal Standard, la documentación y los fragmentos en línea están bastante desactualizados y requieren, a menudo, crear una clase personalizada, lo que siempre es una tarea difícil en la programación de PHP. Afortunadamente, hay nuevos ganchos de WooCommerce Stripe y, por lo tanto, es posible usar cuentas de Stripe diferentes o múltiples en una sola instalación de WooCommerce .

Lea el descargo de responsabilidad a continuación y, solo entonces, ¡disfrútelo!

Mi objetivo es usar mis claves de Stripe para todos los pagos, aparte de una ID de producto determinada, que deberá depositar fondos en una cuenta de Stripe diferente.

Fragmento de PHP: use una cuenta de Stripe diferente para una ID de producto @ WooCommerce Checkout

Descargo de responsabilidad: el fragmento a continuación PUEDE CAUSAR efectos secundarios: utilícelo bajo su propio riesgo. Por ejemplo, puede interferir con el manejo de reembolsos de Stripe (mejor si crea reembolsos manualmente desde Stripe en lugar de usar el administrador de pedidos de WooCommerce) o generar otros errores desconocidos. Personalizar las pasarelas de pago es muy peligroso y solo debe hacerse si conoce las posibles consecuencias. Por favor, pruebe esto a fondo.
Tenga en cuenta: el fragmento a continuación busca una ID de producto dentro del pedido y cambia las claves de Stripe si tiene éxito. En caso de que el pedido contenga varios productos, deberá encontrar una solución, por ejemplo, permitiendo solo 1 producto en el carrito .
/**
 * @snippet       Switch Stripe Account @ WooCommerce Checkout
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli, BusinessBloomer.com
 * @testedwith    WooCommerce 4.6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
// -------------------
// 1. Create function to find Product ID
 
function bbloomer_product_id_in_cart( $id ) {
   $product_cart_id = WC()->cart->generate_cart_id( $id );
   $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
   if ( $in_cart ) return true;
   return false;
}
 
// -------------------
// 2. Change Stripe keys on the go
 
add_filter( 'wc_stripe_params', 'bbloomer_conditional_publishable_key', 9999 );
 
function bbloomer_conditional_publishable_key( $params ) {
 
   // PRODUCT ID HERE
   if ( ! bbloomer_product_id_in_cart( 12345 ) ) return $params;
 
   // STRIPE Live Publishable Key HERE
   $params[ 'key' ] = 'pk_live_................';
 
   return $params;
}
 
add_filter( 'wc_stripe_payment_request_params', 'bbloomer_conditional_publishable_key_request', 9999 );
 
function bbloomer_conditional_publishable_key_request( $params ) {
 
   // PRODUCT ID HERE
   if ( ! bbloomer_product_id_in_cart( 12345 ) ) return $params;
 
   // STRIPE Live Publishable Key HERE
   $params[ 'stripe' ][ 'key' ] = 'pk_live_................';
 
   return $params;
}
 
add_filter( 'woocommerce_stripe_request_headers', 'bbloomer_conditional_private_key_headers', 9999 );
 
function bbloomer_conditional_private_key_headers( $headers_args ) {
 
   // PRODUCT ID HERE
   if ( ! bbloomer_product_id_in_cart( 12345 ) ) return $headers_args;
 
   // STRIPE Live Secret Key HERE
   $headers_args[ 'Authorization' ] = 'Basic ' . base64_encode( 'sk_live_..........' . ':' );
 
   return $headers_args;
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir