Your EPS account
Sign in to view secure API documentation, update your account details, log support requests and much more.
Your email or password is incorrect. Please try again or reset your password.
If the issue persists please contact your EPS representative.
Reset your password
Please enter your email address below. We will send password reset instructions to the email associated with your EPS account.
Thank you
An email has been sent to your account email address with further instructions on how to reset your password.
Autenticación de la clave API y acceso
Usted utilizará el encabezado HTTP de autorización para transmitir su clave para la API y un hash SHA-512 de firma con cada solicitud. El hash de firma consta de su clave para la API, el secreto compartido y el sello temporal UNIX.
Creación del encabezado de autorización
EPS espera que el encabezado de su autorización utilice el formato que aparece a continuación; tome nota del prefijo EPS
necesario. Este prefijo garantiza que se apliquen las normas de autorización correctas a su solicitud.
Authorization: EAN APIKey=yourAPIKey,Signature=sha512Hash,timestamp=yourUNIXTimestamp
El valor de su signature
es el hash SHA-512 sin sal de la concatenación de su clave para la API + secreto compartido + sello temporal UNIX expresado en segundos.
El valor de su timestamp
debe tener el mismo valor que el utilizado para generar su signature
. Si se facilita un valor de marca de hora diferente, EPS no podrá verificar el valor del hash de su firma, y su solicitud será rechazada.
He aquí un ejemplo de un encabezado de autorización que está completo:
Authorization: EAN APIKey=dkc4wrkp7w58wx5v2jxen2kx,Signature=Mgup2Azf,timestamp=1476739212
Verificación del encabezado de autorización
Antes de realizar las solicitudes de prueba, compruebe su propio código en el generador de firmas de EPS.
Nota: Sincronización con el reloj NTP
EPS sincroniza el reloj interno del servidor con Network Time Protocol (NTP). Si usted utiliza también NTP, no debería haber problemas de sincronización del reloj. La mayor parte de los sistemas operativos modernos utiliza este servicio de sincronización o uno similar. Compruébelo en la documentación de su sistema operativo. El sistema acepta marcas de hora de hasta cinco minutos antes o después de la marca de hora del servidor, con el fin de compensar las desviaciones del reloj que sean razonables.
Ejemplos de código de generación de firmas
PHP
$apiKey = "abcdefg"; $secret = "1a2bc3"; $timestamp = time(); $authHeader = 'Authorization: EAN APIKey=' . $apiKey . ',Signature=' . hash("sha512", $apiKey.$secret.$timestamp) . ',timestamp=' . time();
JavaScript
var crypto = require('crypto'); var request = require('request'); var apiKey = "123"; var secret="123"; var timestamp = Math.round((new Date().getTime()/1000)); var hash = crypto.createHmac('sha256', apiKey+secret+timestamp).digest('hex'); var authHeaderValue = 'EAN APIKey=' +apiKey+ ',Signature=' + hash + ',timestamp=' + timestamp;
Java
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.Timestamp; import java.util.Date; String apiKey = "123"; String secret = "123"; Date date= new java.util.Date(); Long timestamp = (date.getTime() / 1000); String signature = null; try { String toBeHashed = apiKey + secret + timestamp; MessageDigest md = MessageDigest.getInstance("SHA-512"); byte[] bytes = md.digest(toBeHashed.getBytes("UTF-8")); StringBuilder sb = new StringBuilder(); for(int i=0; i< bytes.length ;i++){ sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1)); } signature = sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String authHeaderValue = "EAN APIKey=" + apiKey + ",Signature=" + signature + ",timestamp=" + timestamp;
Python
import hashlib import datetime apiKey = "123" secret = "123" timestamp = str(int(time.time())); authHeaderValue = "EAN APIKey=" + apiKey + ",Signature=" + hashlib.sha512(apiKey+secret+timestamp).hexdigest() + ",timestamp=" + timestamp
Ruby
require 'digest' apiKey="123" secret="123" timestamp = Time.now.to_i toBeHashed = "#{apiKey}#{secret}#{timestamp}" signature = Digest::SHA2.new(512).hexdigest(toBeHashed) authHeaderValue = "EAN APIKey=#{apiKey},Signature=#{signature},timestamp=#{timestamp}"
C#
String apiKey = "123"; String secret = "123"; TimeSpan epochTicks = new TimeSpan(new DateTime(1970, 1, 1).Ticks); TimeSpan unixTicks = new TimeSpan(DateTime.UtcNow.Ticks) - epochTicks; double unixTime = (int)unixTicks.TotalSeconds; var toBeHashed = apiKey + secret + unixTime; var bytes = System.Text.Encoding.UTF8.GetBytes(toBeHashed); using (var hash = System.Security.Cryptography.SHA512.Create()) { var hashedInputBytes = hash.ComputeHash(bytes); var hashedInputStringBuilder = new System.Text.StringBuilder(128); foreach (var b in hashedInputBytes) hashedInputStringBuilder.Append(b.ToString("X2")); var signature = hashedInputStringBuilder.ToString(); var authHeaderValue = "EAN APIKey=" + apiKey + ",Signature=" + signature +",timestamp=" + unixTime; }
Perl
use strict; use Crypt::Digest::SHA512 qw(sha512_hex); my $apiKey = '123'; my $secret = '123'; my $timestamp = time; my $sig = sha512_hex($apiKey . $secret . $timestamp); my $authHeaderValue = "EAN APIKey=".$apiKey.",Signature=".$sig.",timestamp=".$timestamp; print $authHeaderValue;
Protección del secreto compartido
El secreto compartido que se le entregue es esencial para la seguridad de los datos de sus solicitudes; trátelo como si fuera una contraseña. No incluya nunca el valor sin formato en ningún sitio accesible públicamente ni en el código de una aplicación. Le proporcionarán su secreto compartido y su clave para la API cuando reciba la aprobación para integrarse en EPS Rapid.
EPS Home | EPS Portal Login | Expedia Partner Central | Advertise with Expedia | News | Privacy Policy | Cookie Policy
© 2020 Expedia, Inc. All Rights Reserved.