Avisos
Vaciar todo

Configurar métodos de pago según variación del producto  

 
Matias
 Matias
Usuario activo

Hola, en uno de los sitios web de un cliente estamos usando las variaciones de producto para cambiar el precio según la forma de pago y nos ha venido perfecto porque mientras mas financiación damos, el precio aumenta, hasta ahí todo bien el problema viene cuando después de elegir la forma de pago (variación) se va a finalizar la compra, allí las formas de pago habilitadas deben variar según lo seleccionado.
Ademas debemos comprobar si hay mas de una forma de pago seleccionada en los productos añadidos en el carrito.... ¿Alguien ha enfrentado estos problemas o similar? 

Contenido solo visible a usuarios registrados

Citar
Respondido : 19/04/2023 4:00 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Matias.

Para que dominio es la consulta ?

El dominio novodespertarcba veo que esta en mantenimiento, si ese es el dominio al que haces referencia necesitaremos que tengas la web abierta para poder revisarlo.

 

Un saludo

 

ResponderCitar
Respondido : 19/04/2023 4:29 pm

Cursos Gratuitos WordPress

Matias
 Matias
Usuario activo

@pepesoler Ya lo saque de mantenimiento... 

ResponderCitar
Respondido : 19/04/2023 4:43 pm
Matias
 Matias
Usuario activo

Basicamente seria asi:

- si seleccionan transferencia bancaria, solo dar la opción de transferencia al momento de pagar.

- si se selecciona en cuotas (financiacion) ahí si dar la opción de, en este caso, la entidad de financiación llamada MercadoPago. 

- se me ocurre otro problema y es que pasa si el cliente selecciona en varios articulos, varias formas de pago. 

Gracias, Saludos

ResponderCitar
Respondido : 19/04/2023 4:46 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Matias, 

En este caso es posible necesites añadir un código a la medida para ocultar el método de pago según la selección del atributo, puedes probar ocultar un método de pago con el siguiente código que puedes añadir en el archivo function.php de tu tema o a trabes de un plugin como code snippets

add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);
function conditional_payment_gateways( $available_gateways ) {
$in_cart = false;
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
// Para el atributo llamado 'pa_forma-de-pago' en mi carrito
// Remplaza por tu atributo
if (array_key_exists('pa_forma-de-pago', (array) $values['data']->get_attributes() ) ) {
foreach ($values['data']->get_attributes() as $attribute => $variation);
// Varaición seleccionada 'efectivo-transferencia' modificala por tu variacion.
if ($variation == 'efectivo-transferencia') $in_cart = true; //edited
}
}
if ( $in_cart ) {
unset($available_gateways['paypal']); // desactiva el método de pago paypal, sustituye 'paypal' por el ID del método de pago a desactivar

}
else {
isset($available_gateways['bacs']); // activa solo la opción de transferencia, sustituye 'bacs' por el ID de tu método de pago

}
return $available_gateways;
}

También puedes revisar algunas opciones como el siguiente plugin → Contenido solo visible a usuarios registrados

Solo ten en cuenta que este último es de pago y no podemos comprobar su funcionalidad, por lo que antes de adquirirlo te recomiend consultes con los desarrolladores y verifiques te permite añadir lo que necesitas. 

Por otro lado, si requieres algo más personalizado te recomiendo consultes con nuestro directorio de colaboradores quienes pueden ayudarte a añadir lo que necesitas

Un Saludo 

ResponderCitar
Respondido : 19/04/2023 5:23 pm
Matias
 Matias
Usuario activo

Hola @karen 

Tengo estos atributos en las variaciones

image

 

Y con el plugin code snippets agregue el código que me enviaste pero modificado, por favor dime si esta mal porque no funciona.. 

add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);

function conditional_payment_gateways( $available_gateways ) {

$in_cart = false;

foreach ( WC()->cart->get_cart_contents() as $key => $values ) {

// Para el atributo llamado 'pa_forma-de-pago' en mi carrito

// Remplaza por tu atributo

if (array_key_exists('Tarjeta de crédito', (array) $values['data']->get_attributes() ) ) {

foreach ($values['data']->get_attributes() as $attribute => $variation);

// Varaición seleccionada 'Tarjeta de crédito' modificala por tu variacion.

if ($variation == 'Tarjeta de crédito') $in_cart = true; //edited

}

}

if ( $in_cart ) {

unset($available_gateways['Efectivo-transferencia bancaria']); // desactiva el método de pago paypal, sustituye 'paypal' por el ID del método de pago a desactivar




}

else {

isset($available_gateways['Tarjeta de crédito']); // activa solo la opción de transferencia, sustituye 'bacs' por el ID de tu método de pago




}
Esta publicación ha sido modificada el hace 1 año por Matias
ResponderCitar
Respondido : 09/05/2023 12:20 pm

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Matias.

Según entiendo lo que quieres es ocultar métodos de pago según el producto que tenga en la cesta.

//Primero comprobamos si el producto esta disponible o no en el carrito.
function is_product_in_cart( $prodids ){
	$product_in_cart = false;
	foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
		$product = $cart_item['data'];
    		if ( in_array( $product->id, $prodids ) ) {
	        	$product_in_cart = true;
		}
	}
	return $product_in_cart;
}
//  Luego ya desactivamos la pasarela que queramos por ID de producto. Cambia los números de ID en el array $prodids
function payment_gateway_disable_product( $available_gateways ) {
	global $woocommerce;
	//print_r( $available_gateways );
	$prodids=array(15,30);
	if ( isset( $available_gateways['paypal'] ) && is_product_in_cart( $prodids ) ) {
	    unset(  $available_gateways['paypal'] );
	}
        if ( isset( $available_gateways['cod'] ) && is_product_in_cart( $prodids ) ) {
	    unset(  $available_gateways['cod'] );
	}
	return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_product' );

En el ejemplo se desactivan las pasarelas Paypal (paypal) y contrareembolso (cod) pero * también puedes desactivar otras como transferencia bancaria (bacs) o Stripe (stripe)

 

Si no quieres utilizar código puedes utilizar un plugin:

-> https://es.wordpress.org/plugins/woocommerce-product-payments/

 

Un Saludo

ResponderCitar
Respondido : 09/05/2023 3:20 pm
Matias
 Matias
Usuario activo

@pepesoler Hola pepe, no, lo que queremos es que según la variación/forma de pago seleccionada deje pagar con un método o con otro. 
Ejemplo

Producto XX precios:

- 100 pagando mediante transferencia bancaria

- 120 pagando con tarjeta de crédito (MercadoPago). 

Si el usuario elige pagar con transferencia bancaria entonces al momento del checkout la opción MercadoPago debe deshabilitarse y solo dejar disponible la de transferencia bancaria. 

ResponderCitar
Respondido : 09/05/2023 3:25 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Matias.

Ok ya veo, Y como estas añadiendo esto?

screenshot novodespertarcba.com 2023.05.09 16 58 03

Por que lo que te podemos ofrecer es estándar pero si es algo personalizado va a ser complicado.

 

Un saludo

 

ResponderCitar
Respondido : 09/05/2023 3:59 pm
Matias
 Matias
Usuario activo

@pepesoler Lo esta agregando el usuario mediante variaciones en la ficha del producto

Screenshot at May 09 15 30 52
ResponderCitar
Respondido : 09/05/2023 7:32 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Matia, 

Si tienes esta variación debes modificar el código de acuerdo al slug de tu variación, por ejemplo efectiva transferencia

image

Ten en cuenta que estas opciones son personalizaciones adicionales en tu sitio web, si deseas añadir algo adicional te recomiendo consultes con nuestro directorio de colaboradores quienes pueden ayudarte a añadir lo que necesitas. 

Un Saludo 

ResponderCitar
Respondido : 09/05/2023 8:47 pm
Matias
 Matias
Usuario activo

@karen Hola Karen, en la forma de pago Transferencia bancaria, donde puedo ver el slug ?

Trasnf

 

 

 

 

ResponderCitar
Respondido : 12/05/2023 5:56 pm

Cursos Gratuitos WordPress

Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Matia, 

El slug que necesitas añadir en esta parte del código es el de tu atributo no el del método de envió.

image
image

Dentro de las opciones que indican el ID del método de pago es donde necesitas añadir este, este ID lo localizas editando el método de pago y copiándolo de la URL

Untitled

Un Saludo

ResponderCitar
Respondido : 12/05/2023 6:01 pm
Matias
 Matias
Usuario activo

@karen Creo que el código esta correcto pero no logro hacer que funcione: 

los atributos son: 
ef y tc 

1

 

Los slugs de los métodos de pago son

"bacs" para transferencia y "woo-mercado-pago-basic" para los cobros con tarjeta de credito 

2

 

entonces para agregar el codigo con el plugin Code snippets, el código queda así:

add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);
function conditional_payment_gateways( $available_gateways ) {
$in_cart = false;
foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
// Para el atributo llamado 'pa_forma-de-pago' en mi carrito
// Remplaza por tu atributo
if (array_key_exists('ef', (array) $values['data']->get_attributes() ) ) {
foreach ($values['data']->get_attributes() as $attribute => $variation);
// Varaición seleccionada 'efectivo-transferencia' modificala por tu variacion.
if ($variation == 'ef') $in_cart = true; //edited
}
}
if ( $in_cart ) {
unset($available_gateways['woo-mercado-pago-basic']); // desactiva el método de pago paypal, sustituye 'paypal' por el ID del método de pago a desactivar

}
else {
isset($available_gateways['bacs']); // activa solo la opción de transferencia, sustituye 'bacs' por el ID de tu método de pago

}
return $available_gateways;
}
ResponderCitar
Respondido : 13/05/2023 8:00 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Bruno
 Bruno
Soporte CMS Webempresa Moderator

Hola Matias,

Si aun modificando el código no logra ajustarse ni funcionar, es posible que no sea del todo compatible con alguno de tus elementos, ya sea la versión de Wordpress o la de Woocommerce

Tal como ya mencionaron mis compañeros, existen alternativas que vale la pena echarles un vistazo

- https://woocommerce.com/es-es/products/conditional-shipping-and-payments/

- https://es.wordpress.org/plugins/woocommerce-product-payments/

Pero si en definitiva ninguno cumple con lo requerido pues siempre puedes consultar con nuestros colaboradores para que adapten el código a tu medida

https://www.webempresa.com/directorio-colaboradores.html

Saludos!

 

ResponderCitar
Respondido : 13/05/2023 9:03 pm