How build a Jumpseller App
A Jumpseller App is an application that interacts with one or more online stores that use Jumpseller. The App can be loaded through an iframe insid...
Importante: Esta é uma funcionalidade avançada que lhe permite conectar qualquer método de pagamento à sua loja. Normalmente, um programador de Web externo (ou o próprio gateway de pagamento) pode efetuar 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 transacções de pagamento online, pode ser integrado na sua loja Jumpseller como um método de pagamento externo.
O cliente faz uma [Encomenda] (/support/orders/) na sua loja Jumpseller e selecciona o seu Portal de Pagamento Externo como método de pagamento.
O cliente é redireccionado para o seu Método de pagamento URL utilizando 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.
GET
) para x_url_complete
com todos os Response Parameters necessários como parâmetros de consulta, incluindo a Signature
GET
) para x_url_cancel
com todos os Response Parameters necessários como parâmetros de consulta, incluindo a Signature
POSTAR
uma chamada de retorno de forma assíncrona para x_url_callback
com os mesmos Response Parameters. Isto assegura que as encomendas podem ser concluídas mesmo nos casos em que a ligação do cliente à Jumpseller é terminada por um erro de rede. HTTP 200
numa chamada de retorno bem sucedida, caso contrário deverá efetuar pelo menos 3 tentativas.Depois de o cliente preencher os detalhes do checkout e efetuar a encomenda na sua loja, o Jumpseller fará um pedido POST para o URL das definiçõ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_currency | Código ISO da moeda. | EUR |
x_reference | Número de encomenda 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 secção de “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 |
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_currency | Código ISO da moeda | EUR | |
x_reference | Número da encomenda na sua loja Jumpseller | 1001 | |
x_result | Atualização do estado 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 secção “Assinatura”. | 3e3b0fa9b8e5e0309d8a4fd6ad00048548f8434873cfed2b42507ca9b580d053 |
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 definições de pagamento. Este é o identificador de conta que deve ser fornecido pela sua conta do gateway de pagamento.
Todos os pedidos e respostas têm de incluir um campo assinado, x_signature, para testar a integridade dos pedidos que é obtida utilizando HMAC-SHA256.
Num 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 definições de pagamento, este é um valor que deve ser fornecido pela sua conta de Gateway de pagamento e partilhado com a Jumpseller.result
- o hash do pedido/resposta reunido numa ú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:
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 JumpsellerCriando 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"
Efetuar 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.
Fazer 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>
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);
Efetuar 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.
# !/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
?>
Nesta secçã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
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 da Encomenda sem alterar o estado da Encomenda.failed
- O equivalente a Cancelado no seu Painel de Administração Jumpseller, esta ação irá cancelar a encomenda e alterar o seu estado.completed
- O equivalente a Paid no seu Painel de Administração Jumpseller, esta ação irá alterar o estado da encomenda.Assim que houver pelo menos 2 lojas Jumpseller a utilizar a sua Gateway que tenham processado pelo menos 150 transacções bem sucedidas cada, pode solicitar que a Jumpseller liste a sua Gateway publicamente para todos os comerciantes. Se for aprovado, a sua Gateway será listada 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 a sua Gateway, envie um e-mail para team@jumpseller.com com os seguintes detalhes:
Será publicado no painel de administração, juntamente com outras soluções de pagamento, com o seu próprio logótipo. Como mostra a imagem abaixo:
Para mais anúncios em boletins informativos, redes sociais e outras actividades de marketing, contacte partners@jumpseller.com
Teste gratuito por 14 dias. Não é necessário cartão de crédito.