Integrar Webhook

El sistema enviará un webhook con información detallada sobre la transacción una vez que se complete el pago. Esta información es crucial para actualizar el estado de la reserva en su sistema.

A continuación se explicaran unos ejemplos de integración para pruebas o en su efecto para conectar con una plataforma como pipedream

Estructura JSON Webhook

Este documento proporciona una descripción detallada del JSON de un evento webhook.

Ejemplo JSON

{
  "uuid": "string",
  "reference": "string",
  "booking_number": "string | null",
  "amount": "number",
  "fee": "number",
  "currency": "string",
  "checkin": "string (format: DD/MM/YYYY)",
  "checkout": "string (format: DD/MM/YYYY)",
  "description": "string",
  "customer_info": {
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "ip": "string",
    "phone": "string",
    "user_agent": "string",
    "browser_info": {
      "language": "string",
      "color_depth": "string",
      "java_enabled": "boolean",
      "screen_width": "number",
      "accept_header": "string",
      "screen_height": "number",
      "java_script_enabled": "boolean"
    }
  },
  "items": [
    {
      "price": "number",
      "quantity": "number",
      "description": "string"
    }
  ],
  "payment_mode": "string",
  "order_status": "string",
  "payment_status": "string",
  "created_at": "string (format: DD/MM/YYYY HH:MM:SS)",
  "merchant": {
    "name": "string",
    "slug": "string",
    "logo": "string (HTML)",
    "billing_email": "string | null",
    "reservation_email": "string",
    "reservation_email_bcc": "string | null",
    "bg_color": "string (hex color)",
    "text_color": "string (hex color)",
    "address": "string",
    "address_phone": "string | null",
    "contact_info": "string (HTML)",
    "pictures": "array"
  },
  "transactions": [
    {
      "priority": "string",
      "kind": "string",
      "amount": "number",
      "card_address": {
        "address": "string",
        "city": "string",
        "country": "string",
        "country_code": "string",
        "zip": "string",
        "address2": "string | null",
        "state": "string"
      },
      "card": {
        "bin": "string",
        "type": "string",
        "brand": "string",
        "bank_name": "string",
        "last_4_digits": "string",
        "country_code": "string",
        "url_brand": "string (URL)"
      },
      "card_info": {
        "holder_name": "string",
        "expiration": "string (format: MM/YYYY)"
      },
      "installment": "string",
      "monthly": "string",
      "descriptor": "string"
    }
  ],
  "transaction_template": [
    {
      "BRAND": "string",
      "CARD_ICON": "string (URL)",
      "TYPE": "string",
      "LAST_4_DIGITS": "string",
      "HOLDER_NAME": "string",
      "MERCHANT_DESCRIPTOR": "string",
      "INSTALLMENT": "string",
      "MONTHLY": "string"
    }
  ],
  "holder_name_diff": "boolean",
  "payment_adds": {
    "date": "string (format: DD/MM/YYYY HH:MM)",
    "amount": "string"
  },
  "webhook_event": "string"
}
{
  "uuid": "f5b07c64-a98a-4b9e-8fbc-9cef25cc7659",
  "reference": "f80f1431-1d94-44d0-ab30-b3a6b7d19d4e",
  "booking_number": null,
  "amount": 1000,
  "fee": 0,
  "currency": "MXN",
  "checkin": "05/07/2024",
  "checkout": "06/07/2024",
  "description": "Reserva de hotel",
  "customer_info": {
    "first_name": "Alex",
    "last_name": "Galindo",
    "email": "pruebas@retrypay.com",
    "ip": "177.249.170.25",
    "phone": "3311224455",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
    "browser_info": {
      "language": "en-US",
      "color_depth": "1",
      "java_enabled": true,
      "screen_width": 564,
      "accept_header": "*/",
      "screen_height": 200,
      "java_script_enabled": true
    }
  },
  "items": [
    {
      "price": 1000,
      "quantity": 1,
      "description": "Reserva de hotel"
    }
  ],
  "payment_mode": "single",
  "order_status": "inactive",
  "payment_status": "paid",
  "created_at": "01/07/2024 20:56:04",
  "merchant": {
    "name": "Merchant Test",
    "slug": "merchant-test",
    "logo": "<img src=\"https://hotelpay-merchants.s3.us-east-2.amazonaws.com/logos/66673da2078ae\" alt=\"\" height=\"120\">",
    "billing_email": null,
    "reservation_email": "pagos@retrypay.com",
    "reservation_email_bcc": null,
    "bg_color": "#d16363",
    "text_color": "#ba6a6a",
    "address": "Tiburon, -, -, Guadalajara, Jalisco, CP 32400",
    "address_phone": null,
    "contact_info": "<p>Llámanos al</p>",
    "pictures": []
  },
  "transactions": [
    {
      "priority": "primary",
      "kind": "card",
      "amount": 1000,
      "card_address": {
        "address": "Av Hidalgo 1995",
        "city": "Guadalajara",
        "country": "México",
        "country_code": "MX",
        "zip": "123456",
        "address2": null,
        "state": "Jalisco"
      },
      "card": {
        "bin": "400000",
        "type": "credit",
        "brand": "visa",
        "bank_name": "Intl Hdqtrs-Center Owned",
        "last_4_digits": "0051",
        "country_code": "US",
        "url_brand": "https://testing.hotelpay.net/storage/img/brands/flats/visa.svg"
      },
      "card_info": {
        "holder_name": "Alex",
        "expiration": "12/2030"
      },
      "installment": "1",
      "monthly": "$1,000.00 MXN",
      "descriptor": "HOTELPAY"
    }
  ],
  "transaction_template": [
    {
      "BRAND": "visa",
      "CARD_ICON": "https://testing.hotelpay.net/storage/img/brands/flats/visa.svg",
      "TYPE": "credit",
      "LAST_4_DIGITS": "0051",
      "HOLDER_NAME": "Alex",
      "MERCHANT_DESCRIPTOR": "HOTELPAY",
      "INSTALLMENT": "1",
      "MONTHLY": "$1,000.00 MXN"
    }
  ],
  "holder_name_diff": true,
  "payment_adds": {
    "date": "01/07/2024 20:56",
    "amount": "$1,000.00 MXN"
  }
}
{
    "uuid": "399acbc6-d37b-4062-8a2b-088c6d88b839",
    "reference": "9ddb4e83-c1e0-4142-8b42-a82549c711d7",
    "booking_number": "123456",
    "amount": 300,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Reserva de hotel",
    "customer_info": {
        "first_name": "Alejandro",
        "last_name": "Galindo",
        "email": "alex@retrypay.com",
        "ip": "177.241.36.59",
        "phone": "3311224455",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 1255,
            "accept_header": "*\/",
            "screen_height": 1017,
            "java_script_enabled": true
        }
    },
    "items": [
        {
            "price": "300.00",
            "quantity": 1,
            "description": "Reserva de hotel"
        }
    ],
    "payment_mode": "single",
    "created_at": "14\/11\/2024 13:37:28",
    "merchant": {
        "name": "Hotel Obsidiana",
        "slug": "hotel-obsidiana",
        "logo": "<img src=\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/664e0ede37956\" alt=\"\" height=\"120\">",
        "billing_email": null,
        "reservation_email": "pruebas@retrypay.com",
        "reservation_email_bcc": [
            {
                "email": "pruebas+otro@retrypay.com",
                "name": "CC 1"
            }
        ],
        "bg_color": "#32e0a2",
        "text_color": "#ede2e2",
        "address": "Avenida Hidalgo, 1995, 07-09, Guadalajara, Jalisco, CP 44600",
        "address_phone": null,
        "contact_info": "<p><strong>\u00bfNecesitas ayuda?<\/strong><br><em>Ll\u00e1manos al +<\/em>52 669 689-0169 Ext 2<br>Whatsapp +52 669 918 2401<\/p>",
        "enable_internal_email_notifications": true,
        "pictures": []
    },
    "transactions": [
        {
            "priority": "primary",
            "kind": "card",
            "amount": 300,
            "card_address": {
                "address": "Av Hidalgo 1995",
                "city": "Guadalajara",
                "country": "M\u00e9xico",
                "country_code": "MX",
                "zip": "45089",
                "address2": null,
                "state": "Jalisco"
            },
            "card": {
                "bin": "400000",
                "type": "credit",
                "brand": "visa",
                "bank_name": "Intl Hdqtrs-Center Owned",
                "last_4_digits": "0008",
                "country_code": "MX",
                "url_brand": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg"
            },
            "card_info": {
                "holder_name": "Alex Galindo",
                "expiration": "12\/2034"
            },
            "installment": "3",
            "monthly": "$100.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        }
    ],
    "transaction_template": [
        {
            "BRAND": "visa",
            "CARD_ICON": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg",
            "TYPE": "credit",
            "LAST_4_DIGITS": "0008",
            "HOLDER_NAME": "Alex Galindo",
            "MERCHANT_DESCRIPTOR": "STRIPE*HOTELPAY",
            "INSTALLMENT": "3",
            "MONTHLY": "$100.00 MXN"
        }
    ],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "14\/11\/2024 13:37",
        "amount": "$300.00 MXN"
    },
    "order_status": "inactive",
    "payment_status": "paid",
    "webhook_event": "success"
}
{
    "uuid": "34a87687-c66e-4e60-8bff-506ac4ecc3d8",
    "reference": "8c0950b6-210d-4020-b2d4-c44f61269f98",
    "booking_number": "123456",
    "amount": 300,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Reserva de hotel",
    "customer_info": {
        "first_name": "Alejandro",
        "last_name": "Galindo",
        "email": "alex@retrypay.com",
        "ip": "177.241.36.59",
        "phone": "3311224455",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 1255,
            "accept_header": "*\/",
            "screen_height": 1017,
            "java_script_enabled": true
        }
    },
    "items": [
        {
            "price": "300.00",
            "quantity": 1,
            "description": "Reserva de hotel"
        }
    ],
    "payment_mode": "split",
    "created_at": "14\/11\/2024 14:57:37",
    "merchant": {
        "name": "Hotel Obsidiana",
        "slug": "hotel-obsidiana",
        "logo": "<img src=\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/664e0ede37956\" alt=\"\" height=\"120\">",
        "billing_email": null,
        "reservation_email": "pruebas@retrypay.com",
        "reservation_email_bcc": [
            {
                "email": "pruebas+otro@retrypay.com",
                "name": "CC 1"
            }
        ],
        "bg_color": "#32e0a2",
        "text_color": "#ede2e2",
        "address": "Avenida Hidalgo, 1995, 07-09, Guadalajara, Jalisco, CP 44600",
        "address_phone": null,
        "contact_info": "<p><strong>\u00bfNecesitas ayuda?<\/strong><br><em>Ll\u00e1manos al +<\/em>52 669 689-0169 Ext 2<br>Whatsapp +52 669 918 2401<\/p>",
        "enable_internal_email_notifications": true,
        "pictures": []
    },
    "transactions": [
        {
            "priority": "primary",
            "kind": "card",
            "amount": 150,
            "card_address": {
                "address": "Av Hidalgo 1995",
                "city": "Guadalajara",
                "country": "M\u00e9xico",
                "country_code": "MX",
                "zip": "45089",
                "address2": null,
                "state": "Jalisco"
            },
            "card": {
                "bin": "400000",
                "type": "credit",
                "brand": "visa",
                "bank_name": "Intl Hdqtrs-Center Owned",
                "last_4_digits": "0008",
                "country_code": "MX",
                "url_brand": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg"
            },
            "card_info": {
                "holder_name": "Alex Galindo",
                "expiration": "12\/2034"
            },
            "installment": "1",
            "monthly": "$150.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        },
        {
            "priority": "secondary",
            "kind": "card",
            "amount": 150,
            "card_address": {
                "address": "Av Hidalgo 1995",
                "city": "Guadalajara",
                "country": "M\u00e9xico",
                "country_code": "MX",
                "zip": "45089",
                "address2": null,
                "state": "Jalisco"
            },
            "card": {
                "bin": "424242",
                "type": "credit",
                "brand": "visa",
                "bank_name": "UNKNOWN",
                "last_4_digits": "4242",
                "country_code": "GB",
                "url_brand": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg"
            },
            "card_info": {
                "holder_name": "Alex Galindo",
                "expiration": "12\/2034"
            },
            "installment": "1",
            "monthly": "$150.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        }
    ],
    "transaction_template": [
        {
            "BRAND": "visa",
            "CARD_ICON": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg",
            "TYPE": "credit",
            "LAST_4_DIGITS": "0008",
            "HOLDER_NAME": "Alex Galindo",
            "MERCHANT_DESCRIPTOR": "STRIPE*HOTELPAY",
            "INSTALLMENT": "1",
            "MONTHLY": "$150.00 MXN"
        },
        {
            "BRAND": "visa",
            "CARD_ICON": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg",
            "TYPE": "credit",
            "LAST_4_DIGITS": "4242",
            "HOLDER_NAME": "Alex Galindo",
            "MERCHANT_DESCRIPTOR": "STRIPE*HOTELPAY",
            "INSTALLMENT": "1",
            "MONTHLY": "$150.00 MXN"
        }
    ],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "14\/11\/2024 14:57",
        "amount": "$300.00 MXN"
    },
    "order_status": "inactive",
    "payment_status": "paid",
    "webhook_event": "success"
}
{
    "uuid": "94051245-3a3b-4eab-afaa-391add70a1d4",
    "reference": "2276da80-eef9-43fb-958c-92cbddea399c",
    "booking_number": "123456",
    "amount": 1000,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Reserva de hotel",
    "customer_info": {
        "first_name": "Alejandro",
        "last_name": "Galindo",
        "email": "alex@retrypay.com",
        "ip": "177.241.36.59",
        "phone": "3311224455",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 1255,
            "accept_header": "*\/",
            "screen_height": 1017,
            "java_script_enabled": true
        }
    },
    "items": [
        {
            "price": "1000.00",
            "quantity": 1,
            "description": "Reserva de hotel"
        }
    ],
    "payment_mode": "split",
    "created_at": "14\/11\/2024 14:59:32",
    "merchant": {
        "name": "Hotel Obsidiana",
        "slug": "hotel-obsidiana",
        "logo": "<img src=\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/664e0ede37956\" alt=\"\" height=\"120\">",
        "billing_email": null,
        "reservation_email": "pruebas@retrypay.com",
        "reservation_email_bcc": [
            {
                "email": "pruebas+otro@retrypay.com",
                "name": "CC 1"
            }
        ],
        "bg_color": "#32e0a2",
        "text_color": "#ede2e2",
        "address": "Avenida Hidalgo, 1995, 07-09, Guadalajara, Jalisco, CP 44600",
        "address_phone": null,
        "contact_info": "<p><strong>\u00bfNecesitas ayuda?<\/strong><br><em>Ll\u00e1manos al +<\/em>52 669 689-0169 Ext 2<br>Whatsapp +52 669 918 2401<\/p>",
        "enable_internal_email_notifications": true,
        "pictures": []
    },
    "transactions": [
        {
            "priority": "primary",
            "kind": "card",
            "amount": 500,
            "card_address": {
                "address": "Av Hidalgo 1995",
                "city": "Guadalajara",
                "country": "M\u00e9xico",
                "country_code": "MX",
                "zip": "45089",
                "address2": null,
                "state": "Jalisco"
            },
            "card": {
                "bin": "400000",
                "type": "credit",
                "brand": "visa",
                "bank_name": "Intl Hdqtrs-Center Owned",
                "last_4_digits": "0008",
                "country_code": "MX",
                "url_brand": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg"
            },
            "card_info": {
                "holder_name": "Alex Galindo",
                "expiration": "12\/2034"
            },
            "installment": "3",
            "monthly": "$166.67 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        },
        {
            "priority": "secondary",
            "kind": "card",
            "amount": 500,
            "card_address": {
                "address": "Av Hidalgo 1995",
                "city": "Guadalajara",
                "country": "M\u00e9xico",
                "country_code": "MX",
                "zip": "45089",
                "address2": null,
                "state": "Jalisco"
            },
            "card": {
                "bin": "424242",
                "type": "credit",
                "brand": "visa",
                "bank_name": "UNKNOWN",
                "last_4_digits": "4242",
                "country_code": "GB",
                "url_brand": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg"
            },
            "card_info": {
                "holder_name": "Alex Galindo",
                "expiration": "12\/2034"
            },
            "installment": "1",
            "monthly": "$500.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        }
    ],
    "transaction_template": [
        {
            "BRAND": "visa",
            "CARD_ICON": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg",
            "TYPE": "credit",
            "LAST_4_DIGITS": "0008",
            "HOLDER_NAME": "Alex Galindo",
            "MERCHANT_DESCRIPTOR": "STRIPE*HOTELPAY",
            "INSTALLMENT": "3",
            "MONTHLY": "$166.67 MXN"
        },
        {
            "BRAND": "visa",
            "CARD_ICON": "https:\/\/testing.hotelpay.net\/storage\/img\/brands\/flats\/visa.svg",
            "TYPE": "credit",
            "LAST_4_DIGITS": "4242",
            "HOLDER_NAME": "Alex Galindo",
            "MERCHANT_DESCRIPTOR": "STRIPE*HOTELPAY",
            "INSTALLMENT": "1",
            "MONTHLY": "$500.00 MXN"
        }
    ],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "14\/11\/2024 14:59",
        "amount": "$1,000.00 MXN"
    },
    "order_status": "inactive",
    "payment_status": "paid",
    "webhook_event": "success"
}
{
    "uuid": "18f9668a-e462-4a6a-8a71-4b4b28195686",
    "reference": "140882cf-902d-4e40-853c-9226d7fd559d",
    "booking_number": "123456",
    "amount": 20,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Alojamiento m\u00faltiple",
    "customer_info": {
        "first_name": "Alejandro",
        "last_name": "Galindo",
        "email": "alex@retrypay.com",
        "ip": "177.241.36.59",
        "phone": "3311224455",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 1766,
            "accept_header": "*\/",
            "screen_height": 859,
            "java_script_enabled": true
        }
    },
    "items": null,
    "payment_mode": "single",
    "order_status": "canceled",
    "payment_status": "canceled",
    "created_at": "01\/11\/2024 13:58:27",
    "merchant": {
        "name": "Hotel Zafiro",
        "slug": "hotel-zafiro",
        "logo": "<img src=\\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/66ccf5622099a\\" alt=\\"\\" height=\\"120\\">",
        "billing_email": null,
        "reservation_email": "alex@retrypay.com",
        "reservation_email_bcc": null,
        "bg_color": "#ffffff",
        "text_color": "#000000",
        "address": "Av Obsidiana, 2552, , Zapopan, Jalisco, CP 45089",
        "address_phone": null,
        "contact_info": "<p>800 RESERVAS<\/p><p>\ud83d\udcf1+52 3311 224455<\/p>",
        "pictures": []
    },
    "transactions": [],
    "transaction_template": [],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "01\/11\/2024 13:58",
        "amount": "$20.00 MXN"
    }
}
{
    "uuid": "f39de2d1-d8b7-4488-86d8-b7cff54dd67d",
    "reference": "79d9863e-ac27-4937-aa0d-e536797c2909",
    "booking_number": "123456",
    "amount": 20,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Alojamiento m\u00faltiple",
    "customer_info": {
        "first_name": "Alejandro",
        "last_name": "Galindo",
        "email": "alex@retrypay.com",
        "ip": "177.241.36.59",
        "phone": "3311224455",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/130.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 1766,
            "accept_header": "*\/",
            "screen_height": 859,
            "java_script_enabled": true
        }
    },
    "items": null,
    "payment_mode": "single",
    "order_status": "active",
    "payment_status": "error",
    "created_at": "01\/11\/2024 14:02:19",
    "merchant": {
        "name": "Hotel Zafiro",
        "slug": "hotel-zafiro",
        "logo": "<img src=\\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/66ccf5622099a\\" alt=\\"\\" height=\\"120\\">",
        "billing_email": null,
        "reservation_email": "alex@retrypay.com",
        "reservation_email_bcc": null,
        "bg_color": "#ffffff",
        "text_color": "#000000",
        "address": "Av Obsidiana, 2552, , Zapopan, Jalisco, CP 45089",
        "address_phone": null,
        "contact_info": "<p>800 RESERVAS<\/p><p>\ud83d\udcf1+52 3311 224455<\/p>",
        "pictures": []
    },
    "transactions": [],
    "transaction_template": [],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "01\/11\/2024 14:02",
        "amount": "$20.00 MXN"
    }
}
{
    "uuid": "29a60640-9efc-46eb-a3b7-bb57ed032bdc",
    "reference": "22f17fe2-8e36-417c-b33b-4c15962ab2b2",
    "booking_number": "123456",
    "amount": 300,
    "fee": 0,
    "currency": "MXN",
    "checkin": null,
    "checkout": null,
    "description": "Reserva de hotel",
    "customer_info": {
        "first_name": "Mauricio",
        "last_name": "Madrigal",
        "email": "mau@retrypay.com",
        "ip": "187.144.172.101",
        "phone": "3338149130",
        "user_agent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/129.0.0.0 Safari\/537.36",
        "browser_info": {
            "language": "en-US",
            "color_depth": "1",
            "java_enabled": true,
            "screen_width": 563,
            "accept_header": "*\/",
            "screen_height": 200,
            "java_script_enabled": true
        }
    },
    "items": [
        {
            "price": "300.00",
            "quantity": 1,
            "description": "Reserva de hotel"
        }
    ],
    "payment_mode": "single",
    "order_status": "expired",
    "payment_status": "pending",
    "created_at": "10\/10\/2024 10:16:46",
    "merchant": {
        "name": "Hotel Zafiro",
        "slug": "hotel-zafiro",
        "logo": "<img src=\"https:\/\/hotelpay-merchants.s3.us-east-2.amazonaws.com\/logos\/66ccf5622099a\" alt=\"\" height=\"120\">",
        "billing_email": null,
        "reservation_email": "alex@retrypay.com",
        "reservation_email_bcc": null,
        "bg_color": "#FFFFFF",
        "text_color": "#000000",
        "address": "Av Obsidiana, 2552, , Zapopan, Jalisco, CP 45089",
        "address_phone": null,
        "contact_info": "<p>800 RESERVAS<\/p><p>\ud83d\udcf1+52 3311 224455<\/p>",
        "pictures": []
    },
    "transactions": [],
    "transaction_template": [],
    "holder_name_diff": false,
    "payment_adds": {
        "date": "10\/10\/2024 10:16",
        "amount": "$300.00 MXN"
    }
}

Estructura del JSON


Campo Descripción Tipo de Dato Ejemplo
uuid Identificador único universal para la reserva. String f5b07c64-a98a-4b9e-8fbc-9cef25cc7659
reference Referencia interna de la reserva. String f80f1431-1d94-44d0-ab30-b3a6b7d19d4e
booking_number Número de reserva String 123456
amount Monto total de la reserva en la moneda especificada. Number 1000
fee Comisión aplicada a la transacción. Number 0
currency Moneda utilizada String MXN
checkin Fecha de entrada al hotel. String 05/07/2024
checkout Fecha de salida del hotel. String 06/07/2024
description Descripción de la reserva. String Reserva de hotel
customer_info Información del cliente json Información del Cliente
items Detalles de las habitaciones array of json
payment_mode Modalidad de pago (único en este caso). String single
order_status Estado de la orden (inactiva). String inactive
payment_status Estados del pago (pagado). String Estados del pago
created_at Fecha y hora de creación de la reserva. String 01/07/2024 20:56:04
merchant Información del merchant json Información del Merchant
transactions Transacciones array of json Transacciones
transaction_template Plantilla de la Transacción ( Sendgrid) array of json Plantilla de la Transacción
holder_name_diff Indica si el nombre del titular de la tarjeta es diferente. Boolean true
payment_adds Información Adicional Json Información Adicional
webhook_event Indica el estado del evento String "success"

Información del Cliente

Campo Descripción Tipo de Dato Ejemplo
first_name Nombre del cliente. String Pedro
last_name Apellido del cliente. String Paramo
email Correo electrónico del cliente. String pedroparamo@gmail.com
ip Dirección IP del cliente. String 177.229.160.25
phone Número de teléfono del cliente. String 3311224455
user_agent Información del navegador y sistema operativo del cliente. String Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0
browser_info Información del Navegador json Información del Navegador del Cliente

Información del Navegador del Cliente

Campo Descripción Tipo de Dato Ejemplo
language Idioma del navegador. String en-US
color_depth Profundidad de color de la pantalla. String 1
java_enabled Indica si Java está habilitado. Boolean true
screen_width Ancho de la pantalla en píxeles. Number 564
accept_header Encabezado de aceptación del navegador. String */
screen_height Altura de la pantalla en píxeles. Number 200
java_script_enabled Indica si JavaScript está habilitado. Boolean true

Detalles de las habitaciones

Campo Descripción Tipo de Dato Ejemplo
price Precio del artículo. Number 1000
quantity Cantidad de artículos. Number 1
description Descripción del artículo. String Reserva de hotel

Información del Merchant

Campo Descripción Tipo de Dato Ejemplo
name Nombre del comerciante. String Merchant Test
slug Identificador único del comerciante. String merchant-test
logo Logo del comerciante en formato HTML. String <img src="<https://hotelpay-merchants.s3.us-east-2.amazonaws.com/logos/66673da2078ae>" alt="" height="120">
billing_email Correo electrónico de facturación (puede no estar disponible). String correo...
reservation_email Correo electrónico para reservas. String correo...
reservation_email_bcc Correo electrónico en copia oculta para reservas (puede no estar disponible). String correos...
bg_color Color de fondo. String #d16363
text_color Color del texto. String #ba6a6a
address Dirección del comerciante. String Tiburon, -, -, Guadalajara, Jalisco, CP 32400
address_phone Teléfono de la dirección (no disponible). String null
contact_info Información de contacto en formato HTML. String <p>Llámanos al</p>
pictures Imágenes asociadas (ninguna disponible). Array []

Transacciones

Campo Descripción Tipo de Dato Ejemplo
priority Prioridad de la transacción. String primary
kind Tipo de transacción (tarjeta). String card
amount Monto de la transacción. Number 1000
card_address Dirección de la Tarjeta json Dirección de la Tarjeta
card Información de la Tarjeta json Información de la Tarjeta
card_info Información del Titular de la Tarjeta json Información del Titular de la Tarjeta
installment Número de cuotas. String 1
monthly Pago mensual. String $1,000.00 MXN
descriptor Descripción del comerciante en la transacción. String HOTELPAY

Dirección de la Tarjeta

Campo Descripción Tipo de Dato Ejemplo
address Dirección de la tarjeta. String Av Hidalgo 1995
address2 Segunda línea de dirección (no disponible). Null null
city Ciudad de la tarjeta. String Guadalajara
country País de la tarjeta. String México
country_code Código del país de la tarjeta. String MX
zip Código postal de la tarjeta. String 123456
state Estado de la tarjeta. String Jalisco

Información de la Tarjeta

Campo Descripción Tipo de Dato Ejemplo
bin Bin de la tarjeta. String 400000
type Tipo de tarjeta (crédito). String credit
brand Marca de la tarjeta. String visa
bank_name Nombre del banco. String Generic Bank Name

Información del Titular de la Tarjeta

Campo Descripción Tipo de Dato Ejemplo
holder_name Nombre del titular de la tarjeta. String Pedro Paramo
expiration Fecha de expiración de la tarjeta. String 12/2030

Plantilla de la Transacción

Campo Descripción Tipo de Dato Ejemplo
BRAND Marca de la tarjeta. String visa
CARD_ICON Icono de la tarjeta. String https://testing.hotelpay.net/storage/img/brands/flats/visa.svg
TYPE Tipo de tarjeta. String credit
LAST_4_DIGITS Últimos 4 dígitos de la tarjeta. String 0051
HOLDER_NAME Nombre del titular de la tarjeta. String Alex
MERCHANT_DESCRIPTOR Descripción del comerciante. String HOTELPAY
INSTALLMENT Número de cuotas. String 1
MONTHLY Pago mensual. String $1,000.00 MXN

Información Adicional

Campo Descripción Tipo de Dato Ejemplo
payment_adds.date Fecha del pago. String 01/07/2024 20:56
payment_adds.amount Monto del pago. String $1,000.00 MXN

Estados del pago

Valor Descripción
pending La orden de pago está pendiente de ser procesada.
process La orden de pago está en proceso de ser completada.
paid La orden de pago ha sido completada y confirmada.
canceled La orden de pago ha sido cancelada y no se completará.
error Ha ocurrido un error durante el proceso de la orden de pago.
expired La orden de pago expiró y no se completará.

Estas Tablas vinculadas permite una presentación estructurada y clara de la información contenida en el JSON, facilitando su comprensión y uso.


Estados del webhook

Valor Descripción
success La orden de pago ha sido completada y confirmada.
canceled La orden de pago ha sido cancelada y no se completará.
expired La orden de pago expiró y no se completará.
error Ha ocurrido un error durante el proceso de la orden de pago.

Casos de Uso

Pagos con Tarjeta de Crédito con MSI y Pagos Combinados

En este apartado se detallan los casos de uso para pagos con tarjeta de crédito utilizando Meses Sin Intereses (MSI), pagos combinados y MSI con pagos combinados. Es esencial comprender cómo la propiedad transactions varía según el tipo de pago realizado.

Pagos con Tarjeta de Crédito con MSI

Cuando un cliente realiza un pago con tarjeta de crédito utilizando la opción de Meses Sin Intereses (MSI), la propiedad transactions es un arreglo que contiene un solo objeto. Dentro de este objeto, la propiedad installment indica el número de mensualidades seleccionadas.

    "transactions": [
        {

            "installment": "3",
            "monthly": "$100.00 MXN"
        }
    ]

En este ejemplo, el cliente ha seleccionado pagar en 3 meses sin intereses. La propiedad installment refleja el plazo elegido, y monthly indica el monto a pagar mensualmente.

Pagos Combinados

Los pagos combinados permiten al cliente utilizar más de un método de pago para completar la transacción. En este caso, la propiedad transactions es un arreglo que contiene múltiples objetos, cada uno representando una transacción independiente. Si no se utilizan MSI, la propiedad installment en cada transacción será "1".

    "transactions": [
        {
            "priority": "primary",
            "kind": "card",
            "amount": 150,
            "card_address": { ... },
            "card": { ... },
            "card_info": { ... },
            "installment": "1",
            "monthly": "$150.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        },
        {
            "priority": "secondary",
            "kind": "card",
            "amount": 150,
            "card_address": { ... },
            "card": { ... },
            "card_info": { ... },
            "installment": "1",
            "monthly": "$150.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        }
    ]

En este caso, el pago total de $300.00 MXN se divide en dos transacciones de $150.00 MXN cada una. Ambas transacciones tienen installment igual a "1", indicando que se realizaron sin MSI.

Pagos con MSI y Pago Combinado

Es posible que un cliente realice un pago combinado y además seleccione MSI en una o varias de las transacciones. En este escenario, la propiedad transactions reflejará múltiples objetos, y la propiedad installment variará dependiendo del plazo seleccionado en cada transacción.

"transactions": [
        {
            "priority": "primary",
            "kind": "card",
            "amount": 500,
            "card_address": { ... },
            "card": { ... },
            "card_info": { ... },
            "installment": "3",
            "monthly": "$166.67 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        },
        {
            "priority": "secondary",
            "kind": "card",
            "amount": 500,
            "card_address": { ... },
            "card": { ... },
            "card_info": { ... },
            "installment": "1",
            "monthly": "$500.00 MXN",
            "status": "capture",
            "descriptor": "STRIPE*HOTELPAY"
        }
    ]

En este ejemplo, el cliente ha realizado un pago combinado de $1,000.00 MXN:

  • Transacción 1: $500.00 MXN con MSI a 3 meses (installment: "3"), con pagos mensuales de $166.67 MXN.
  • Transacción 2: $500.00 MXN en un solo pago (installment: "1").

Consideraciones sobre la Propiedad transactions

  • Arreglo de Transacciones: La propiedad transactions es siempre un arreglo. Sin pagos combinados, contiene un solo objeto. Con pagos combinados, contiene tantos objetos como métodos de pago o tarjetas se hayan utilizado.

  • Propiedad installment:

    • Valor "1": Indica que la transacción se realizó en un solo pago sin MSI.
    • Valor "X": Si el cliente selecciona MSI, installment reflejará el número de meses elegidos (por ejemplo, "3", "6", "12").
  • Pagos Combinados con MSI: En pagos combinados, es posible que algunas transacciones utilicen MSI y otras no. Cada transacción reflejará individualmente si se aplicaron MSI.

Webhook.site

Webhook.site es una herramienta que te permite generar URLs únicas para recibir y observar peticiones HTTP, incluyendo JSONs enviados por webhooks. Es útil para pruebas y depuración.

Pasos para usar Webhook.site

  1. Generar una URL de Webhook:

    • Ve a Webhook.site.

    • Se generará automáticamente una URL única para ti.

      Ejemplo de la URL
  2. Configurar la url del Webhook :

    • Ve al backend de hotelpay en el apartado Hoteles.

    • Indica la URL que actuará como el endpoint que recibirá el JSON y de ser necesario indica un token.

  3. Observar los Datos Recibidos:

    • Regresa a la página de Webhook.site.
    • Verás las solicitudes HTTP recibidas en tiempo real, incluyendo el JSON que se ha enviado.
    Ejemplo de una petición webhook de una reserva

Pipedream.com

Pipedream es una plataforma de integración que permite automatizar flujos de trabajo conectando diferentes servicios y aplicaciones. Puedes usar Pipedream para recibir webhooks y procesar los datos.

Pasos para usar Pipedream.com

  1. Crear una Cuenta y un Nuevo Workflow:

    • Regístrate o inicia sesión en Pipedream.
    • Crea un nuevo Workflow.
  2. Configurar el Trigger del Webhook:

    • Selecciona "HTTP / Webhook" como trigger.

      Debemos seleccionar new HTTP
    • Pipedream generará una URL única que actuará como tu endpoint para recibir webhooks.

      Copiamos la URL
  3. Configurar el Emisor del Webhook:

    • Utiliza la URL generada en el servicio que enviará el webhook.
    • Ve al backend de hotelpay en el apartado Hoteles.
    • Indica la URL que actuará como el endpoint que recibirá el JSON y de ser necesario indica un token.
  4. Añadir Pasos para Procesar el JSON:

    • Una vez configurado el trigger, añade un paso para procesar los datos. Puedes usar Node.js, Python o cualquier otro lenguaje soportado por Pipedream, en este caso se utilizara Node js

      Seleccionamos Node para este ejemplo. Seleccionamos la prime opción
    • Copiamos el código y lo pegamos dentro del apartado código en Pipedream

    export default defineComponent({
      async run({ steps, $ }) {
        const data = steps.trigger.event.body;
    
        console.log('Datos recibidos:', data);
    
        const { uuid, reference, amount, currency, customer_info, items, transactions } = data;
    
        console.log(`Reserva UUID: ${uuid}`);
        console.log(`Referencia: ${reference}`);
        console.log(`Monto: ${amount} ${currency}`);
        console.log(`Cliente: ${customer_info.first_name} ${customer_info.last_name}`);
        console.log(`Artículos:`);
        items.forEach(item => {
          console.log(`- Descripción: ${item.description}, Precio: ${item.price}, Cantidad: ${item.quantity}`);
        });
        console.log(`Transacciones:`);
        transactions.forEach(transaction => {
          console.log(`- Monto: ${transaction.amount}, Estado: ${transaction.status}`);
        });
    
        return data;
      }
    });
    
  5. Deploy y Probar:

    • Guarda y despliega el workflow..
  6. Observar y Procesar los Datos:

    • En el dashboard de Pipedream, podrás ver la ejecución de cada workflow, incluyendo los datos recibidos y procesados.

      Ejemplo de cada peticion webhook en un proceso implementado
    • Pipedream también te permite integrar fácilmente con otros servicios y realizar acciones adicionales, como enviar correos electrónicos, almacenar datos en bases de datos, etc.

Consideraciones Adicionales

  • Seguridad: Asegúrate de que solo fuentes confiables envíen datos a tu webhook. Pipedream permite configurar autenticación y otros mecanismos de seguridad.
  • Errores y Reintentos: Maneja adecuadamente los errores y considera implementar un sistema de reintento en caso de fallos.
  • Logs y Monitorización: Tanto Webhook.site como Pipedream proporcionan herramientas para monitorizar y registrar las solicitudes recibidas, lo cual es útil para depuración y análisis.

Usando estas herramientas, puedes recibir, observar y procesar los datos enviados a través del webhook de hotelpay.