Saltar al contenido principal

Generar enlace de cobro

POST /payment/api/v1/

Petición de venta

Payload

  • amount (integer, required): Importe de la operación en decimales. 140 serán 1,4€.

  • redirect_after (required): URLs a las que se redireccionará.

    • cancel (string, required): URL a la que se redireccionará si el cliente cancela la operación. Contendrá el request_id y se accederá mediante GET.
    • success (string, required): URL a la que se redireccionará si la venta es ok. Contendrá el request_id y se accederá mediante GET.
    • failure (string, required): URL a la que se redireccionará si la venta es ko. Contendrá el request_id y se accederá mediante GET.
  • type (enum[string]): DEFAULT=capture

ParámetroDescripción
autoLa operación se autentica y se autoriza en tiempo de navegador.
captureLa operación se autentica en tiempo de navegador y solo se autoriza cuando el comercio realiza un confirm.
  • currency (string): DEFAULT=EUR. Será valida cualquier moneda definida según el ISO_4217.

  • order (string): Ticket de la operación.

  • expiration (integer): DEFAULT=900. Numero de segundos que tarda en expirar la sesión de pago.

  • user_id (string): DEFAULT=0. Identificador del perfil (único) del cliente. Las tarjetas del usuario se guardarán asociadas a ese valor. Este valor debe ser no modificable por el cliente. "0" es un valor reservado que significa no almacenar ni recuperar tarjetas. Este valor permite utilizar el Wallet de Tokens documentado aquí.

  • custom_css (string): CSS personalizado para la página de pago.

ParámetroDescripción
#hpp-appPersonalizar el fondo de la pantalla de la info de la compra. Ej: "custom_css": " #hpp-app{background: black;}
.shop__amount__textPersonalizar el texto "Importe total". Ej: "custom_css":".shop__amount__text{font-size:2em !important;color:red !important;}"
.shop__amountPersonalizar importe. Ej: "custom_css":".shop__amount{font-size:2em !important;color:red;}"
.shop__textPersonalizar cabecera carrito. Ej: "custom_css":".shop__text{font-size:2em !important;color:rgb(133, 133, 133);}"
.article__description__detail__namePersonalizar nombre artículos carrito. Ej: "custom_css":".article__description__detail__name{font-size:2em !important;color:red;}"
.article__description__detail__amountPersonalizar importe artículos carrito. Ej: "custom_css":".article__description__detail__amount{font-size:2em !important;color:#FFFFFF;}"
.details__movile__quantityPersonalizar cabecera carrito. Ej: "custom_css":".details__movile__quantity{font-size:2em !important;color:red;}"
.details__movile__total__textPersonalizar texto "Importe total". Ej: "custom_css":".details__movile__total__text{font-size:2em !important;color:red;}"
.details__movile__total__amountPersonalizar importe. Ej: "custom_css":".details__movile__total__amount{font-size:2em !important;color:red;}"
Ejemplo combinado:

"custom_css":".shop__amount__text{font-size:2em !important;color:red !important;} .shop__amount{color:red !important;}"

  • logo (string): Logo URI. Se puede utilizar con data-uris para imágenes en base64.

  • custom_data (object): Datos personalizados desectructurados. Estos datos viajarán en la respuesta al confirmar la operacion ("Paso 3"). Ej: {"foo":"bar"}

  • cart (array):

    • items (object): Carrito de la compra. Se mostrará en la pagina de pagos.
      • sku (string): Identificador único del artículo.
      • tax (string): Importe de impuestos, en decimales.
      • name (string): Nombre del producto.
      • quantity (string): Cantidad.
      • amount (interger): Importe total del producto (impuestos y envío incluidos).
      • image (string): Imagen del producto.
      • shipping (string): Importe de envío.
  • callbacks: Llamda server to server que enviará información del evento especificado en el when.

    • url (string): URL a donde se va a hacer el callback.
    • when (enum):
EventoDescripción
create_sessionse ha solicitado la carga del muro de pagos
authentication_startedse ha iniciado el proceso de autenticación
authentication_resultse ha finalizado el proceso de autenticación
confirmationconfirmación realizada indicando que se ha procesado el cobro
preauthorizationse ha realizado la preautorización de la operación
refundse ha realizado la devolución de la operación

Petición de preautorización

Añadir dentro de payload el parámetro type: preauthorization. Realizar el confirm como en una venta normal.

Respuesta

Payload(object)

  • url (string): URL indirecta a la página de seleción de metodos de pago.
  • payment_methods (object): Métodos de pago disponibles.
    • payment_method_name1 (object):
      • url: URL directa al método de pago.
      • supports_tokenization (boolean): True si el método de pago soporta tokenización.
      • supports_recurring (boolean): True si el método de pago soporta pagos recurrentes.
      • available_card_capturers(emun): Mostrará los wallets soportados y contratados previamente (gpay y apay).
      • supports_refund (boolean): True si el método de pago soporta devoluciones.
      • supports_direct_payment (boolean): True si el método de pago soporta abrir directamente la pagina del metodo de pago y payment_method_name1 contendrá direct_url.
      • direct_url: URL directa a la pagina del método de pago. Este campo solo viajará en la respuesta si supports_direct_payment es true.

Ejemplos

Ejemplo básico

  • Petición
{
"key": "{{key}}",
"resource": "{{resource}}",
"mode": "sha256",
"nonce": "123123",
"payload": {
"amount": 15000,
"redirect_after": {
"cancel": "http://httpbin.org/get?type=cancel",
"success": "http://httpbin.org/get?type=ok",
"failure": "http://httpbin.org/get?type=ko"
}
}
}
  • Respuesta
{
"type": "resource.status",
"code": "0",
"detail": "Successful payment request.",
"payload": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/fastpay",
"payment_methods": {
"payment_method_name1": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name1",
"supports_card_data": true,
"supports_security_data": true,
"supports_tokenization": true,
"supports_recurring": true,
"available_card_capturers": [
"gpay",
"apay"
],
"supports_refund": true,
"supports_direct_payment": false
},
"payment_method_name2": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name2",
"supports_card_data": false,
"supports_security_data": false,
"supports_tokenization": false,
"supports_refund": false,
"supports_recurring": false,
"available_card_capturers": [],
"supports_direct_payment": true,
"direct_url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name2/direct"
}
}
}
},
"request_id": "6268ee6d5dff38d7bc33dd37",
"uuid": "6268ee6d5dff38d7bc33dd37"
}

Ejemplo Personalizado

  • Peticion
{
"key": "{{key}}",
"resource": "{{resource}}",
"mode": "sha256",
"nonce": "123123",
"payload": {
"currency": "EUR",
"custom_css": "body {font-size:1em;}",
"logo": "https://sipay.es/wp-content/uploads/logo.png",
"custom_data": {},
"amount": 15000,
"redirect_after": {
"cancel": "http://httpbin.org/post?type=cancel",
"success": "http://httpbin.org/post?type=ok",
"failure": "http://httpbin.org/post?type=ko"
}
}
}
  • Respuesta
{
"type": "resource.status",
"code": "0",
"detail": "Successful payment request.",
"payload": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/fastpay",
"payment_methods": {
"payment_method_name1": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name1",
"supports_card_data": true,
"supports_security_data": true,
"supports_tokenization": true,
"supports_recurring": true,
"available_card_capturers": [
"gpay",
"apay"
],
"supports_refund": true,
"supports_direct_payment": false
},
"payment_method_name2": {
"url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name2",
"supports_card_data": false,
"supports_security_data": false,
"supports_tokenization": false,
"supports_refund": false,
"supports_recurring": false,
"available_card_capturers": [],
"supports_direct_payment": true,
"direct_url": "https://sandbox.sipay.es/payment/api/v1/6268ee6d5dff38d7bc33dd37/payment_method_name2/direct"
}
}
}
},
"request_id": "6268ee6d5dff38d7bc33dd37",
"uuid": "6268ee6d5dff38d7bc33dd37"
}

Ejemplos de payload de callbacks

create_session

"create_session": [ 
{
"triggered_at": 1753774741.55095,
"extra": {}
}
]

authentication_started

"authentication_started" : [ 
{
"triggered_at" : 1753774880.06381,
"extra" : {
"type" : "success",
"code" : "0",
"detail" : "authentication_started",
"description" : "Authentication process started successfully",
"payload" : {
"url" : "https://sandbox.sipay.es/mdwr/v1/redsys/68887b1f212b5078f5fe70cd/",
"request_id" : "68887b1f212b5078f5fe70cd"
},
"uuid" : "2ccc9b0026a349459d4afd701a9f9040"
}
}
]

authentication_result

Se genera al volver de la url de autenticación, tanto con éxito como con error.

✅ Ok

"authentication_result" : [ 
{
"triggered_at" : 1753774796.21271,
"extra" : {
"triggered_at" : 1753774796.21067,
"request_id" : "68887aa7212b5078f5fe70c6",
"method" : "pwall_3ds",
"detail" : "authentication",
"description" : "Authentication processed successfully"
}
}
]

❌ Ko

"authentication_result" : [ 
{
"triggered_at" : 1753774923.98467,
"extra" : {
"triggered_at" : 1753774923.98281,
"request_id" : "68887b1f212b5078f5fe70cd",
"method" : "pwall_3ds",
"detail" : "authentication_error",
"description" : "An error happened with authentication operation",
"error" : "authentication_error"
}
}
]

preauthorization

Se genera al volver de la url de autenticación si al crear la sesión de pago se ha especificado type: preauthorization

✅ Ok

"preauthorization" : [ 
{
"triggered_at" : 1753778347.52031,
"extra" : {
"transaction_id" : "000101462357418446112",
"triggered_at" : 1753778347.51881,
"request_id" : "68888896d3cbbf9dbae451d6",
"method" : "preauthorization",
"code" : "0",
"detail" : "preauthorization",
"description" : "Preauthorization processed successfully"
}
}
]

❌ Ko

"preauthorization" : [ 
{
"triggered_at" : 1753778347.52031,
"extra" : {
"transaction_id" : "000101462357418446112",
"triggered_at" : 1753778347.51881,
"request_id" : "68888896d3cbbf9dbae451d6",
"method" : "preauthorization",
"code" : "-1",
"detail" : "preauthorization_error",
"description" : "An error occurred in the preauthorization"
}
}
]

confirmation

✅ Ok

"confirmation" : [ 
{
"triggered_at" : 1753774803.80869,
"extra" : {
"type" : "success",
"code" : "0",
"detail" : "authorization",
"description" : "Authorization processed successfully",
"payload" : {
"code" : "0",
"amount" : "10000",
"currency" : "EUR",
"order" : "TICKET01",
"card_trade" : "consumer",
"card_type" : "credit",
"masked_card" : "4548 81** ****0003",
"reconciliation" : "",
"transaction_id" : "000101462357418446034",
"cof_id" : "792025210890829",
"authorizator" : "CAIXABANK, S.A.",
"approval" : "938552",
"card_country" : 724,
"card_brand" : "VISA",
"expiration" : "1249"
},
"uuid" : "0b4c032ea5dc48a99445eb90e3c37f67",
"request_id" : "68887ad3212b5078f5fe70ca",
"triggered_at" : 1753774803.80759
}
}
]

❌ Ko

"confirmation" : [ 
{
"triggered_at" : 1753774803.80869,
"extra" : {
"type" : "error",
"code" : "-1",
"detail" : "authorization_error",
"description" : "An error occurred in the authorization",
"payload" : {
"code" : "0",
"amount" : "10000",
"currency" : "EUR",
"order" : "TICKET01",
"card_trade" : "consumer",
"card_type" : "credit",
"masked_card" : "4548 81** ****0003",
"reconciliation" : "",
"transaction_id" : "000101462357418446034",
"cof_id" : "792025210890829",
"authorizator" : "CAIXABANK, S.A.",
"approval" : "938552",
"card_country" : 724,
"card_brand" : "VISA",
"expiration" : "1249"
},
"uuid" : "0b4c032ea5dc48a99445eb90e3c37f67",
"request_id" : "68887ad3212b5078f5fe70ca",
"triggered_at" : 1753774803.80759
}
}
]

refund

✅ Ok

"refund" : [ 
{
"triggered_at" : 1753775229.37582,
"extra" : {
"code" : "912",
"amount" : 10000,
"remaining_amount" : 0,
"order" : "TICKET01",
"currency" : "EUR",
"payment_method_name" : "card",
"extra" : {
"type" : "success",
"code" : "0",
"detail" : "refund",
"description" : "Refund processed successfully",
"uuid" : "0abaca00ab7546b7a374dcf9be09240a",
"request_id" : "68887c75b0e5ab30203acbcf"
}
}
}
]

❌ Ko

"refund" : [ 
{
"triggered_at" : 1753775229.37582,
"extra" : {
"code" : "912",
"amount" : 10000,
"remaining_amount" : 10000,
"order" : "TICKET01",
"currency" : "EUR",
"payment_method_name" : "card",
"extra" : {
"type" : "error",
"code" : "-1",
"detail" : "refund_error",
"description" : "An error occurred in the refund",
"uuid" : "0abaca00ab7546b7a374dcf9be09240a",
"request_id" : "68887c75b0e5ab30203acbcf"
}
}
}
]