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á medianteGET
. - success (string, required): URL a la que se redireccionará si la venta es ok. Contendrá el
request_id
y se accederá medianteGET
. - failure (string, required): URL a la que se redireccionará si la venta es ko. Contendrá el
request_id
y se accederá medianteGET
.
- cancel (string, required): URL a la que se redireccionará si el cliente cancela la operación. Contendrá el
-
type (enum[string]): DEFAULT=capture
Parámetro | Descripción |
---|---|
auto | La operación se autentica y se autoriza en tiempo de navegador. |
capture | La 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ámetro | Descripción |
---|---|
#hpp-app | Personalizar el fondo de la pantalla de la info de la compra. Ej: "custom_css": " #hpp-app{background: black;} |
.shop__amount__text | Personalizar el texto "Importe total". Ej: "custom_css":".shop__amount__text{font-size:2em !important;color:red !important;}" |
.shop__amount | Personalizar importe. Ej: "custom_css":".shop__amount{font-size:2em !important;color:red;}" |
.shop__text | Personalizar cabecera carrito. Ej: "custom_css":".shop__text{font-size:2em !important;color:rgb(133, 133, 133);}" |
.article__description__detail__name | Personalizar nombre artículos carrito. Ej: "custom_css":".article__description__detail__name{font-size:2em !important;color:red;}" |
.article__description__detail__amount | Personalizar importe artículos carrito. Ej: "custom_css":".article__description__detail__amount{font-size:2em !important;color:#FFFFFF;}" |
.details__movile__quantity | Personalizar cabecera carrito. Ej: "custom_css":".details__movile__quantity{font-size:2em !important;color:red;}" |
.details__movile__total__text | Personalizar texto "Importe total". Ej: "custom_css":".details__movile__total__text{font-size:2em !important;color:red;}" |
.details__movile__total__amount | Personalizar importe. Ej: "custom_css":".details__movile__total__amount{font-size:2em !important;color:red;}" |
"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.
- items (object): Carrito de la compra. Se mostrará en la pagina de pagos.
-
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):
Evento | Descripción |
---|---|
create_session | se ha solicitado la carga del muro de pagos |
authentication_started | se ha iniciado el proceso de autenticación |
authentication_result | se ha finalizado el proceso de autenticación |
confirmation | confirmación realizada indicando que se ha procesado el cobro |
preauthorization | se ha realizado la preautorización de la operación |
refund | se 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 ypayment_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
estrue
.
- payment_method_name1 (object):
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"
}
}
}
]