Warenkorb Checkout

Die Shop-Erweiterung kommt mit 4 vordefinierten Checkout-Varianten. Diese sind:

  • request Anfrage
  • prePayment Vorauskasse
  • onInvoice Auf Rechnung
  • payPal PayPal (erfordert Pro-Version der Shop-Erweiterung)

Allgemeine Konfiguration

  • checkoutPid Hier muss die Page-Uid für die Checkout-Seite angegeben werden.
  • minimummOrderValue Hier kann der Mindestbestellwert (in Cents) angegeben werden.
  • orderOptions Hier werden die Checkout-Varianten definiert. Auf diese gehen wir in separaten Abschnitten genauer ein.
  • fieldDefinition Hier werden Formular-Felder für den Checkout konfiguriert. Diese werden erst in den jeweiligen TypoScript-Knoten vorkonfiguriert und können dann in den verschiedenen Checkouts verwendet werden.

Weitere Checkout spezifische Konfigurationen finden Sie auf den jeweiligen Dokumentationsseiten.

TypoScript Konfiguration 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 Konfiguration Request

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 Konfiguration Prepayment

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 Konfiguration 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}
                }
            }
        }
    }
}

Feld Definitionen

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
            }
        }
        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'v 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'v 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