BOOKING BMS INTEGRATION

This page provides a detailed overview of both free and paid booking processes integrated through Business Management Systems (BMS). We will explore the sequence of steps involved, starting from the initial checkout to the final confirmation of bookings. The diagrams illustrate how the booking operations are executed through various APIs and payment systems, ensuring a smooth and efficient user experience. Whether you are dealing with a paid booking that involves payment validations and transactions or a free booking that bypasses the payment step, each pathway is mapped out to provide clear insights into the backend operations that support these activities.

External bookings

External bookings involve displaying activities on the activities front end, and when the user clicks to view more, they are redirected to the partner’s website to pay.


Payload

When creating the timeslots, ensure that in the offers the identifier field equals “external” and add the redirect link in meta.booking. See the payload above.


[{
    "identifier": "ourparks2020-Event-99910",
    "activityIdentifier": "ourparks2020",
    "remainingAttendeeCapacity": 29,
    "maximumAttendeeCapacity": 29,
    "startDate": "2024-07-27T08:30:00.000Z",
    "startDateTimezone": 0,
    "endDate": "2024-07-27T09:30:00.000Z",
    "endDateTimezone": 0,
    "status": "PUBLISHED",
    "offers": [
        {
        "identifier": "external",
        "currency": "GBP",
        "price": 0,
        "name": "Rugby Fit",
        "description": null,
        "meta": 
            { "booking": "https://ourparks.org.uk/borough/rugby-fit-99910" }
        }
    ],
    "liveUrl": "https://ourparks.org.uk/borough/rugby-fit-99910",
    "noteForAttendees": null
}]
                        

Paid bookings


Payload

Step 1: BOOKING INIT


{
    "items": [
        {
            "sku": "104228-104244",
            "attendees": [
                {
                    "firstName": "TEST",
                    "lastName": "test",
                    "age": 99,
                    "offerIdentifier": "prix-de-depart"
                }
            ]
        }
    ],
    "callback": {
        "success": "https://activities-fra.staging.decathlon.net//fr-FR/commande/paiement-reussi",
        "failure": "https://activities-fra.staging.decathlon.net//fr-FR/commande/echec"
    }
}
                        

Step 2: BOOKING INIT


{
    "items": [
        {
            "sku": "104314-104322",
            "timeslotMeta": { ... },
            "attendees": [
                {
                    "identifier": 123,
                    "firstName": "Jean",
                    "lastName": "Paul",
                    "age": 25,
                    "email": "[email protected]",
                    "telephone": "01234 567890",
                    "offerIdentifier": "prix-de-depart",
                    "offerMeta": { ... }
                }
            ],
            "customer": {
                "firstName": "Albert",
                "lastName": "Paul",
                "email": "[email protected]",
                "telephone": "09876 543210",
            },
            "totalPaymentDue": {
                "price": 0,
            }
        }
    ]
}

Step 6: BOOKING CONFIRM


{
    "items": [
        {
            "sku": "104314-104322",
            "timeslotMeta": { ... },
            "attendees": [
                {
                    "identifier": 123,
                    "firstName": "Jean",
                    "lastName": "Paul",
                    "age": 25,
                    "email": "[email protected]",
                    "telephone": "01234 567890",
                    "offerIdentifier": "prix-de-depart",
                    "offerMeta": { ... }
                }
            ],
            "customer": {
                "firstName": "Albert",
                "lastName": "Paul",
                "email": "[email protected]",
                "telephone": "09876 543210",
            },
            "totalPaymentDue": {
                "price": 0,
            }
        }
    ]
}


Fields

Name Description
timeSlotMeta The meta data of the Timeslot, the same as it is uploaded to Decathlon by partner.
attendees[].offerMeta The meta data of the Offer, the same as it is uploaded to Decathlon by partner.
attendees[].identifier Will be used to associate an error to an attendee/offer.
attendees[].email, attendees[].telephone Details about the Customer.
customer The Customer is the person who is making the booking. The Customer makes the payment (if there is one) and is the main person to contact. And the Attendees are the people who will be going to the activity. The Customer is often also an Attendee, but not always e.g. a parent may book for their child.
totalPaymentDue.price The expected price for the booking, in pounds.

Free bookings

Free bookings are divided into 2 main parts: first a post request to initiate the booking and a second to confirm the booking.


Booking start



Booking confirm



Payload

Step 1: BOOKING START


{
    "items": [
        {
            "sku": "104314-104322",
            "attendees": [
                {
                    "firstName": "Jean",
                    "lastName": "Paul",
                    "age": 99,
                    "offerIdentifier": "prix-de-depart"
                }
            ]
        }
    ]
}

Step 2: BOOKING INIT


{
    "items": [
        {
            "sku": "104314-104322",
            "timeslotMeta": { ... },
            "attendees": [
                {
                    "identifier": 123,
                    "firstName": "Jean",
                    "lastName": "Paul",
                    "age": 25,
                    "email": "[email protected]",
                    "telephone": "01234 567890",
                    "offerIdentifier": "prix-de-depart",
                    "offerMeta": { ... }
                }
            ],
            "customer": {
                "firstName": "Albert",
                "lastName": "Paul",
                "email": "[email protected]",
                "telephone": "09876 543210",
            }
        }
    ]
}

Step 3: BOOKING CONFIRM

Only post request without payload.


Step 4: BOOKING CONFIRM


{
    "items": [
        {
            "sku": "104314-104322",
            "timeslotMeta": { ... },
            "attendees": [
                {
                    "identifier": 123,
                    "firstName": "Jean",
                    "lastName": "Paul",
                    "age": 25,
                    "email": "[email protected]",
                    "telephone": "01234 567890",
                    "offerIdentifier": "prix-de-depart",
                    "offerMeta": { ... }
                }
            ],
            "customer": {
                "firstName": "Albert",
                "lastName": "Paul",
                "email": "[email protected]",
                "telephone": "09876 543210",
            }
        }
    ]
}