Centro de Ayuda

Pasarelas de pago externas

Importante: Esta es una funcionalidad avanzada que te permite conectar cualquier método de pago a tu tienda. Normalmente, un desarrollador web externo (o la propia pasarela de pago) puede realizar esta integración.

Una tienda Jumpseller se puede integrar con cualquier Pasarela de Pago Externo (EPG) de su elección. Cualquier servicio de pago en línea con la capacidad de aceptar solicitudes HTTP y la capacidad de procesar transacciones de pago en línea se puede integrar en su tienda Jumpseller como un método de pago externo.


Cómo funciona

  1. El cliente realiza un Pedido en tu tienda Jumpseller y selecciona tu Pasarela de Pago Externa como método de pago.

  2. El cliente es redirigido a su Método de Pago URL usando una solicitud POST con los siguientes Parámetros de Solicitud. Su pasarela de pago debe verificar la Firma antes de mostrar la página de pago.

  3. El cliente procede con la transacción en su página de pago.
    • Si el cliente completa con éxito el flujo de pago, debe ser redirigido (GET) a x_url_complete con todos los Parámetros de respuesta necesarios como parámetros de consulta, incluida la Firma.
    • Si el cliente cancela o abandona el pago, debe redirigirse (GET) a x_url_cancel con todos los Parámetros de respuesta necesarios como parámetros de consulta, incluida la Firma
  4. Su pasarela de pago debe POST una devolución de llamada asíncrona a x_url_callback con los mismos Parámetros de respuesta. Esto asegura que los pedidos se pueden completar incluso en los casos en que la conexión del cliente a Jumpseller se termina por un error de red.
    • Jumpseller devuelve un estado HTTP 200 en un callback exitoso, de lo contrario debe hacer al menos 3 intentos.

Parámetros del pedido

Después de que el cliente haya completado los detalles de pago y realizado el pedido en su tienda, Jumpseller hará una solicitud POST a la URL de configuración de EPG con los siguientes parámetros:

Clave de parámetro Descripción Ejemplo
x_url_complete URL a redirigir después de una transacción exitosa (GET). https://demostore.jumpseller.com/checkout/external_payment_complete/1001
x_url_callback URL para proporcionar notificaciones sobre la transacción de forma asíncrona (POST). https://demostore.jumpseller.com/checkout/external_payment_notification/1001
x_url_cancel URL a redirigir cuando el cliente retira o cancela el pago (GET). https://demostore.jumpseller.com/checkout/external_payment_cancel/1001
x_account_id Identificador de cuenta proporcionado por la EPG. 223504
x_amount Valor total de la transacción. 123.0
x_currency Código de divisa ISO. EUR
x_reference Número de pedido en su tienda Jumpseller. 1001
x_shop_country Código ISO del país de la tienda Jumpseller. ES
x_shop_name Nombre de la tienda Jumpseller. Demostore
x_description Descripción de la transacción (opcional). \\nProducto:\\n1 x teste: 1.000 EUR\\nImposto: 23€
x_signature Vea la sección “Firma 3e3b0fa9b8e5e0309d8a4fd6ad00048548f8434873cfed2b42507ca9b580d053
x_customer_first_name   Prueba
x_customer_last_name   Jumpseller
x_customer_email   test@jumpseller.com
x_customer_phone   912345678
x_customer_shipping_first_name   Prueba
x_customer_shipping_last_name   Jumpseller
x_customer_shipping_city   Oporto
x_customer_shipping_address1   Calle de Almada 123
x_customer_shipping_address2    
x_customer_shipping_state   Oporto
x_customer_shipping_zip   4050
x_customer_shipping_country   ES
x_customer_shipping_phone   223456789
x_customer_billing_first_name   Prueba
x_customer_billing_last_name   Jumpseller
x_customer_billing_city   Oporto
x_customer_billing_address1   Calle de Almada 123
x_customer_billing_address2    
x_customer_billing_state   Oporto
x_customer_billing_zip   4050
x_customer_billing_country   ES
x_customer_billing_phone   223456789
x_customer_taxid Sólo se envía a métodos de pago instalados después del 2022/07/19 1111111-1

Parámetros de respuesta

Todas las respuestas enviadas a la URL de devolución asíncrona proporcionada deben incluir los siguientes parámetros:

Clave del parámetro Descripción Ejemplo
x_account_id Identificador de cuenta facilitado por GEP 223504
x_amount Importe total de la transacción 123,0
x_currency Código de moneda ISO EUR
x_reference Número de pedido en su tienda Jumpseller 1001
x_result Actualización del estado de la transacción completed \ pending \ failed
x_timestamp Código de moneda ISO EUR
x_timestamp Hora UTC en la que se completó la transacción 2018-07-11T12:15:37Z (AAAA-MM-DDTHH:MM:SSZ)
x_message (opcional) Descripción textual del resultado. Se muestra al cliente. “No se pudo procesar la tarjeta de crédito”.
x_signature Véase la sección “Firma”. 3e3b0fa9b8e5e0309d8a4fd6ad00048548f8434873cfed2b42507ca9b580d053

ID de cuenta

Todas las solicitudes y respuestas deben incluir un campo para la validación de la cuenta, x_account_id, que debe coincidir con el campo Clave de método de pago de su configuración de pago. Este es el identificador de cuenta que debe proporcionar su cuenta de pasarela de pago.


Firma

Todas las peticiones y respuestas deben incluir un campo firmado, x_signature, para comprobar la integridad de las peticiones que se consigue utilizando HMAC-SHA256.

En un entorno Ruby, el siguiente código obtendría una firma válida:

OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), secret, result)

  • secret - el campo Secreto del Método de Pago en su configuración de pago, este es un valor que debe ser proporcionado por su cuenta de pasarela de pago y compartido con Jumpseller.
  • result - el hash de la solicitud/respuesta ensamblado en una sola cadena de todos los pares clave-valor que comienzan con el prefijo x_, ordenados alfabéticamente y concatenados sin separadores. Por favor, asegúrese de excluir el campo x_signature de este cálculo al comprobar cualquier solicitud recibida de los servidores de Jumpseller.

Notas importantes:

  • Asegúrese de que utiliza la codificación UTF-8.
  • x_message (& x_description) - cualquier carácter de nueva línea (‘\n’) debe ser escapado correctamente como (‘\n’) antes de calcular la firma.
  • x_amount - los valores se suministran como cadenas con decimales, incluso para totales redondeados (por ejemplo, 12345.0), para que no se conviertan inesperadamente.
  • x_signature - el parámetro debe ser excluido de la comprobación de pedidos Jumpseller

Ejemplos

Ruby

Creación de una firma válida.

require 'openssl'

secret = 'external_payment_gateway_password'

hash = {
  x_shop_name: 'Manchester Plant ', x_account_id: '223504', x_amount: '123.0', x_currency: 'EUR',
  x_reference: '1001', x_result: "completed",  x_timestamp: '2014-03-24T12:15:41Z',
  x_message: "\\nProducto:\\n1 x Energise EDT 125 ML: 29.500 EUR\\nImpuesto: €6.785,00"
}

result = hash.sort.join

x_signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), secret, result)

=> "d5dbffd999d4cbf70de494b4eec410d68deb540de13ebf5cfc03903c78bbd496"

Haz una petición GET a external_payment_complete.

require "uri"
require "net/http"

url = URI("https://demostore.jumpseller.com/checkout/external_payment_complete/1026?x_signature=c6296d5a1b67c691e209a2023bee341f60d11b479f864b2016a8005a21888c64&x_shop_name=Manchester Plant &x_account_id=129785&x_amount=300.0&x_currency=CLP&x_reference=1026&x_result=completed&x_timestamp=2020-06-12T18:17:15.898Z&x_message=\\nProducto:\\n1 x Prueba de pago: $300")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
response = https.request(request)

Si muestras response.read_body verás el html de la página que fue redirigida.

Haz una petición POST a external_payment_notification.

require "uri"
require "net/http"

url = URI("https://demostore.jumpseller.com/checkout/external_payment_complete/1026?x_signature=c6296d5a1b67c691e209a2023bee341f60d11b479f864b2016a8005a21888c64&x_shop_name=Manchester Plant &x_account_id=129785&x_amount=300.0&x_currency=CLP&x_reference=1026&x_result=completed&x_timestamp=2020-06-12T18:17:15.898Z&x_message=\\nProducto:\\n1 x Prueba de pago: $300")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
response = https.request(request)
=> #<Net::HTTPOK 200 OK readbody=true>

NodeJs

Crear una firma válida.

var crypto = require('crypto');

let body = {
  "x_account_id": "1234",
  "x_amount": "1000.0",
  "x_currency": "EUR",
  "x_reference": "1033",
  "x_result": "completed",  
  "x_timestamp": "2020-06-12T18:17:15.898Z",
  "x_message": "\\nProducto:\\n1 x Prueba de pago: $300"
}

let keys = Object.keys(body);

keys = keys.sort();

let toSign = '';
let query = '';
keys.forEach((key) => {
  toSign += key + body[key];
  query += encodeURIComponent(key) + '=' + encodeURIComponent(body[key]) + '&';
});

const secretKey = 'external_payment_gateway_password';
var signer = crypto.createHmac('sha256', secretKey);
var result = signer.update(toSign, 'utf8').digest('hex');

query += encodeURIComponent('x_signature')+"="+encodeURIComponent(result);

Haz una petición GET a external_payment_complete.

var request = require('request');

var options = {
  'method': 'GET',
  'url': 'https://demostore.jumpseller.com/checkout/external_payment_complete/3120?x_signature=be8d4df696d4e2c770b1890e67351b1f9be9f98cd94f421dfc7787c39f0e23c7&x_account_id=1988063&x_amount=1000.0&x_currency=EUR&x_reference=3120&x_result=completed&x_timestamp=2020-06-12T18:17:15.898Z&x_message=\\nProducto:\\n1 x Prueba de pago: $300'
};

request(options, function(error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

Si muestras response.body verás el html de la página que fue redirigida.

PHP

# !/usr/bin/env php
<?php

$secretKey = "external_payment_gateway_password";

$params = array( "x_shop_name" => "Manchester Plant ", "x_account_id" => "223504", "x_amount" => "123.0", "x_currency" => "EUR", "x_reference" => "1001", "x_result" => "completed",  "x_timestamp" => '2014-03-24T12:15:41Z', "x_message" => "\\nProducto:\\n1 x Energise EDT 125 ML: 29.500 EUR\\nImpuesto: €6.785,00" );

$keys = array_keys($params);
sort($keys);

$toSign = "";
foreach ($keys as $key) { $toSign .= $key . $params[$key]; }

$sign = hash_hmac('sha256', $toSign, $secretKey);
echo $sign . "\xA";

// => d5dbffd999d4cbf70de494b4eec410d68deb540de13ebf5cfc03903c78bbd496
?>

Flujogramas

En esta sección se presentan los flujogramas de los procesos de la pasarela de pago externa para tener una representación más precisa de cómo Jumpseller define los diferentes procesos de los medios de pago externos

Notificación de pago externo

Cancelación de pago externo

Pago externo completado


Estado Resultado

Todas las respuestas enviadas al Callback URL proporcionado deben incluir un campo x_result con uno de los siguientes valores de cadena:

  • pending - El equivalente a Pending Payment en su Panel de Administración de Jumpseller, esta acción agregará un mensaje al Historial de Pedidos sin cambiar el estado del Pedido.
  • failed - El equivalente a Cancelled en su Panel de Administración de Jumpseller, esta acción cancelará la orden y cambiará su estado.
  • completed - El equivalente a Paid en su Panel de Administración de Jumpseller, esta acción cambiará el estado de la orden.

Cómo publicar

Una vez que haya al menos 2 tiendas Jumpseller utilizando su Gateway que hayan procesado al menos 150 transacciones exitosas cada una, puede solicitar que Jumpseller liste su Gateway públicamente para todos los comerciantes. Si es aprobado, su Gateway será listado en el Panel de Administración de Jumpseller y en la página pública pasarelas de pago de Jumpseller.

Para solicitar un listado público para su Gateway, envíe un correo electrónico a team@jumpseller.com con los siguientes detalles:

  • Nombre del pago externo.
  • Documentación sobre: cómo contratar, cómo configurar, cómo usar, sección de preguntas frecuentes (opcional).
  • Listado de comercios Jumpseller que utilizan tu pasarela y el número total de transacciones procesadas por comercio.
  • Screencasts del proceso de checkout para intentos de pago exitosos y fallidos.
  • Logo: Admin 110x66px / Checkout 280x35px / Todo en PNG transparente.

Se publicará en el panel de administración, junto con otras soluciones de pago, con su propio logotipo. Como se muestra en la imagen de abajo:

sampleexternalpayments

Para más anuncios en boletines, redes sociales y otras actividades de marketing, ponte en contacto con partners@jumpseller.com.

¡Comenzá tu viaje con nosotros!

Pruébala gratis durante 14 días. No necesitas tarjeta de crédito.