El blog de LiveCommerce

Un blog de comercio electrónico y tiendas online

Integración de Trustly con PHP para una tienda online

En el siguiente artículo explicaremos como realizar una integración con Trustly y PHP. Podrás ver el código fuente de los dos procesos más importantes de la integración. La mayor parte del trabajo la realiza la API de Trustly que ellos mismos te facilitarán.

Requisitos:

  • Tener una cuenta con Trustly.
  • Solicitar a Trustly un usuario, contraseña y clave privada (archivo .pem) para hacer pruebas.
  • Descargarse la API de Trustly
  • Pasar la validación técnica de Trustly con la ayuda de su equipo técnico.
  • Cambiar los datos de conexión a la cuenta REAL.

¿Cómo funciona?

Trustly permite que cargues un iframe dentro de la tienda. Con un IFRAME de 600px de ancho por 350px de alto es suficiente. Es decisión tuya donde cargar ese IFRAME. Lo más lógico es hacerlo en una página a parte después del último paso del proceso de compra. Ésta página puedes diseñarla como quieras. Dentro del iframe se cargará el widget de TRUSTLY que es bastante guapo. widget-trustly

¿Cómo lo hace liveCommerce?

Dejamos que el cliente seleccione la forma de pago que quiera.

paso1-trustly

Le mostramos el resumen final del proceso de compra.

Éste paso no es obligatorio. En definitiva puedes hacer lo que quieras.No obstante, puedes ver como nos lo curramos y le recordamos al usuario que añada el seguro del smartphone. paso2-trustly

Cargamos el IFRAME de Trustly.

Ésta es la página que tienes que programar para cargar el iframe de Trustly.Seguidamente lo explicamos.paso3-trustly

¿Qué necesitas programar?

PROCESO 1: Cargar el iframe de Trustly dentro de la tienda

Deberás utilizar la API que Trustly te facilita (muy sencilla) y conseguir la URL del IFRAME que cargarás en tu tienda. En el siguiente código Verás una función llamada getOrderDataByOrderID que debes crearte para conseguir los datos del pedido creado o del carrito (según cómo trabajes, será carrito o pedido ya creado).Algunos de estos datos necesitas enviarlos a Trustly. [code language="php"]require '/libraries/Trustly.php';$ORDER_DATA = getOrderDataByOrderID($order_id); /* DATOS QUE NOS FACILITA TRUSTLY */$username = '__NOMBRE_DE_USUARIO_EN_TRUSTLY__';$password = '__CONTRASEÑA_EN_TRUSTLY__';$pemFile = '/__RUTA/COMPLETA/DE/LA/CLAVE/PRIVADA/private.pem';$host = 'test.trustly.com'; /* CONEXIÓN CON TRUSTLY PARA OBTENER EL OBJETO $API_TRUSTLY */$API_TRUSTLY = new Trustly_Api_Signed($pemFile, $username, $password, $host); /* PREPARACIÓN DE LOS PARÁMETROS QUE DEBEMOS ENVIAR A TRUSTLY PARA CONSEGUIR LA URL DEL IFRAME */$notificationurl = 'http://midominio.com/__URL_DE_NOTIFICACION_DONDE_TRUSTLY_DIRA_SI_HA_PAGADO_O_NO';$enduserid = $ORDER_DATA['customer_id']; // Cuidado con esto cuando se pueda comprar sin ser cliente$messageid = time() . '-' . $order_id;$locale = 'es_ES'; // ¿Y para clientes mios fuera de españa?$amount = number_format($ORDER_DATA['total'], 2);$currency = 'EUR';$country = NULL;$mobilephone = NULL;$firstname = NULL;$lastname = NULL;$nationalidentificationnumber = NULL;$shopperstatement = NULL;$ip = NULL;$successurl = 'http://midominio.com/__URL_DE_SUCCESS_DONDE_REDIRIGIR_AL_USUARIO';$failurl = 'http://midominio.com/__URL_DE_FAIL_DONDE_REDIRIGIR_AL_USUARIO'; /* LLAMADA A LA API DE TRUSTLY PARA CONSEGUIR LA URL DEL IFRAME */$deposit = $API_TRUSTLY->deposit($notificationurl, $enduserid, $messageid, $locale, $amount, $currency, $country, $mobilephone, $firstname, $lastname, $nationalidentificationnumber, $shopperstatement, $ip, $successurl, $failurl); /* SI TODO ES CORRECTO YA TENEMOS LA URL DEL IFRAME */$iframe_url = $deposit->getData('url');[/code]

PROCESO 2: Gestionar el callback que hace Trustly y devolver una respuesta correcta.

El otro proceso super importante que tienes que programar es el encargado de decirle a Trustly que ok, que has recibido la comunicación de TRUSTLY referente a si el pago se ha hecho bien o no. Sin que el usuario se dé cuenta y después de que éste haya procedido al pago, Trustly se pone en contacto con la tienda enviándole información relativa al estado del pago. Ésta comunicación es vital para que marques el pedido como pagado, cancelado, etc... dependiendo de lo que te diga Trustly. Es muy sencillo, dado que la API de TRUSTLY ya lo lleva programado. [code language="php"]require '/libraries/Trustly.php';/* EXTRAÑO, PERO SÍ, LOS DATOS QUE ENVÍA TRUSTLY DEBES COGERLOS DE AQUÍ */$post = file_get_contents('php://input'); /* DATOS QUE NOS FACILITA TRUSTLY */$username = '__NOMBRE_DE_USUARIO_EN_TRUSTLY__';$password = '__CONTRASEÑA_EN_TRUSTLY__';$pemFile = '/__RUTA/COMPLETA/DE/LA/CLAVE/PRIVADA/private.pem';$host = 'test.trustly.com'; $API_TRUSTLY = new Trustly_Api_Signed($pemFile, $username, $password, $host);$request = $API_TRUSTLY->handleNotification($post);$notifyresponse = $API_TRUSTLY->notificationResponse($request, TRUE); echo $notifyresponse->json();die();[/code]

CLAVER PRIVADA. ARCHIVO .pem

Si te has leído el código verás que para conectar con Trustly necesitas tener una clave privada. Por otro lado ellos necesitan tener tu clave pública. Por temas de seguridad. La verdad es que es de los pocos sistemas que utilizan éste tipo de seguridad, pero es de agradecer, porque te quedas mucho más tranquilo sabiendo que le sistema de seguridad es muy difícil de engañar. Crear una clave privada y otra pública es muy sencillo. Con un sistema linux y teniendo instalado OPENSSL puedes crear las claves con éstos sencillos comandos. Primero creamos la clave privada: [code language="bash"]openssl genrsa -out private.pem 2048[/code] Y luego a partir de la clave privada crearemos la clave pública. [code language="bash"]openssl rsa -pubout -in private.pem -out public.pem -outform PEM[/code] El archivo de clave pública se lo daremos a Trustly y el archivo de clave privada lo utilizaremos nosotros en el código fuente.

Conclusión

Si tienes cualquier consulta puedes ponerte en contacto con nosotros o con Trustly. Saludos!
Compártelo:

¿Tienes alguna consulta?

Si tienes alguna pregunta o sabes la respuesta sobre algún comentario, no dudes en contribuir.
Responderemos rápidamente.
Puedes utilizar etiquetas BBCode para escribir negrita, enlaces, imágenes, etc...
Más información en la página oficial de BBCOde http://www.bbcode.org/ Ejemplo:
[url=http://google.com]links[/url], [color=red]colores[/color] [b]negrita[/b]...

¿Has visto los videos en nuestro canal de Youtube?

En nuestro canal de Youtube publicamos periódicamente mejoras y funcionalidades del software de ecommerce.