Loading...
Skip navigation

Basket Checkout

The Shop extension comes with 4 predefined checkout types. These are:

  • request
  • prePayment
  • onInvoice
  • payPal (requires Pro Version of the Shop extension)

General configuration

  • checkoutPid Enter the page UID of the checkout page.
  • minimummOrderValue Enter the minimum order value (in cents).
  • orderOptions Define the checkout types here. We will look at this in more detail in another section.
  • fieldDefinition Configure the form fields for checkout. These are configured in the respective TypoScript node to make them available in the various checkouts.

Further checkout-specific configurations can be found on the relevant documentation page.

TypoScript configuration checkout basis

plugin.tx_shop.settings.basketOrder{
    # Page-ID des Checkout
    checkoutPid = {$themes.configuration.pages.shop.checkout}
    # Minimum order value in cents
    minimumOrderValue = {$themes.configuration.extension.shop.basket.minimumOrderValue}
    # Time for payment in days default value
    timeForPayment = 14
    # Default string for delivery time notice in basket above the additional costs
    deliveryTime =
    # VAT information depending on country and b2b/b2c
    vat {
        b2b {
            inland {
                notice = Es handelt sich um eine Inland-Lieferung an ein Unternehmen.<br />Ihre USt.-ID: %1$s
            }
            europeanUnion {
                # Parameter is VAT-ID in basket order
                notice = Es handelt sich um eine steuerbefreite innergemeinschaftliche Lieferung gem. §4 Nr. 1b UstG.<br />Unsere USt.-ID: DE 123 456 789<br />Ihre USt.-ID: %1$s
            }
            thirdCountry {
                notice = Es handelt sich um eine steuerbefreite Ausfuhrlieferung gem. §4 Nr. 1a UstG.
            }
        }
        b2c {
            inland {
                notice = Es handelt sich um eine Inland-Lieferung an eine Privatperson.
            }
            europeanUnion {
                notice = Es handelt sich um eine innergemeinschaftliche Lieferung an eine Privatperson.
            }
            thirdCountry {
                notice = Es handelt sich um eine steuerbefreite Ausfuhrlieferung gem. §4 Nr. 1a UstG.
            }
        }
    }
}

TypoScript configuration order onRequest

plugin.tx_shop.settings.basketOrder{
    orderOptions{
        request {
            active = 1
            type = request
            checkoutPid = {$themes.configuration.pages.shop.checkout}
            successPid = {$themes.configuration.pages.shop.checkoutSuccess}
            errorPid = {$themes.configuration.pages.shop.checkoutError}
            service = CodingMs\Shop\Service\Checkout\RequestCheckoutService
            button {
                title = tx_shop_label.request_button_title
                label = tx_shop_label.request_button_label
                icon = fa fa-shopping-cart
            }

            fields {
                available = company, firstname, lastname, phone, email, message, privacyProtectionConfirmed, termsConfirmed
                required = company, lastname, phone, email, privacyProtectionConfirmed, termsConfirmed
            }

            email {
                customerConfirmation {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        # Customer address data
                    }

                    template = {$themes.configuration.extension.shop.email.templates.request.customerConfirmation}
                }

                request {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        name = {$themes.configuration.extension.shop.email.to.name}
                        email = {$themes.configuration.extension.shop.email.to.email}
                    }

                    template = {$themes.configuration.extension.shop.email.templates.request.request}
                }
            }
        }
    }
}

TypoScript configuration order onPrePayment

plugin.tx_shop.settings.basketOrder{
    orderOptions{
        prePayment {
            active = 1
            attachInvoice = 0
            attachInvoiceToAdminEmail = 1
            attachInvoiceToCustomerEmail = 1
            type = prePayment
            checkoutPid = {$themes.configuration.pages.shop.checkout}
            successPid = {$themes.configuration.pages.shop.checkoutSuccess}
            errorPid = {$themes.configuration.pages.shop.checkoutError}
            service = CodingMs\Shop\Service\Checkout\PrePaymentCheckoutService
            button {
                title = tx_shop_label.pre_payment_button_title
                label = tx_shop_label.pre_payment_button_label
                icon = fa fa-shopping-cart
            }

            fields {
                available = company, vatId, firstname, lastname, street, houseNumber, postalCode, city, country, phone, email, message, deliveryAddressEnabled, deliveryAddressCompany, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed
                required = firstname, lastname, street, houseNumber, postalCode, city, country, email, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry
            }

            email {
                customerConfirmation {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        # Customer address data
                    }
                    template = {$themes.configuration.extension.shop.email.templates.prePayment.customerConfirmation}
                }

                order {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        name = {$themes.configuration.extension.shop.email.to.name}
                        email = {$themes.configuration.extension.shop.email.to.email}
                    }

                    template = {$themes.configuration.extension.shop.email.templates.prePayment.order}
                }
            }
        }
    }
}

TypoScript configuration order onInvoice

plugin.tx_shop.settings.basketOrder{
    orderOptions{
        onInvoice {
            active = 1
            attachInvoice = 0
            attachInvoiceToAdminEmail = 1
            attachInvoiceToCustomerEmail = 1
            type = onInvoice
            checkoutPid = {$themes.configuration.pages.shop.checkout}
            successPid = {$themes.configuration.pages.shop.checkoutSuccess}
            errorPid = {$themes.configuration.pages.shop.checkoutError}
            service = CodingMs\Shop\Service\Checkout\OnInvoiceCheckoutService
            button {
                title = tx_shop_label.order_on_invoice_button_title
                label = tx_shop_label.order_on_invoice_button_label
                icon = fa fa-shopping-cart
            }

            fields {
                available = company, vatId, firstname, lastname, street, houseNumber, postalCode, city, country, phone, email, message, deliveryAddressEnabled, deliveryAddressCompany, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed
                required = firstname, lastname, street, houseNumber, postalCode, city, country, email, privacyProtectionConfirmed, termsConfirmed, disclaimerConfirmed, deliveryAddressFirstname, deliveryAddressLastname, deliveryAddressStreet, deliveryAddressHouseNumber, deliveryAddressPostalCode, deliveryAddressCity, deliveryAddressCountry
            }

            email {
                customerConfirmation {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        # Customer address data
                    }
                    template = {$themes.configuration.extension.shop.email.templates.onInvoice.customerConfirmation}
                }

                order {
                    active = 1
                    from {
                        name = {$themes.configuration.extension.shop.email.from.name}
                        email = {$themes.configuration.extension.shop.email.from.email}
                    }

                    to {
                        name = {$themes.configuration.extension.shop.email.to.name}
                        email = {$themes.configuration.extension.shop.email.to.email}
                    }

                    template = {$themes.configuration.extension.shop.email.templates.onInvoice.order}
                }
            }
        }
    }
}

Field definitions

plugin.tx_shop.settings.basketOrder{
    fieldDefinition {

        company {
            label = Company
            placeholder = Your company
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your company name
            }
        }
        vatId {
            label = VAT-ID
            placeholder = Your VAT-ID
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your VAT-ID
            }
        }
        firstname {
            label = Firstname
            placeholder = Your firstname
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your firstname
            }
        }
        lastname {
            label = Lastname
            placeholder = Your lastname
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your lastname
            }
        }
        street {
            label = Street
            placeholder = Your street
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your street
            }
        }
        houseNumber {
            label = Housenumber
            type = input
            eval = trim
            placeholder = Your housenumber
            errors {
                isEmpty = Please enter your housenumber
            }
        }
        postalCode {
            label = Postal code
            placeholder = Your postal code
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your postal code
            }
        }
        city {
            label = City
            placeholder = Your city
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your city
            }
        }
        country {
            label = Land
            type = country
            eval = trim
            default = DE
            errors {
                isEmpty = Please choose your country
            }
        }
        phone {
            label = Phone
            placeholder = Your phone number
            type = input
            eval = trim
            errors {
                isEmpty = Please enter your phone number
            }
        }
        email {
            label = Email
            placeholder = Your email
            type = input
            eval = trim,email
            errors {
                isEmpty = Please enter your email address
                isInvalidEmail = Please enter a valid mail address
            }
        }
        category {
            label = Category
            placeholder = Please enter the category
            type = select
            eval = trim
            options {
                0 {
                    value = food
                    label = Food
                }
                1 {
                    value = health
                    label = Health
                }
            }
        }
        message {
            label = Message
            placeholder = Your message
            type = textarea
            eval = trim
            errors {
                isEmpty = Please enter a message
            }
        }

        privacyProtectionConfirmed {
            label = I've read the <a href="%s" target="_blank">privacy protection and accept them</a>
            type = checkbox
            eval = trim
            linkPid = {$themes.configuration.pages.privacy}
            errors {
                isEmpty = Please accept our privacy protection
            }
        }
        termsConfirmed {
            label = I've read the <a href="%s" target="_blank">terms</a> and accept them
            type = checkbox
            eval = trim
            linkPid = {$themes.configuration.pages.terms}
            errors {
                isEmpty = Please accept our terms
            }
        }
        disclaimerConfirmed {
            label = I've read the <a href="%s" target="_blank">disclaimer</a> and accept them
            type = checkbox
            eval = trim
            linkPid = {$themes.configuration.pages.disclaimer}
            errors {
                isEmpty = Please accept the disclaimer
            }
        }

        deliveryAddressEnabled {
            type = checkbox
            deliveryAddressToggle = 1
            label = Deviating delivery address
        }
        deliveryAddressCompany {
            label = Company
            type = input
            eval = trim
            deliveryAddress = 1
            placeholder = Your company
            errors {
                isEmpty = Please enter your company name
            }
        }
        deliveryAddressFirstname {
            label = Firstname
            type = input
            eval = trim
            deliveryAddress = 1
            placeholder = Your firstname
            errors {
                isEmpty = Please enter your firstname
            }
        }
        deliveryAddressLastname {
            label = Lastname
            placeholder = Your lastname
            type = input
            eval = trim
            deliveryAddress = 1
            errors {
                isEmpty = Please enter your lastname
            }
        }
        deliveryAddressStreet {
            label = Street
            placeholder = Your street
            type = input
            eval = trim
            deliveryAddress = 1
            errors {
                isEmpty = Please enter your street
            }
        }
        deliveryAddressHouseNumber {
            label = Housenumber
            type = input
            eval = trim
            deliveryAddress = 1
            placeholder = Your housenumber
            errors {
                isEmpty = Please enter your housenumber
            }
        }
        deliveryAddressPostalCode {
            label = Postal code
            placeholder = Your postal code
            type = input
            eval = trim
            deliveryAddress = 1
            errors {
                isEmpty = Please enter your postal code
            }
        }
        deliveryAddressCity {
            label = City
            placeholder = Your city
            type = input
            eval = trim
            deliveryAddress = 1
            errors {
                isEmpty = Please enter your city
            }
        }
        deliveryAddressCountry {
            label = Country
            type = country
            eval = trim
            default = DE
            deliveryAddress = 1
            errors {
                isEmpty = Please choose your country
            }
        }
        deliveryAddressPhone {
            label = Phone
            placeholder = Your phone number
            type = input
            eval = trim
            deliveryAddress = 1
            errors {
                isEmpty = Please enter your phone number
            }
        }

    }
}

Additional costs

Shipping costs

Contact request

You can contact us at any time

Stop! Playing in the meantime?
Stop! Playing in the meantime?
Stop! Playing in the meantime?

Stop! Playing in the meantime?

Break the highscore

Press Start
Contact request
Screenreader label
Security question
_1___________1_______
SI_____U____98____SS3
_Q____ABQ____R_______
_S_____3_____F____MNG
LL4_________7O7______