También se presentan algunas funcionalidades con un conjunto de sobresalientes características que hacen que las mismas sean prácticas y utilitarias adaptadas al sistema de Wordpress con Woocommerce que favorecen y optimizan aspectos fundamentales del mismo.

16 de julio de 2014

AÑADIR NUEVAS MONEDAS CON SUS SÍMBOLOS MONETARIOS Y REALIZAR CONVERSIÓN-PAGOS EN UNA MONEDA SIN SOPORTE EN PAYPAL EN WOOCOMMERCE



Funcionalidad de pagos y conversión de moneda automatizado completo para Paypal de Woocommerce para el plugin personalizado funciones.php


Unas de las propiedades o facultades más importantes que debe de tener una tienda online es el cobro de nuestros artículos o servicios de una forma rápida y cómoda tanto para nosotros cómo para el cliente. Esta propiedad nos la ofrece Woocommerce a través de la pasarela de pago integrada de PayPal. Desafortunadamente PayPal ofrece una exigua cantidad de monedas en las que puede operar, quedando muchos países fuera de la cobertura que ofrece, ya que su moneda no la implementa de forma nativa.

Empero este pequeño fragmento de código permite que la Pasarela de Pagos Paypal pueda trabajar en cualquier moneda permitiendo seleccionarla como moneda base de nuestra tienda y cuando el cliente vaya a utilizar PayPal como método de pago, este código convertirá automáticamente nuestra moneda a EUR o USD etc. compatible con PayPal, de manera que usted puede utilizar cualquier moneda con Paypal en Woocommerce.

A pesar de su rica funcionalidad que ofrece PayPal, usted puede encontrarse con algunos problemas derivados de esta falta de cobertura sobre su moneda. Estos problemas y su solución se describen a continuación:

.- Agregar una moneda que no está incluida en el listado de Woocommerce.
.- Cambiar los códigos y símbolos de acuerdo a la nueva moneda que acaba de agregar.
.- Hacer que Paypal de WooCommerce permita el cobro aunque nuestra moneda no sea compatible.
.- Conversión de paridad entre monedas de forma automática. La TASA de conversión de XXX a EUR o USD será seleccionada de forma automática por Google.

En el fragmento de código que se muestra en la parte inferior, se pueden ir siguiendo con detalle las distintas partes en las que está compuesta esta útil y sencilla funcionalidad.

1ª Parte.- Agregar la nueva moneda a la lista en la configuración de WooCommerce para permitir que todos los precios en la tienda se muestren en esta nueva moneda.

Establecer parámetros de código y nombre de la nueva moneda:
.- En  $currencies['XXX'] = en lugar de "XXX" puede poner el código de tres letras de la nueva moneda. Es importante saber, que de aquí en adelante nuestra moneda se identificará con esta cadena. Código ISO y nombre de monedas: ISO-4217
.- En 'NOMBRE MONEDA'  este es el nombre que queremos que aparezca en la lista desplegable con las demás monedas que incorpora Woocommerce Pej: Para Perú sería: Nuevo Sol.
.- Para seleccionarla ir a: Woocommerce >> Configuración >> General >> Moneda local del país de la tienda.

2ª Parte.- Ahora tenemos que añadir el símbolo de la nueva moneda Pej $ que le corresponda al código XXX.

Establecer parámetros de código y símbolo:
.- En  case 'XXX':  se vuelve a poner el código de tres letras de su moneda.
.- En $Currency_symbol = 'SÍMBOLO' se tiene que poner el símbolo de moneda que vamos a utilizar en nuestros precios.

Si el símbolo de la moneda aparece antes que el precio y no detrás de él y desea colocarlo detrás, lo puede hacer en el Panel de Administración en WooCommerce >> Configuración >> Catálogo >> Opciones de Precios >> Posición símbolo de moneda y elegimos 'derecha (con espacio). Esto hará que el precio se vea en nuestro catálogo como '200 ?? '.

3ª Parte.- Filtro para añadir el código de 'moneda a convertir' a la matriz de monedas válidas de PayPal.

4ª Parte.- Este fragmento comprueba si $paypal_args['currency_code'] == 'XXX' , donde XXX es el código de la nueva moneda que hemos establecido en $currencies['XXX'] en el punto 1.
Ya que nuestra moneda XXX no está respaldada por Paypal, lo que hace el resto del código es convertirla a "EUR", "USD" u otra, para que puedan efectuarse los pagos en estas monedas.

Para evitar estar constantemente comprobando la paridad de la nueva moneda con respecto a la que usaremos para la conversión en PayPal y estar cambiando el valor en el código manualmente, aquí se implementa una conversión automática gracias a la valiosa aportación de google.com/finance/converter. En caso de que su moneda fluctúe con frecuencia, no será necesario el actualizar la paridad constantemente ya que Google comprobará el tipo de cambio a aplicar en cada momento.
En este ejemplo sólo convierte XXX a EUR para hacer los pagos, pero usted continuará con su propia moneda en la tienda como quedó establecido en los pasos 1 y 2 anteriores para poder seguir usando las demás pasarelas de pago en esta moneda; la moneda local de su país.

5ª Parte.- Añade los detalles del método de pago al correo electrónico de nuevo pedido a woocommerce.

Código completo: Copie y pegue este snippet a su plugin personalizado funciones.php y cofigúrelo cómo se ha comentado en el artículo. En el código están '// COMENTADOS' con claridad las líneas que hay que configurar con los parámetros correspondientes a la nueva moneda: Funcionalidad de conversion de moneda para Woocommerce


NOTAS: El código convierte el valor del importe de la compra de una moneda a otra en PayPal correctamente, pero el IVA si va por separado en una nueva línea de cálculo no.
Si hay alguien con una verdadera vocación y desinteresada actitud de colaboración puede corregir esto, sería bueno que lo pusiera a disposición del autor del blog para que pueda ser publicado y quede a disposición de la comunidad.

Las secciones 1 y 2 pueden utilizarse individualmente al resto del código, si sólo queremos cambiar el tipo de moneda de la tienda y utilizar las demás pasarelas de pago con la nueva moneda local del país.

Enlaces de utilidad:
  • Fuente original del código : Blackhatworld.
  • Código ISO de monedas: ISO-4217.
  • Esta solución se basa en WordPress versión 3.7.1 y la versión plugin 2.0.20 Woocommerce. 
  • Monedas aceptadas por Paypal para Woocommerce. Paypal divisas.  
  • Calculadora Google Finance Converter. (Para comprobar la exactitud de la coversión)
  • Tarifas que cobra PyPal, divisas de PayPal y tarjetas de crédito que acepta PayPal. Tarifas
Hay algunas advertencias sobre este "snippet" que se debe tener en cuenta:

.- Utilizar la puerta de pruebas sandbox de PayPal en el modo de recinto de seguridad, para poder probar que la conversión sea correcta.
.- Tendrá que cambiar manualmente a "completado" o lo que es el siguiente paso una vez que el pago se ha procesado para que se envíe el pedido o la descarga se haga disponible dependiendo del tipo de producto.


==== CÓDIGO QUE AÑADIREMOS A NUESTRO PLUGIN PERSONALIZADO FUNCIONES.PHP ====
/* -----------------------------------------------------------------------------------------------------------------------
AGREGAR PAGOS EN UNA MONEDA SIN SOPORTE POR PAYPAL A LA PLATAFORMA WOOCOMMERCE.
----------------------------------------------------------------------------------------------------------------------------*/

// 1ª PARTE: HABILITAR LA NUEVA MONEDA EN WOOCOMMERCE.
add_filter( 'woocommerce_currencies', 'anadir_codigo_nueva_moneda_a_woocommerce' );
function anadir_codigo_nueva_moneda_a_woocommerce( $currencies )
{
 $currencies['XXX'] = __( ' NOMBRE MONEDA ', 'woocommerce' );  // ESTABLECER: 1º EL CÓDIGO MONEDA 'XXX' Y 2º EL NOMBRE ' Nombre moneda '
 return $currencies;
}

// 2ª PARTE: AÑADIR A WOOCOMMERCE EL SÍMBOLO DE LA NUEVA MONEDA.
add_filter('woocommerce_currency_symbol', 'anadir_simbolo_de_la_nueva_moneda', 10, 2);
function anadir_simbolo_de_la_nueva_moneda ( $currency_symbol, $currency ) {
    switch( $currency ) {
    case 'XXX': $currency_symbol = 'SÍMBOLO'; break;   // ESTABLECER: 1º EL CÓDIGO DE LA MONEDA Y 2º EL SÍMBOLO 'Pej $'
}
    return $currency_symbol;
}

// 3ª PARTE: FILTRO PARA AÑADIR EL CÓDIGO DE 'MONEDA A CONVERTIR' A LA MATRIZ DE MONEDAS VÁLIDAS DE PAYPAL.
add_filter( 'woocommerce_paypal_supported_currencies', 'anadir_a_paypal_nueva_moneda' );
function anadir_a_paypal_nueva_moneda( $currencies )
{  
     array_push ( $currencies , 'XXX' );  // IMPORTANTE: CÓDIGO DE LA MONEDA QUE QUIERE CONVERTIR.
     return $currencies;
}

// 4º PARTE: CONVERSIÓN AUTOMÁTICA DE LA NUEVA MONEDA A LAS PERMITIDAS POR PAYPAL.
add_filter('woocommerce_paypal_args', 'conversion_de_la_nueva_moneda');
function conversion_de_la_nueva_moneda ($paypal_args){
$amount = urlencode(1);

    $from_Currency = urlencode("XXX"); // IMPORTANTE: CÓDIGO DE LA MONEDA QUE QUIERE CONVERTIR.
    $to_Currency = urlencode("EUR");  // IMPORTANTE: CÓDIGO DE MONEDA SOPORTADA POR PAYPAL.

    $url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency";

$ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $data = explode('bld>', $rawdata);
    $data = explode($to_Currency, $data[1]);
    $amnt = round($data[0], 3);

 if ( $paypal_args['currency_code'] == 'XXX') // IMPORTANTE: CÓDIGO DE LA MONEDA QUE QUIERE CONVERTIR.
{
        $convert_rate = $amnt;
        $paypal_args['currency_code'] = 'EUR'; // IMPORTANTE: CÓDIGO DE MONEDA SOPORTADA POR PAYPAL.
        $i = 1;

// SIN LAS DECLARACIONES IF LE DARÁ CIFRAS TOTALMENTE EQUIVOCADAS.
while (isset($paypal_args['amount_' . $i])) {
if ($amnt < 1)
{
            $paypal_args['amount_' . $i] = round($paypal_args['amount_' . $i] * $convert_rate, 2);
}
elseif ($amnt > 1)
{
            $paypal_args['amount_' . $i] = round($paypal_args['amount_' . $i] / $convert_rate, 2);
}
            ++$i;
        } }
return $paypal_args;
}


// 5º PARTE: AÑADE LOS DETALLES DEL MÉTODO DE PAGO AL CORREO ELECTRÓNICO DE WOOCOMMERCE
add_action( 'woocommerce_email_after_order_table', 'metodo_de_pago_del_nuevo_pedido', 15, 2 );
function metodo_de_pago_del_nuevo_pedido( $order, $is_admin_email ) {
    if ( $is_admin_email ) {
    echo 'Metodo de Pago: ' . $order->payment_method_title . '
';
}}



Conversión de una moneda no soportada por Paypal en Woocommerce | Añadir conversión de moneda a una tienda online | IVA para productos en WooCommerce | Añadir el metodo de pago al email de Woocommerce | Soporte de convertidor de moneda | Métodos de pago para tienda online | Cambiar la moneda en WooCommerce | Plugin WordPress para tiendas online | Calculadora de Conversión para Cambio de Divisa Google | Conversión de moneda para Paypal | Woocommerce pagos con monedas internacionales | Cambiar el tipo de moneda en WooCommerce | Agregar nueva moneda a Woocommerce | Cómo poner el simbolo monetario de tu pais en Woommerce | Cambio de divisa según países en Woocommerce | Cómo Configurar Paypal en Woocommerce y pasarelas de pago | Plugin de Wordpress para tienda online | Convertidor de Moneda - Tasa de Cambio con Google | WooCommerce Currency Converter | Paypal currency converter | Currency conversion for Non PayPal supported currencies | PayPal Checkout and currency conversion.