Pular para o conteúdo principal
Centro de Apoio

Gateways de pagamento externos

Importante: Esta é uma funcionalidade avançada que permite conectar qualquer método de pagamento à sua loja. Normalmente, um desenvolvedor web externo (ou o próprio gateway de pagamento) pode realizar esta integração.

Uma loja Jumpseller pode ser integrada com qualquer Gateway de pagamento externo (EPG) à sua escolha. Qualquer serviço de pagamento online, com a capacidade de aceitar pedidos HTTP e capacidade de processar transações de pagamento online, pode ser integrado na sua loja Jumpseller como um método de pagamento externo.

Como funciona

  1. O cliente faz um Pedido na sua loja Jumpseller e seleciona o seu Portal de Pagamento Externo como método de pagamento.

  2. O cliente é redirecionado para o seu URL do Método de Pagamento usando um pedido POST com os seguintes Parâmetros de pedido. A sua plataforma de pagamento deve verificar a Assinatura antes de apresentar a página de pagamento.

  3. O cliente procede à transação na sua página de pagamento.
    • Se o cliente completar o fluxo de pagamento com sucesso, deve ser redirecionado (GET) para x_url_complete com todos os Response Parameters necessários como parâmetros de consulta, incluindo a Signature
    • Se o cliente cancelar ou abandonar o pagamento, deve ser redirecionado (GET) para x_url_cancel com todos os Response Parameters necessários como parâmetros de consulta, incluindo a Signature
  4. O seu gateway de pagamento deve POSTAR uma chamada de retorno de forma assíncrona para x_url_callback com os mesmos Response Parameters. Isso assegura que os pedidos podem ser concluídos mesmo nos casos em que a conexão do cliente com a Jumpseller é encerrada por um erro de rede.
    • O Jumpseller devolve um status HTTP 200 em uma chamada de retorno bem sucedida, caso contrário deverá realizar pelo menos 3 tentativas.

Parâmetros do pedido

Depois de o cliente preencher os detalhes do checkout e realizar o pedido na sua loja, o Jumpseller fará um pedido POST para o URL das configurações do EPG com os seguintes parâmetros:

Chave de parâmetro Descrição Exemplo
x_url_complete URL para redirecionar após uma transação bem sucedida (GET). https://demostore.jumpseller.com/checkout/external_payment_complete/1001
x_url_callback URL para fornecer notificações sobre a transação de forma assíncrona (POST). https://demostore.jumpseller.com/checkout/external_payment_notification/1001
x_url_cancel URL para redirecionar quando o cliente desiste ou cancela o pagamento (GET). https://demostore.jumpseller.com/checkout/external_payment_cancel/1001
x_account_id Identificador de conta fornecido pelo EPG. 223504
x_amount Valor total da transação. 123.0
x_tax Valor de imposto da transação. (Nova versão apenas) 123.0
x_shipping Valor de envio da transação. (Nova versão apenas) 123.0
x_discount Valor de desconto aplicado na transação. (Nova versão apenas) 123.0
x_currency Código ISO da moeda. EUR
x_reference Número do pedido na sua loja Jumpseller. 1001
x_shop_country Código ISO do país da loja Jumpseller. PT
x_shop_name Nome da loja Jumpseller. Demostore
x_description Descrição da transação (opcional). \\nProduto:\\n1 x teste: 1.000 EUR\\nImposto: 23€
x_signature Ver seção “Assinatura 3e3b0fa9b8e5e0309d8a4fd6ad00048548f8434873cfed2b42507ca9b580d053
x_customer_first_name   Teste
x_customer_last_name   Jumpseller
x_customer_email   teste@jumpseller.com
x_customer_phone   912345678
x_customer_shipping_first_name   Teste
x_customer_shipping_last_name   Jumpseller
x_customer_shipping_city   Porto
x_customer_shipping_address1   Rua do Almada 123
x_customer_shipping_address2    
x_customer_shipping_state   Porto
x_customer_shipping_zip   4050
x_customer_shipping_country   PT
x_customer_shipping_phone   223456789
x_customer_billing_first_name   Teste
x_customer_billing_last_name   Jumpseller
x_customer_billing_city   Porto
x_customer_billing_address1   Rua do Almada 123
x_customer_billing_address2    
x_customer_billing_state   Porto
x_customer_billing_zip   4050
x_customer_billing_country   PT
x_customer_billing_phone   223456789
x_customer_taxid Unicamente enviado para os métodos de pagamento instalados após 2022/07/19 1111111-1

Parâmetros de resposta

Todas as respostas enviadas para o Callback URL assíncrono fornecido têm de incluir os seguintes parâmetros:

Chave do parâmetro Descrição Exemplo  
x_account_id Identificador da conta fornecido pelo GEP 223504  
x_amount Valor total da transação 123.0  
x_tax Valor de imposto da transação. (Nova versão apenas) 123.0  
x_shipping Valor de envio da transação. (Nova versão apenas) 123.0  
x_discount Valor de desconto aplicado na transação. (Nova versão apenas) 123.0  
x_currency Código ISO da moeda EUR  
x_reference Número do pedido na sua loja Jumpseller 1001  
x_result Atualização do status da transação completed \ pending \ failed  
x_timestamp Hora UTC para quando a transação foi concluída 2018-07-11T12:15:37Z (AAAA-MM-DDTHH:MM:SSZ)  
x_message (opcional) Descrição textual do resultado. Mostrado ao cliente. “O cartão de crédito não pôde ser processado.”  
x_signature Ver a seção “Assinatura”. 3e3b0fa9b8e5e0309d8a4fd6ad00048548f8434873cfed2b42507ca9b580d053  

ID da conta

Todos os pedidos e respostas devem incluir um campo para validação da conta, x_account_id, que deve corresponder ao campo Payment Method Key nas suas configurações de pagamento. Este é o identificador de conta que deve ser fornecido pela sua conta do gateway de pagamento.

Assinatura

Todos os pedidos e respostas têm de incluir um campo assinado, x_signature, para testar a integridade dos pedidos que é obtida usando HMAC-SHA256.

Em um ambiente Ruby, o seguinte código obteria uma assinatura válida:

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

  • secret - o campo Payment Method secret nas suas configurações de pagamento; este é um valor que deve ser fornecido pela sua conta de Gateway de pagamento e compartilhado com a Jumpseller.
  • result - o hash do pedido/resposta reunido em uma única cadeia de todos os pares de valores chave que começam com o prefixo x_, ordenados alfabeticamente e concatenados sem separadores. Por favor, certifique-se de excluir o campo x_signature deste cálculo ao verificar qualquer pedido recebido dos servidores do Jumpseller.

Notas importantes:

  • Por favor, certifique-se de que está usando a codificação UTF-8.
  • x_message (& x_description) - quaisquer caracteres de nova linha (‘\n’) devem ser corretamente escapados como (‘\\n’) antes de calcular a assinatura.
  • x_amount - os valores são fornecidos como Strings com decimais, mesmo para totais arredondados (e.g. 12345.0), para que não sejam convertidos inesperadamente.
  • x_signature - o parâmetro deve ser excluído da verificação dos pedidos do Jumpseller

Exemplos

Ruby

Criando uma assinatura 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"

Realizando um pedido GET ao 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)

Se mostrar o response.read_body verá o html da página que foi redirecionada.

Fazendo uma requisição POST para 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

Criar uma assinatura 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);

Realizando um pedido 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);
});

Se mostrar o response.body verá o html da página que foi redirecionada.

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
?>

Fluxogramas

Nesta seção são apresentados os fluxogramas dos processos de gateway de pagamento externo para oferecer uma representação mais precisa da forma como o Jumpseller define os diferentes processos de método de pagamento externo

Notificação de pagamento externo

Diagrama de notificação de pagamento externo

Cancelamento de pagamento externo

Diagrama de cancelamento de pagamento externo

Pagamento externo concluído

Diagrama de pagamento externo completo

Resultado do Status

Todas as respostas enviadas para o Callback URL fornecido devem incluir um campo x_result com um dos seguintes valores de cadeia:

  • pending - O equivalente a Pending Payment no seu Painel de Administração Jumpseller; esta ação irá adicionar uma mensagem ao Histórico do Pedido sem alterar o status do Pedido.
  • failed - O equivalente a Cancelado no seu Painel de Administração Jumpseller; esta ação irá cancelar o pedido e alterar o seu status.
  • completed - O equivalente a Paid no seu Painel de Administração Jumpseller; esta ação irá alterar o status do pedido.

Como publicar

Assim que houver pelo menos 2 lojas Jumpseller usando o seu Gateway que tenham processado pelo menos 150 transações bem sucedidas cada, pode solicitar que a Jumpseller liste o seu Gateway publicamente para todos os comerciantes. Se for aprovado, o seu Gateway será listado no Painel de Administração do Jumpseller e na página pública gateways de pagamento da Jumpseller.

Para solicitar uma listagem pública para o seu Gateway, envie um e-mail para team@jumpseller.com com os seguintes detalhes:

  • Nome do pagamento externo.
  • Documentação sobre: como contratar, como configurar, como usar, seção FAQ (opcional).
  • Lista de comerciantes Jumpseller que usam o seu gateway e o número total de transações processadas por loja.
  • Screencasts do processo de checkout para tentativas de pagamento bem sucedidas e com falha.
  • Logotipo: Admin 110x66px / Checkout 280x35px / Todos em PNG transparente.

Será publicado no painel de administração, juntamente com outras soluções de pagamento, com o seu próprio logotipo. Como mostra a imagem abaixo:

sampleexternalpayments

Para mais anúncios em boletins informativos, redes sociais e outras atividades de marketing, contate partners@jumpseller.com

Comece a sua jornada com a gente!

Comece seu teste grátis de 7 dias. Sem necessidade de cartão de crédito.