Mollie

Introduction

This module has been deprecated in favor of https://addons.reinos.nl/simple-store

With Mollie you are able to create a simple Webshop connected to the Mollie payment provider.

It allows you to add entries as products to your cart, calculate TAX on it and checkout your order with default shipping cost.

Deprecated

This module has been deprecated in favor of https://addons.reinos.nl/simple-store. The Simple Store module is almost the same as the mollie module and you can easily migrate from mollie to Simple Store.

  1. Install the Simple Store Module
  2. Navigate to the Mollie module and click on the "Migrate" option to migrate the data to Simple Store
  3. Verify that your data is inside the Simple Store module.

Documentation versions

Installation

Prerequisites

Make sure your system meets the minimum requirements:

Installation Instructions

Update instructions

Important notes

Examples

Examples can be found here

License

For every paid addon you need to validate your license in order to activate the module.

On a local environment, like *.dev *.local *.localhost *.test the license is valid for testing and building a new or existing sites. For every other domain, you need to have a valid license.

Process of validating

Once installed, you will asked to enter your license key. When you entered a valid license you can hit the "Save license" button. This will start validating your license and will redirect you to addons.reinos.nl to login into your account. You can also register a new account in this process.

Control panel overview

Once logged in, you are asked to use your current account or to login with another one.

Control panel overview

Using the current logged in account, the server will check all info related to your license and once valid, it will redirect you back to your site where you see either a success message or an error message.

Control panel overview

License field

This module is using a license field to check if the license for the module is valid or not. On addons.reinos.nl you can check your license and add your valid domains.

Control panel overview

In the Module CP you can enter then your license Control panel overview

When you enter a wrong license, the module will not work and it shows you an warning Control panel overview

Invalid license

Sometimes it happens that the license system says you have an invalid license. When this happens, make sure you have entered your domain url in your account, next to your license on addons.reinos.nl.

If this will not fix your license problem, please contact us on https://addons.reinos.nl/support

CP Overview

On the CP page you can modify a couple of things.

Settings

Frontend order url

Set this to the url where your order is shown on the frontend.

Currency Symbol

Set a default currency symbol

Shipping price

The default shipping rate

TAX percentage

The percentage TAX for a product

TAX Type

Is the price of a product incl TAX or excl TAX or none?

Email from

The From address

Email from Name

The from name

BCC

Send the mail also to notification one ore more addresses.

Email type

Send it as text or HTML

Default country

Set a default country

Allowed countries

Select the countries that are allowed for the shop

Mollie Mode

Are we in production or in test. Or on local you can set it to manual so you can test the shop on a local site

Logging

What should we log?

Example Templates

The module comes with some default predefined templates that can be used for your shop. On this page you can install them.

Logging

This is where you can track all error logs

Orders

The order overview page. For the detail page we connect the url of your frontend to the order. If you did not set an order template (we suggest you do), it will show the details in a simple page.

License

Enter your license key to activate your module

Setup the store

In order to setup the store you have to follow the following steps.

Add to Cart tag

The tag for adding items to the cart

The tag

{exp:reinos_mollie:add_to_cart}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

return_url

The return url, default to the current url

return_url=""

sku

The SKU for a product. If omitted, it allows you to add multiple lines of the same products in to your cart.

sku=""

entry_id

Set the entry_id of your product. This way we can reference the product to your entry.

entry_id=""

name

Set your product name

name=""

price

Set the price of the product.

price="0.00"

tax

Set the tax.

This can either low or high and load the value that has been set in your settings

If omit the param, it will fallback on the default tax rate set in the settings.

tax="low"

clear_cart

When adding a product, your can clear the cart so it always have 1 product in the cart.

clear_cart="no"

disable_shipping

If you have no shipping cost, you can disable it for a product

disable_shipping="no"

form_class

Set the form class

form_class=""

form_id

Set the form id

form_id=""

custom_fields:

Set custom fields

custom_fields:test="value"
custom_fields:or_an_other_value="value"

Input fields

qty

<input name="qty" value="1"/><br>

custom_fields

<input name="custom_fields[yet_another]" value="custom value"/><br>
<input name="custom_fields[and_another]" value="other custom value"/><br>

Tag Variables

error:invalid_price

Return the error when an invalid price is given.

{if error:invalid_price}
    <p style="color:red;">You have entered an invalid price</p>
{/if}

error:invalid_sale_price

Return the error when an invalid sales price is given.

{if error:invalid_sale_price}
    <p style="color:red;">You have entered an invalid sales price</p>
{/if}

Example

Below a small example how you can add a product to your cart

<div class="grid grid-cols-3 gap-3">
  {exp:channel:entries channel="products"}
    <div class="border p-5 rounded-md bg-gray-100 space-y-3">
      <h2 class="font-medium text-lg">{title}</h2>
      <h3>
        <span {if product_sale_price > 0}class="line-through"{/if}>{product_price:formatted}</span>
        {if product_sale_price > 0}<span>{product_sale_price:formatted}</span>{/if}
      </h3>
      <img class="w-full" src="http://via.placeholder.com/640x360" alt="Card image cap">
      <p>Some quick example text to build on the card title and make up the bulk of the card's content.</p>
      {exp:reinos_simple_store:add_to_cart
        form_class="space-y-3"
        entry_id="{entry_id}"
        sku="{entry_id}"
        name="{title}"
        price="{product_price}"
        sale_price="{product_sale_price}"
        weight="10"
        disable_shipping="{product_disable_shipping}"
        return_url="simple_store/cart"
        custom_fields:test="test custom field"
        tax="high"
        {!-- set a label for your custom fields --}
        custom_fields_label:test="Testing"
        custom_fields_label:field_from_input="Field from Input"
        }
          {if error:invalid_price}
          <p style="color:red;">You have entered an invalid price</p>
          {/if}

          {if error:invalid_sale_price}
          <p style="color:red;">You have entered an invalid sale price</p>
          {/if}

          <div class="flex flex-col space-y-1">
             <label class="font-medium">Custom Field</label>
            <input class="input" type="text" name="custom_fields[field_from_input]" placeholder="custom field"/>
          </div>

          <div class="flex flex-col space-y-1">
            <label class="font-medium" for="qty">Aantal</label>
            <input class="input" type="number" id="qty" name="qty" value="1"/><br>
          </div>

          <input type="submit" class="button" value="Add to Cart"/>
        {/exp:reinos_simple_store:add_to_cart}
    </div>
    {/exp:channel:entries}
</div>

Cart tag

Loop over the cart variables and items

The tag

{exp:reinos_mollie:cart}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

return_url

The return url, default to the current url

return_url=""

form_class

Set the form class

form_class=""

form_id

Set the form id

form_id=""

prefix

Set a prefix

prefix="cart:"

can_update

Set the cart as updated, so it can update the qty

can_update="yes"

Tag Variable

Below are the Tag Variables. Those Variables can be used in the tag described above

cart:no_items

Check if there are no_items

{if cart:no_items}...{/if}

cart:items

Loop over the items in the cart

{cart:items}
    {cart:name}
    {cart:price}
    {cart:price_plus_tax}
    {cart:qty}
    {cart:sku}
    {cart:entry_id}
    {cart:disable_shipping}
    {cart:price_total}
    {cart:price_total_plus_tax}
    {cart:custom_fields}<strong>{custom_fields:label}:</strong> {custom_fields:value}{/cart:custom_fields}
{/cart:items}

cart:subtotal

{cart:subtotal}

cart:subtotal_plus_tax

{cart:subtotal_plus_tax}

cart:total

{cart:total}

cart:total_plus_tax

{cart:total_plus_tax}

cart:tax

{cart:tax}

cart:shipping

{cart:shipping}

cart:shipping_plus_tax

{cart:shipping_plus_tax}

cart:entry_ids

Hold all entry_ids as a pipeline delimited string

{cart:entry_ids}

Checkout tag

The Checkout tag

The tag

{exp:reinos_mollie:checkout}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

return_url

The return url, default to the current url

return_url=""

form_class

Set the form class

form_class=""

form_id

Set the form id

form_id=""

Tag Variable

Below are the Tag Variables. Those Variables can be used in the tag described above

global_error

Global errors

{global_error}

has_global_errors

Check for global errors

{if has_global_errors}
   {global_error}
{/if}

has_field_errors

Check for field errors

{if has_field_errors}
   ...
{/if}

field_name:error

Error, if there is one, per field

{customer_first_name:error}
{customer_last_name:error}
{customer_email:error}
{customer_phone:error}
{customer_company:error}
{billing_address:error}
{billing_address2:error}
{billing_zip:error}
{billing_city:error}
{billing_country:error}
{shipping_address:error}
{shipping_address2:error}
{shipping_zip:error}
{shipping_city:error}
{shipping_country:error}

{!-- for example --}
{if customer_company:error != ''}<span class="text-red">{customer_company:error}</span>{/if}

field_name:value

Values, if there is something, per field

{customer_first_name:value}
{customer_last_name:value}
{customer_email:value}
{customer_phone:value}
{customer_company:value}
{billing_address:value}
{billing_address2:value}
{billing_zip:value}
{billing_city:value}
{billing_country:value}
{shipping_address:value}
{shipping_address2:value}
{shipping_zip:value}
{shipping_city:value}
{shipping_country:value}

Country tag

This tag will convert your ISO-2 lang code to a readable one.

The tag

{exp:reinos_mollie:country}DE{/exp:reinos_mollie:country}

Country List tag

Get a select HTML list of all your countries, and also checking the settings for default and allowed countries

The tag

{exp:reinos_mollie:country_list type="billing" class="form-control" value=""}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

class

Set the CLASS for the select

class=""

id

Set the ID for the select

id=""

type

Set to billing or shipping

type="billing"

value

set the default value

value=""

Format tag

Format the price to the correct decimals and currency symbol

The tag

{exp:reinos_mollie:format}9.95{/exp:reinos_mollie:format}

Global variables

Below the global variables that can be used anywhere.

reinos_mollie_total_in_cart

{reinos_mollie_total_in_cart}

Order tag

The order tag

The tag

{exp:reinos_mollie:order}

Tag Parameters

Below are the Tag Parameters. Those parameters can be used in the tag described above

prefix

Prefix the variables

prefix="order:"

order_id

Set a order_id for the order you want to fetch

order_id=""

hash

Set a hash for the order you want to fetch

hash=""

Tag Variable

Below are the Tag Variables. Those Variables can be used in the tag described above

no_results

Check if there is any result

{if no_results}...{/if}

order:payment_url

The payment url, used when the order is open and should be payed

{if order:status == 'open' }
    Your order is not yet payed, finish your order by clicking <a href="{order:payment_url}">here</a>.
{/if}

order:order_id

{order:order_id}

order:time

{order:time format="%d %M %Y"}

order:transaction_id

{order:transaction_id}

order:status

{order:status}

order:customer_company

{order:customer_company}

order:customer_first_name

{order:status}

order:customer_last_name

{order:customer_last_name}

order:customer_email

{order:customer_email}

order:customer_phone

{order:customer_phone}

order:billing_address

{order:billing_address}

order:billing_address2

{order:billing_address2}

order:billing_zip

{order:billing_zip}

order:billing_city

{order:billing_city}

order:billing_country

The ISO-2 lang code. Convert it with {exp:reinos_mollie:country} to get a readable name

{exp:reinos_mollie:country}{order:billing_country}{/exp:reinos_mollie:country}

order:shipping_address

{order:shipping_address}

order:shipping_address2

{order:shipping_address2}

order:shipping_zip

{order:shipping_zip}

order:shipping_city

{order:shipping_city}

order:shipping_country

The ISO-2 lang code. Convert it with {exp:reinos_mollie:country} to get a readable name

{exp:reinos_mollie:country}{order:shipping_country}{/exp:reinos_mollie:country}

order:items

Loop over the items in the order

{order:items}
    {order:name}
    {order:price}
    {order:price_plus_tax}
    {order:qty}
    {order:sku}
    {order:entry_id}
    {order:disable_shipping}
    {order:price_total}
    {order:price_total_plus_tax}
    {order:items:custom_fields}<strong>{custom_fields:label}:</strong> {custom_fields:value}{/order:items:custom_fields}
{/order:items}

order:subtotal

{order:subtotal}

order:subtotal_plus_tax

{order:subtotal_plus_tax}

order:total

{order:total}

order:total_plus_tax

{order:total_plus_tax}

order:tax

{order:tax}

order:shipping

{order:shipping}

order:shipping_plus_tax

{order:shipping_plus_tax}

order:entry_ids

Hold all entry_ids as a pipeline delimited string

{order:entry_ids}

Price Fieldtype

The price fieldtype is a special fieldtype that can hold currency values.

By default the fieldtype field output a numeric value that can be used for the {exp:reinos_mollie:add_to_cart product_price=""} parameter.

Fieldtype Modifiers

Below are the Fieldtype Modifiers. Those Variables can be used in the tag described above

:no_tax

Output the price without TAX and formatted

{your-field-name:no_tax}

:plus_tax

Output the price with TAX and formatted

{your-field-name:plus_tax} //fall back on the default tax value
{your-field-name:plus_tax tax="low"}
{your-field-name:plus_tax tax="high"}
{your-field-name:plus_tax tax="22"} //custom numeric value

:plus_tax_numeric

Output the price with TAX as a numeric value

{your-field-name:plus_tax_numeric} //fall back on the default tax value
{your-field-name:plus_tax_numeric tax="low"}
{your-field-name:plus_tax_numeric tax="high"}
{your-field-name:plus_tax_numeric tax="22"} //custom numeric value

:no_tax_numeric

Output the price without TAX as a numeric value

{your-field-name:no_tax_numeric}

:numeric

Output the price, as given as a numeric value

{your-field-name:numeric} //fall back on the default tax value
{your-field-name:numeric tax="low"}
{your-field-name:numeric tax="high"}
{your-field-name:numeric tax="22"} //custom numeric value

:formatted

Output the price, as given formatted

{your-field-name:formatted} //fall back on the default tax value
{your-field-name:formatted tax="low"}
{your-field-name:formatted tax="high"}
{your-field-name:formatted tax="22"} //custom numeric value

Changelog

2.1.0 (03-06-2021)

2.0.0 (28-12-2020)

1.2.2 (09-09-2020)

1.2.1 (30-05-2020)

1.2.0 (02-05-2020)

1.1.0 (10-03-2020)

1.0.2 (29-01-2020)

1.0.1 (01-10-2019)

1.0.1 (01-10-2019)

1.0.0 (04-08-2019)