From 63bb8ba701022d87ba5b9499a3fae975376cb0f5 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 10 Jan 2024 13:08:32 +0100
Subject: [PATCH 001/319] DOCS 4144 BPM discontinued
---
.gitignore | 1 +
content/payment-methods/betaalpermaand.md | 6 ++++++
content/point-of-sale/event-notifications.md | 3 ++-
content/point-of-sale/hardware-setup.md | 1 +
content/point-of-sale/pos-troubleshooting.md | 1 +
content/point-of-sale/smartPOS-features.md | 1 +
content/point-of-sale/smartpos-activation.md | 1 +
content/point-of-sale/smartpos-overview.md | 1 +
content/point-of-sale/smartpos-solutions.md | 1 +
content/point-of-sale/traditional-ctap.md | 1 +
docs/archive/payment-methods.md | 2 +-
11 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index af1d0fa88..d6074e3e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ node_modules
# ignore vim swap files
*.swp
*.swo
+*.code-workspace
diff --git a/content/payment-methods/betaalpermaand.md b/content/payment-methods/betaalpermaand.md
index eec3e09a6..80f92652c 100755
--- a/content/payment-methods/betaalpermaand.md
+++ b/content/payment-methods/betaalpermaand.md
@@ -7,6 +7,12 @@ parentDoc: 62bd75142e264000a66d62b5
slug: betaal-per-maand
---
+
+⚠️ Note:
+
+>Santander betaal per maand is discontinued as from 01/01/2024, and no new orders will be accepted. Existing orders will be handled up to 31/03/2024, after which no operations are possible anymore.
+
+
Betaal per Maand is a MultiSafepay <> method in collaboration with Santander. It is intended for large amounts paid as a one-off payment or in monthly installments. Santander bears the risk and guarantees <>.
diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md
index a7fe7f5aa..63ad45fe9 100644
--- a/content/point-of-sale/event-notifications.md
+++ b/content/point-of-sale/event-notifications.md
@@ -12,7 +12,8 @@ slug: 'event-notifications'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
->
+> - Belgium
+>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
>
diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md
index d2353d226..34b000fbf 100644
--- a/content/point-of-sale/hardware-setup.md
+++ b/content/point-of-sale/hardware-setup.md
@@ -11,6 +11,7 @@ slug: 'hardware-setup'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 6e88e732e..81425190c 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -12,6 +12,7 @@ slug: 'pos-troubleshooting'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index 460718f1a..9bd58edfc 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -13,6 +13,7 @@ slug: 'smartpos-features'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md
index 9f633fdf5..8dc680077 100644
--- a/content/point-of-sale/smartpos-activation.md
+++ b/content/point-of-sale/smartpos-activation.md
@@ -12,6 +12,7 @@ slug: 'smartpos-activation'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/smartpos-overview.md b/content/point-of-sale/smartpos-overview.md
index b8b9e3495..996cdbad2 100644
--- a/content/point-of-sale/smartpos-overview.md
+++ b/content/point-of-sale/smartpos-overview.md
@@ -11,6 +11,7 @@ slug: 'smartpos-terminal'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md
index b59d13846..f3d71f1b7 100644
--- a/content/point-of-sale/smartpos-solutions.md
+++ b/content/point-of-sale/smartpos-solutions.md
@@ -12,6 +12,7 @@ slug: 'smartpos-solutions'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md
index a3219d375..1916148a8 100644
--- a/content/point-of-sale/traditional-ctap.md
+++ b/content/point-of-sale/traditional-ctap.md
@@ -12,6 +12,7 @@ slug: 'traditional-ctap-terminal'
> We are currently in the pilot phase for this product in the following countries:
>
> - Netherlands
+> - Belgium
>
> Please note that in this stage, you cannot request terminals yet to use POS services.
> If you are interested in participating in the next stage of our pilot, email
diff --git a/docs/archive/payment-methods.md b/docs/archive/payment-methods.md
index c7ee199dc..41729b2c9 100644
--- a/docs/archive/payment-methods.md
+++ b/docs/archive/payment-methods.md
@@ -46,7 +46,7 @@ Once the method is activated, also enable it in your <>.
| Lithuania | PayPal, Trustly |
| Luxembourg | PayPal, Trustly |
| Malta | PayPal, Trustly |
-| Netherlands | Betaal per Maand, gift cards, iDEAL, in3, Klarna, Pay After Delivery, PayPal, Riverty, Trustly |
+| Netherlands | Gift cards, iDEAL, in3, Klarna, Pay After Delivery, PayPal, Riverty, Trustly |
| Norway | Klarna, PayPal, Trustly |
| Poland | Dotpay, PayPal, Sofort, Trustly |
| Portugal | PayPal, Trustly |
From 88b7ee701664ab003bab9f12265d019f7a24e73c Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Mon, 15 Jan 2024 13:07:02 +0100
Subject: [PATCH 002/319] DOCS 4145 change localization instructions
---
content/checkout/payment-pages.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/content/checkout/payment-pages.md b/content/checkout/payment-pages.md
index 6093b8e4d..856382264 100755
--- a/content/checkout/payment-pages.md
+++ b/content/checkout/payment-pages.md
@@ -105,7 +105,11 @@ Payment pages support the following languages:
You can also localize payment pages to automatically filter out payment methods that are not available in the customer's country, and to display local variants.
-See API reference > [Create order](/reference/createorder) > `customer` object > `locale` parameter.
+The first parameter taken into account is the `country` parameter. Secondly, `locale` is checked.
+If `country`is not sent, the decision is based on `locale`.
+
+
+See API reference > [Create order](/reference/createorder) > `customer` object > `country` and `locale` parameters.
Locale codes per language and country
From 96db88dfceb7dffce39eecd7f6830a8289f6382b Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Mon, 15 Jan 2024 13:27:26 +0100
Subject: [PATCH 003/319] DOCS 4140 change Klarna expiration time
---
api/general/transaction-expiration.md | 2 +-
content/payment-methods/klarna.md | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/api/general/transaction-expiration.md b/api/general/transaction-expiration.md
index 385b2d4e1..7acbc8439 100644
--- a/api/general/transaction-expiration.md
+++ b/api/general/transaction-expiration.md
@@ -32,7 +32,7 @@ The table below sets out the expiration time per payment method:
| Google Pay| 1 hour |
| iDEAL| 1.5 hours|
| in3| 2 hours |
-| Klarna| 1 hour |
+| Klarna| 1 day |
| MB WAY| 4 minutes |
| Multibanco| 72 hours |
| MyBank| 1 hour |
diff --git a/content/payment-methods/klarna.md b/content/payment-methods/klarna.md
index 13e93831d..50005df40 100755
--- a/content/payment-methods/klarna.md
+++ b/content/payment-methods/klarna.md
@@ -42,7 +42,7 @@ The table below sets out the <> and < See [Expired orders](#expired-orders). | Expired | Expired |
+| The transaction expired after 1 day or you didn't [change the order status to shipped](#shipment) within 28 days. See [Expired orders](#expired-orders). | Expired | Expired |
| Klarna authorized the transaction, but either you or the customer cancelled it before capture. | Void | Void |
| Klarna declined the transaction. Only the customer can contact Klarna to find out why (for privacy and compliance reasons). For merchant support, email | Declined | Declined |
| **Refunds:** Refund initiated. | Initialized | Completed |
@@ -98,7 +98,7 @@ For support, email
- A `shopping_cart` object is required for all BNPL orders. See Recipes – Include shopping_cart in order .
-- Transactions expire after 1 hour.
+- Transactions expire after 1 day.
- For <> orders, you must display your terms and conditions in your checkout.
### Ready-made integrations
From a845cc8279652017be0b8ff435dd0bd4af5083d9 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Mon, 15 Jan 2024 13:50:56 +0100
Subject: [PATCH 004/319] DOCS 4148 in3 amount limit
---
content/payment-methods/in3.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 5e76ca512..2705eaa50 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -105,7 +105,7 @@ Different billing and shipping addresses are supported.
## Amount limits
-- Minimum amount: 100 EUR
+- Minimum amount: 50 EUR
- Maximum amount: 3000 EUR
You can adjust these limits in the <> of our [ready-made integrations](/docs/our-integrations/) to show or hide in3 on your checkout page depending on the order value.
From 0033ad4ebd9459c6714adc05c5133de94403d673 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 17 Jan 2024 10:36:22 +0100
Subject: [PATCH 005/319] DOCS 4149 new instructions Terminal onboarding
---
content/point-of-sale/smartpos-activation.md | 11 ++++++-----
content/point-of-sale/traditional-ctap.md | 15 ++++++++-------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md
index 8dc680077..0f467d8c4 100644
--- a/content/point-of-sale/smartpos-activation.md
+++ b/content/point-of-sale/smartpos-activation.md
@@ -33,13 +33,14 @@ To activate a SmartPOS terminal, follow these steps:
1. Sign in to your MultiSafepay dashboard .
2. Go to **Devices** > **Terminals**.
-3. Click **Add SmartPOS**.
-4. Below the **<> name**, click **Add new group**.
+3. Click **Add terminal**.
+4. Below the **<> name**, click **Add new group**, or select a previously created group.
5. Fill out the following fields:
- **New group name**.
-- **Terminal name**.
-- In the **MCC** field, click the **drop-down** icon and select the relevant MCC code.
-6. Click **Get code**. A dialog with a QR code appears.
+- **Webhook URL** (optional).
+- In the **Business category** field, click the **drop-down** icon and specify the relevant service or product offered. If a category has been assigned to your account in the past, it will be displayed automatically.
+6. Select Terminal type **SmartPOS**
+
Install the MultiSafepay payment app on your terminal to scan the QR code.
diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md
index 1916148a8..e916a9c66 100644
--- a/content/point-of-sale/traditional-ctap.md
+++ b/content/point-of-sale/traditional-ctap.md
@@ -32,14 +32,15 @@ Traditional (CTAP) is a terminal that has passed MultiSafepay dashboard .
2. Go to **Devices** > **Terminals**.
-3. Select **Add Traditional (CTAP)**.
-4. On the **New Traditional (CTAP)** tab > select **Add new group**.
-5. Fill out the following fields:
-- **New group name**.
-- **Terminal name**.
-- In the **MCC** field, click the **drop-down** icon and then select the relevant MCC code.
-6. Select **Create**.
+3. Click **Add terminal**.
+4. Below the **<> name**, click **Add new group**, or select a previously created group.
+5. For a new group, out the following fields:
+- **New group name**.
+- **Webhook URL** (optional).
+- In the **Business category** field, click the **drop-down** icon and specify the relevant service or product offered. If a category has been assigned to your account in the past, it will be displayed automatically.
+6. Select Terminal type **CTAP** and, if applicable, insert your TID. Otherwise, a unique Terminal ID will be automatically generated.
7. Copy **Terminal ID**, **Account ID**, and **CTAP Acquirer** and send them to your POS provider.
+**Tip**: As long as the terminal is not bound, the TID and name can be changed via the "Edit" icon.
8. After your POS provider has set up your terminal, the activation is completed.
9. Terminal manufacturer and serial number are now displayed in your MultiSafepay dashboard .
From 25f28283a41cfc7bd4b9030057525daa4f275fa1 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 17 Jan 2024 15:26:01 +0100
Subject: [PATCH 006/319] DOCS 4135 Add 2 authorization error codes
---
content/payment-methods/card-payment-errors.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md
index 3c7fd32d7..40ce566f7 100644
--- a/content/payment-methods/card-payment-errors.md
+++ b/content/payment-methods/card-payment-errors.md
@@ -58,6 +58,8 @@ If the issue can't be resolved, ask the cardholder for another card number or to
| **Invalid merchant or service provider** | The issuer restricts the merchant or service provider.| **Cardholder:** Contact the issuer.|
| **Pick up the card** | The transaction was declined because the cardholder's account was closed or blocked.| **Cardholder:** Contact the issuer to complete the transaction |
| **Pick up the card, special conditions** | The issuer wants to check the transaction.| **Cardholder:** Contact the issuer to complete the transaction |
+| **Cardholder not enrolled in service** | Cardholder: Please contact your bank Merchant: card not enrolled in 3DS service. Not possible to authenticate |
+| **Transaction timed out at the ACS** | Merchant: Transaction expired in authentication stage |
| **Invalid merchant or service provider** | The merchant or service provider is restricted by the issuer.| **Cardholder:** Contact the issuer. |
| **Invalid transaction** | The transaction is invalid. |**Cardholder:** Check the payment method type and payment details **Merchant:** Do not reattempt. The issuer will never approve.|
| **Invalid amount** | The payment amount exceeds issuer policies or regulatory limits.| **Cardholder:** Contact your bank. |
From 86cf1993d85520f90c3cb7229ef47d34e49150ca Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Thu, 18 Jan 2024 15:51:22 +0100
Subject: [PATCH 007/319] DOCS-4135 Add 2 authorization error codes
---
content/payment-methods/card-payment-errors.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md
index 40ce566f7..fccd749ba 100644
--- a/content/payment-methods/card-payment-errors.md
+++ b/content/payment-methods/card-payment-errors.md
@@ -59,7 +59,7 @@ If the issue can't be resolved, ask the cardholder for another card number or to
| **Pick up the card** | The transaction was declined because the cardholder's account was closed or blocked.| **Cardholder:** Contact the issuer to complete the transaction |
| **Pick up the card, special conditions** | The issuer wants to check the transaction.| **Cardholder:** Contact the issuer to complete the transaction |
| **Cardholder not enrolled in service** | Cardholder: Please contact your bank Merchant: card not enrolled in 3DS service. Not possible to authenticate |
-| **Transaction timed out at the ACS** | Merchant: Transaction expired in authentication stage |
+| **Transaction timed out (ACS)** | Merchant: Transaction expired in authentication stage |
| **Invalid merchant or service provider** | The merchant or service provider is restricted by the issuer.| **Cardholder:** Contact the issuer. |
| **Invalid transaction** | The transaction is invalid. |**Cardholder:** Check the payment method type and payment details **Merchant:** Do not reattempt. The issuer will never approve.|
| **Invalid amount** | The payment amount exceeds issuer policies or regulatory limits.| **Cardholder:** Contact your bank. |
From dae6c2dd6a1562910c470466be166cf1226215d2 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 24 Jan 2024 11:03:06 +0100
Subject: [PATCH 008/319] DOCS-4135 Add 2 authorization error codes
---
content/payment-methods/card-payment-errors.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md
index fccd749ba..2bb9007dd 100644
--- a/content/payment-methods/card-payment-errors.md
+++ b/content/payment-methods/card-payment-errors.md
@@ -58,8 +58,8 @@ If the issue can't be resolved, ask the cardholder for another card number or to
| **Invalid merchant or service provider** | The issuer restricts the merchant or service provider.| **Cardholder:** Contact the issuer.|
| **Pick up the card** | The transaction was declined because the cardholder's account was closed or blocked.| **Cardholder:** Contact the issuer to complete the transaction |
| **Pick up the card, special conditions** | The issuer wants to check the transaction.| **Cardholder:** Contact the issuer to complete the transaction |
-| **Cardholder not enrolled in service** | Cardholder: Please contact your bank Merchant: card not enrolled in 3DS service. Not possible to authenticate |
-| **Transaction timed out (ACS)** | Merchant: Transaction expired in authentication stage |
+| **Cardholder not enrolled in service** | The cardholder is not enrolled in 3DS service. | **Cardholder**: Contact the issuer. **Merchant**: card not enrolled in 3DS service. Not possible to authenticate |
+| **Transaction timed out (ACS)** | The transaction expired in the authentication stage | **Cardholder**: In next transaction, complete authentication |
| **Invalid merchant or service provider** | The merchant or service provider is restricted by the issuer.| **Cardholder:** Contact the issuer. |
| **Invalid transaction** | The transaction is invalid. |**Cardholder:** Check the payment method type and payment details **Merchant:** Do not reattempt. The issuer will never approve.|
| **Invalid amount** | The payment amount exceeds issuer policies or regulatory limits.| **Cardholder:** Contact your bank. |
From 16913fb5dcdee2735240ee39a3c955cf3b9121ef Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 24 Jan 2024 11:14:43 +0100
Subject: [PATCH 009/319] DOCS-4052 Hide Exact
---
content/accounting/accounting-integrations.md | 203 ------------------
1 file changed, 203 deletions(-)
diff --git a/content/accounting/accounting-integrations.md b/content/accounting/accounting-integrations.md
index 31c93d4bc..70b17ba81 100644
--- a/content/accounting/accounting-integrations.md
+++ b/content/accounting/accounting-integrations.md
@@ -91,210 +91,7 @@ To connect your MultiSafepay account to e-Boekhouden, see PSP betalingen –
-# Exact
-Exact Globe and Online can integrate with MultiSafepay directly to export relevant transaction data via their API, or you can manually export MultiSafepay [accountant exports](/docs/reports#accountant-export) (MT940 format).
-
-### Automated exports
-
-
-How to automate exports with Exact Online
-
-
-To grant MultiSafepay permission to access your Exact Online account:
-
-1. Sign in to your MultiSafepay dashboard .
-2. Go to **Reports** > **Accounting integrations** > **Exact Online** > **Configure**.
- You are redirected to Exact Online.
-3. Enter your email address and Exact Online password, and then click **Next**.
- A list of required permissions is displayed.
-4. Grant MultiSafepay access to Exact Online only or Exact Online and future companies.
-5. Select the checkbox to accept the Exact Online terms and conditions.
-6. Click **Allow**.
- You are redirected to your MultiSafepay dashboard.
- ✅ You have successfully granted MultiSafepay access permissions.
-
-❗️If you delete or modify information in Exact Online, exports will fail. If you encounter an error, email [support@multisafepay.com](mailto:support@multisafepay.com)
-
-
-
-
-How to link ledger accounts
-
-
-1. In the **Exact Online code** field:
-
-- Click the **dropdown** icon and then select the relevant code, **or**
-- Enter the code or name to search for the relevant code.
-
-2. Once all accounts are linked, click **Submit**.
-
-***
-
-To edit the existing ledger account:
-
-1. Click the **Pencil** icon next to the **Exact Online code** field.
-2. In the **Exact Online code** field, click the **dropdown** icon and then select the relevant code.
-3. Click **Submit**.
-
-***
-
-To create your own ledger account:
-
-1. Click **+ ** next to the **Exact Online code** field.
-2. In the **Exact Online code** field, enter your **Code** and **Description**.
-3. Click ✔.
-
-***
-
-
-
-
-How to schedule automated exports
-
-
-1. In your dashboard, under **Schedule export**, toggle the **Enabled/Disabled** radio button to **Enabled**.
-2. Click **Save**.
- ✅ The scheduled export appears below.
-
-- Exports start the day **after** you set the schedule.
-- You can only have 1 scheduled export queued at a time.
-- You can view the status of previous exports under **Export history**. If exports are failing, email [support@multisafepay.com](mailto:support@multisafepay.com)
-- Export data for a specified time period **once only** to avoid duplicate data in Exact.
-
-***
-
-To enable/disable exports:
-
-In your dashboard, under **Schedule export**, toggle the **Enabled/Disabled** radio button as needed.
-
-❗️You must add the data for periods when exports are disabled to Exact Online **manually**, otherwise it is lost.
-
-
-
-### Financial year
-
-
-How to add a new financial year
-
-
-1. Sign in to your Exact Online account.
-2. On the navigation menu > click **sample company Exact online** > **Master Data**.
-3. Under **Financial** > select **Period-data table**.
-4. Under **Financial years** page > click on **New** > **Create** Create new financial year pop-up screen appears.
-5. Click **Close**.
-
-❗️You must add the financial year to Exact Online every year. Otherwise, your exports will fail.
-
-
-
-### Manual imports
-
-
-Prerequisites
-
-
-- Exact Basic / Standard package does **not** support the MT940 import function. You need at least Exact Advanced.
-- Lightspeed users must request Lightspeed to make an adjustment to make sure order numbers appear in the correct fields in Exact Online to successfully match the MultiSafepay MT940.
-- Exact Globe and Exact Online both import and match MultiSafepay MT940 reports provided that:
- - Your accounting package can process MT940 files.
- - The order numbers in the MT940 files also appear in the correct invoice fields in your accounting platform.
- - The customer's name and order amounts that appear in the exported MT940 files match your accounting platform.
-
-***
-
-
-
-
-How to import manually
-
-
-1. Provide Exact with an additional international bank account number (IBAN). This can be a dummy (placeholder) IBAN.
-
- - Go to IBAN Calculator – Calculate an IBAN .
- - From the **Country** list, select **The Netherlands**.
- - Under **Bank Code**, enter a bank, e.g. ING Group.
- - In the **Account number** field, enter any 7 digits.
- - Click **Calculate IBAN**.
- A dummy IBAN and BIC code are generated.
-
-2. Submit the IBAN to the relevant platform:
-
- **Exact Globe**
-
- - Sign in and go to **Bank accounts**.
- - Click **New**.
- - Under **Type**, select **Payment service provider**.
- - Enter the dummy IBAN and select the same bank as before, e.g. ING Group.
- - Click **Save**.
- You can now register all transactions linked to this IBAN.
-
- **Exact Online**
-
- - Sign in and go to **Financial** > **Banking & Cash** > **Bank accounts** > **Overview**.
- - Click **New**.
- - Enter your dummy IBAN, and then click **Save**.
- You can now register all transactions linked to this IBAN.
-
-3. Export a MT940 accountant export from your MultiSafepay dashboard.
-
- - Sign in to your MultiSafepay dashboard .
- - Go to **Reports** > **Accountant export**:
- - From the **Date selection** list, select a date range.
- - From the **Currency** list, select the currency.
- - From the **Report type** list, select **MT940**.
- - For the **Group costs in 1 record** toggle, set to:
- - **Yes:** Show only the total of all MultiSafepay transaction fees for the selected timeframe.
- - **No:** List each MultiSafepay fee below the matching transaction.
- - Click **Advanced options:**
- - In the **Bank Account / IBAN** field, enter the dummy IBAN.
- - In the **BIC** field, enter the dummy BIC code.
-
-4. Import the MT940 accountant export into Exact Online.
-
- - Sign in to your Exact Online account.
- - Go to **Financial** > **Banking & Cash** > **Statements** > **Import**.
- - Click **Choose File**, and then select the MT940 file you want to upload.
- - Click **Import**.
-
-***
-
-
-
-
-
-### Denovit integration
-
-Denovit automates payment link into Exact invoices.
-
-
-How to set up Denovit
-
-
-1. Sign in to your Denovit account.
-2. Go to your **Dashboard**, and then select the **Paylink** module.
-3. Connect to your Exact account.
-4. Under **PSP settings**, enter your [MultiSafepay API key](/docs/sites#site-id-api-key-and-security-code) and the payment conditions you use in Exact.
-5. Adjust other settings as relevant, e.g. personalize your email template, thank-you page, or notification email to improve customer experience.
-
-For each new invoice in Exact, if you:
-
-- **Email:** The customer receives a second email containing a payment link, in addition to the normal email.
-- **Print and process:** The customer receives an email containing a payment link.
-
-***
-
-To add MultiSafepay [payment links](/docs/payment-links/) into Exact invoices, see Denovit – Payment link module .
-
-
-
-### xCore integration
-
-xCore offers two reconciliation apps that retrieve all payment details from MultiSafepay for the day and automatically match each payment with its corresponding open item in Exact.
-
-For more information, see xCore – Afletteren 2.0 Exact Online with MultiSafepay .
-
-***
# King Business Software
From 0df35e8ac094ccd3c8addf5033cdaa433450b3d0 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 24 Jan 2024 11:25:55 +0100
Subject: [PATCH 010/319] DOCS-4052 Hide Exact
---
content/accounting/accounting-integrations.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/content/accounting/accounting-integrations.md b/content/accounting/accounting-integrations.md
index 70b17ba81..b4661d506 100644
--- a/content/accounting/accounting-integrations.md
+++ b/content/accounting/accounting-integrations.md
@@ -88,10 +88,6 @@ To connect your MultiSafepay account to e-Boekhouden, see PSP betalingen –
-
-
-
# King Business Software
From f74281e997be5d9773be781c800f41a0b59bcd23 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Wed, 24 Jan 2024 12:37:26 +0100
Subject: [PATCH 011/319] DOCS-4151 Correct links Onboarding
---
content/getting-started/onboarding-via-api.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/getting-started/onboarding-via-api.md b/content/getting-started/onboarding-via-api.md
index 3b49c5cac..4b6214d50 100644
--- a/content/getting-started/onboarding-via-api.md
+++ b/content/getting-started/onboarding-via-api.md
@@ -31,7 +31,7 @@ The table below lists our API references for managing an affiliate's account.
[block:html]
{
- "html": "
"
+}
+[/block]
+
+[Top of page](#)
\ No newline at end of file
diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md
old mode 100755
new mode 100644
index 57ad81202..d73e5d3a1
--- a/content/integrations/ccv-shop.md
+++ b/content/integrations/ccv-shop.md
@@ -3,11 +3,38 @@ title: "CCV Shop"
category: 62962dd7e272a6002ebbbbc5
order: 0
hidden: false
-parentDoc: 62a9a54aba9800011a8bda88
+parentDoc: 62a9a54abde254065ee92a5c
slug: 'ccv-shop'
excerpt: "Technical manual for MultiSafepay's free app."
---
-
+
+
+# Changelog
+
+
+Changelog
+
+
+**1.0.0-RC1**
+Release date: Feb. 26th, 2024
+
+### Added
+- Endpoints for CCV Shop app installation: Handshake, Install, Uninstall.
+- Localization for Install view based on `language` query variable (Dutch, English, German and French).
+- Payment Service Provider (PSP) configuration based on MultiSafepay merchant data: API key, selected payment methods.
+- Ability to update payment methods during CCV Shop app installation edit.
+- Scheduled monitoring and updating of the payment methods.
+- Endpoints for CCV Shop transactions creation and updating.
+- Possibility to enable/disable refunds while installing CCV Shop app/editing CCV Shop app installation.
+- Support for CCV Shop webhook events: `invoices.updated.status`, `orders.deleted`, `orders.updated.status`, `orders.updated.trackandtrace`.
+- `invoices.updated.status` webhook event handler to create a MultiSafepay refund after CCV Shop invoice status is changed to `Refunded.
+- `orders.deleted` webhook event handler to create a MultiSafepay refund after CCV Shop order is deleted.
+- `orders.updated.status` webhook event handler to update MultiSafepay order status to `Shipped` after CCV Shop order status is changed to `Sent`.
+- `orders.updated.trackandtrace` webhook event handler to update MultiSafepay order status to `Shipped` and populate track and trace information after CCV Shop order gets updated in **Shipment** section.
+- Created artisan command: `ccv:register-webhooks`.
+- CCV Shop **Order ID** as **Order ID** for MultiSafepay orders, which is used as **Transaction ID** for CCV Shop payments.
+
+
# Prerequisites
@@ -15,15 +42,20 @@ You will need a [MultiSafepay account](/docs/getting-started-guide/).
# Installation and configuration
-✅ **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment.
+1. Sign in to your CCV Shop <>.
+2. Go to **App store** and search for **MultiSafepay** app.
+3. Once found, select the app and click in **Install** button.
+4. Review and accept the permissions required by the app.
+5. Follow the instructions and fill the required fields to configure the app.
+6. Click the **Install** button to complete the installation.
+7. Go to **My web shop** > **Settings** > **Ordering process & stock** > **Payment methods** and confirm your payments are enabled in the section **MultiSafepay Payment Service provider**
-1. Sign in to your CCV Shop <> and install the MultiSafepay app from the App Store.
-2. Go to **Mijn webshop** > **Instellingen** > **Bestelproces & voorraad** > **Betaalmethoden**.
-3. In the **Electronische betalingen** tab, select **MultiSafepay**.
-4. Enter your [account ID, site ID and security code](/docs/sites#site-id-api-key-and-security-code).
-5. If using your MultiSafepay test account, select **Test mode**.
-6. Click **Synchroniseer betaalmethodes met MultiSafepay**, and then click **Save**.
-
+# Configuration
+
+1. Sign in to your CCV Shop <>.
+2. Go to **App store** and search for **MultiSafepay** app.
+3. Once found, select the app and click in **Edit** button.
+4. Modify the settings according your preferences.
___
@@ -35,27 +67,42 @@ ___
Supported payment methods
-- Cards: [All](/docs/card-payments/)
-- Wallets: [PayPal](/docs/paypal/)
-- Banking methods:
- - [Bancontact](/docs/bancontact/)
- - [Bank transfer](/docs/bank-transfer/)
- - [Giropay](/docs/giropay/)
- - [iDEAL](/docs/ideal/)
- - [Sofort](/docs/sofort/)
+The activated payment methods from your MultiSafepay account appear will be registered in CCV Shop as a payment method.
## Refunds
-You can process refunds from your MultiSafepay dashboard, but not in your <>.
+You can process full refunds for all payment methods, from your MultiSafepay dashboard, and from the CCV Shop <>.
+
+
+Refund rules
+
+- **Automatic refunds** needs to be enabled in the configuration of the MultiSafepay app.
+- To process a refund, the invoice status must be **Paid**.
+- The refund amount cannot exceed the original transaction amount.
+- The refund amount cannot exceed the available funds in your MultiSafepay account.
+
+
+
+
+How to process refunds
+
+To process backend refunds:
+
+1. Sign in to your CCV Shop <>.
+2. Go to **My orders** > **Order management**.
+3. Select the order, and click on the **Invoices** tab.
+4. Change the **Invoice status** from **Paid** to **Refunded**.
+5. A refund request will be processed in MultiSafepay.
+
---
[block:html]
{
- "html": "
\n
\n 💬\n
Support
\n \n
\n
For technical queries about the app, email CCV Shop at support@ccvshop.nl
"
}
[/block]
From 541be8b8db918c08865447ccb55d61e157b255d1 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Wed, 6 Mar 2024 17:59:03 +0100
Subject: [PATCH 020/319] DOCS-4176: Fix refund rules section in CCV Shop page
(#2933)
---
content/integrations/ccv-shop.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md
index 75b01b1f5..9232e90d8 100644
--- a/content/integrations/ccv-shop.md
+++ b/content/integrations/ccv-shop.md
@@ -79,6 +79,7 @@ You can process full refunds for all payment methods, from your MultiSafepay das
Refund rules
To process backend refunds:
+
- In the configuration of the MultiSafepay app, **Automatic refunds** needs to be enabled.
- To process a refund, the invoice status must be **Paid**.
- The refund amount cannot exceed the original transaction amount.
From bef37c0b02eb8d12e9875b96467460d5d7a620e1 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Thu, 7 Mar 2024 15:24:28 +0100
Subject: [PATCH 021/319] DOCS-4177: Release of 5.13.0 for PrestaShop 1.7
(#2934)
---
content/integrations/prestashop-1-7.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop-1-7.md
index fc028b8ba..70a9e0dcd 100644
--- a/content/integrations/prestashop-1-7.md
+++ b/content/integrations/prestashop-1-7.md
@@ -12,7 +12,7 @@ slug: 'prestashop-1-7'
-Download
-
Source codeChangelog
@@ -24,7 +22,7 @@ slug: 'shopware-6'
- [MultiSafepay account](/docs/getting-started-guide/)
- Shopware 6.4.11.x or higher, and 6.5.x.x
-- Tested on Shopware 6.5.0.0, 6.4.20.2 and PHP8.1
+- Tested on Shopware 6.5.8.7, 6.4.20.2 and PHP 8.1
## Installation and configuration
@@ -152,20 +150,19 @@ For <> orders, after shipment, you must change the order status f
If you change the <> to **Delivered** in your backend, the updated status is passed to your MultiSafepay dashboard automatically.
-### Updates
-
-You can update the plugin in your backend and the CMS marketplace, or via using SFTP.
-
-
-How to update in your backend
-
+## Updates
✅ **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment.
-1. Download the plugin again above.
-2. Follow the Installation and configuration instructions from step 3.
+### Marketplace update
+Following the steps described in the installation process from Shopware 6 marketplace.
-
+### Composer update
+By executing the following command within the root directory of Shopware 6:
+
+```
+composer update multisafepay/shopware6
+```
---
@@ -175,4 +172,4 @@ You can update the plugin in your backend and the CMS marketplace, or via using
}
[/block]
-[Top of page](#)
\ No newline at end of file
+[Top of page](#)
From 6fd8d18c7cb8be16b18a353f1dbf6e8464f8a292 Mon Sep 17 00:00:00 2001
From: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
Date: Mon, 22 Apr 2024 16:05:17 +0200
Subject: [PATCH 041/319] DOCS-4221 Component
---
content/checkout/multiple.md | 622 +++++++++---------
.../card-payment-pricing-models.md | 2 +-
2 files changed, 321 insertions(+), 303 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 57e8379a7..252646455 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -7,215 +7,203 @@ slug: 'payment-component-multiple'
parentDoc: 62a848399bb3eb004023f291
---
+
This technical manual is for integrating a payment component using multiple payment methods.
-
+
-
-# 1. Add the HTML elements
-
+
+# 1\. Add the HTML elements
+
1. Add the component's CSS to the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
2. Add the component's script to the bottom of the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
3. Add the DOM element for the component's UI in the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
## Choose your payment button
-
+
Decide if you want to:
-
+
- Generate a button with the component (see [Step 2](#2-initialize-the-component) below). **Recommended.**
- Use an existing button, e.g. if your checkout already includes one.
- Create your own button:
-
- ```html
-
- ```
-
-# 2. Initialize the component
-
+
+ ```html
+
+ ```
+
+# 2\. Initialize the component
+
## Generate an API token
+
Payment components require a MultiSafepay API token. See API reference – [Generate an API token](/reference/generateapitoken/).
-
-✅ **Tip!** To keep your API key private, request the token from your own server.
-
+
+✅ **Tip!** To keep your API key private, request the token from your own server.
+
## Construct the component object
-
+
1. Initialize an `orderData` object containing information about the customer's <> collected during the checkout process:
- ```javascript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- payment_options: {
- settings: {
- connect: {
- group_cards: true
- }
- }
- },
- };
- ```
-
-
- Properties
-
-
- | Key | Required | Value |
- |---|---|
- | amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
- | currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
- | customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
- | customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
- | customer.reference | Yes, for recurring payments | Your unique customer reference. |
- | payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.|
- | recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
- | template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
-
-
-
-
-
-
- How to process recurring payments
-
-
- [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
-
- Upon subsequent payments, customers can select their stored payment details and pay with a single click.
-
- To process recurring payments in your payment component:
-
- - Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
-
- ```JavaScript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- template : {
- settings: {
- embed_mode: true
- }
- }
- };
-
- const recurringData = {
- "model": "cardOnFile",
- "tokens": [
- {
- "token": "AvqeOjgdm8A",
- "code": "IDEAL",
- "display": "xxxxxxxxxNL81PSTB0000012345",
- "bin": null,
- "name_holder": "Schilder",
- "expiry_date": "",
- "expired": 0,
- "last4": null,
- "model": "cardOnFile"
- },
- {
- "token": "BcEWsknWsYg",
- "code": "MASTERCARD",
- "display": "Card xxxx xxxx xxxx 4444",
- "bin": 555555,
- "name_holder": "Holder",
- "expiry_date": 2412,
- "expired": 0,
- "last4": 4444,
- "model": "cardOnFile"
- }]};
- ```
-
- > ✅ Success
- >
- > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
-
- Recurring payments are supported for all card payments.
-
- 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
-
- To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email
-
-
-
- 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
-
+
+ ```javascript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ payment_options: {
+ settings: {
+ connect: {
+ group_cards: true
+ qr: {
+ enabled: true,
+ autoload: false
+ }
+ }
+ },
+ };
+ ```
+
+
+Properties
+
+
+ [block:parameters]{"data":{"h-0":"Key","h-1":"Required","h-2":"Value","0-0":"amount","0-1":"Yes","0-2":"The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000`","1-0":"currency","1-1":"Yes","1-2":"The currency of the order. Format: ISO-4217 , e.g. `EUR`","2-0":"customer.country","2-1":"No","2-2":"The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`","3-0":"customer.locale","3-1":"No","3-2":"The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`","4-0":"customer.reference","4-1":"Yes, for recurring payments","4-2":"Your unique customer reference. \n(\\*currently not supported for QR payments.)","5-0":"payment_options.settings.connect.group_cards","5-1":"No","5-2":"Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.","6-0":"payment_options.settings.connect.qr","6-1":"No","6-2":"Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`","7-0":"recurring.model","7-1":"Yes, for recurring payments","7-2":"The [recurring model](/docs/recurring-payments/).","8-0":"template.settings.embed_mode","8-1":"No","8-2":"A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean"},"cols":3,"rows":9,"align":["left","left","left"]}[/block]
+
+
+
+
+
+
+How to process recurring payments
+
+
+ [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+
+ Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+ To process recurring payments in your payment component:
+
+ - Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+
+ ```JavaScript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template : {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+ const recurringData = {
+ "model": "cardOnFile",
+ "tokens": [
+ {
+ "token": "AvqeOjgdm8A",
+ "code": "IDEAL",
+ "display": "xxxxxxxxxNL81PSTB0000012345",
+ "bin": null,
+ "name_holder": "Schilder",
+ "expiry_date": "",
+ "expired": 0,
+ "last4": null,
+ "model": "cardOnFile"
+ },
+ {
+ "token": "BcEWsknWsYg",
+ "code": "MASTERCARD",
+ "display": "Card xxxx xxxx xxxx 4444",
+ "bin": 555555,
+ "name_holder": "Holder",
+ "expiry_date": 2412,
+ "expired": 0,
+ "last4": 4444,
+ "model": "cardOnFile"
+ }]};
+ ```
+
+ > ✅ Success
+>
+> Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+ Recurring payments are supported for all card payments.
+
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+
+
+ 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
+
2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token:
-
- ```javascript
- PaymentComponent = new MultiSafepay({
- env: 'test',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
+
+ ```javascript
+ PaymentComponent = new MultiSafepay({
+ env: 'test',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
## Initialize the component
-
+
Initialize the component using:
-
+
Payment component button
-
+
```javascript
PaymentComponent.init('dropin', {
- container : '#MultiSafepayPayment',
- onSelect : state => {
- console.log('onSelect', state);
- },
- onError : state => {
+ container: '#MSPPayment',
+ onGetQR: function (state) {
+ console.log('onGetQR', state);
+ },
+ onError: function (state) {
console.log('onError', state);
},
- onLoad : state => {
- console.log('onLoad', state);
+ onEvent: function (state) {
+ console.log('onEvent', state);
},
- onSubmit : state => {
- if(PaymentComponent.hasErrors()) {
- let errors = PaymentComponent.getErrors();
- console.log(errors);
- return;
- }
-
- // Send state.paymentData to your server (createOrder)
- // Create an order from your server
- // Return the response from your server to the client-side
- // With the response, redirect the customer or log an error
-
- createOrder(PaymentComponent.getPaymentData()).then(response => {
- console.log(response);
- if(response.success) {
- PaymentComponent.init('redirection', {
- order: response.data
- });
- }
- });
+ onSubmit: function (state) {
+ console.log('onSubmit', state);
+ },
+ onValidation: function (state) {
+ console.log('onValidation', state);
+ },
+ onSelect: function (state) {
+ console.log('onSelect', state);
+ },
+ onLoad: function (state) {
+ console.log('onLoad', state);
}
});
```
-
+
-
+
Own or existing button
-
+
```javascript
PaymentComponent.init('dropin', {
container : '#MultiSafepayPayment',
@@ -229,55 +217,94 @@ PaymentComponent.init('dropin', {
console.log('onLoad', state);
}
});
-```
+```
+
-
-In the method call, create event handlers for the following events:
-
+
+In the method call, create event handlers for the following events:
+
Events
-
-| Event | Event handler |
-|---|---|
-|`onError`| Occurs when there is an error in the payment component. |
-|`onLoad`| Occurs when the payment component UI is rendered. |
-|`onSelect`| Occurs when the customer selects an <> with iDEAL. |
-|`onSubmit`| Occurs when the customer clicks the payment button (when using the button generated by the component). |
-|`onValidation`| Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
-
+
+[block:parameters]
+{
+ "data": {
+ "h-0": "Event",
+ "h-1": "Event handler",
+ "0-0": "`onError`",
+ "0-1": "Occurs when there is an error in the payment component.",
+ "1-0": "`onGetQR`",
+ "1-1": "Occurs when the QR is rendered in the payment component. \n**Example**: \n \n onGetQR: e => { \n createOrder(e.orderData).then(response => { \n PaymentComponent.setQR({ \n order: response.data \n }); \n }); \n}, \n\\`\\`\\` \nAfter creating the order, you invoke getQR.",
+ "2-0": "`onLoad`",
+ "2-1": "Occurs when the payment component UI is rendered.",
+ "3-0": "`onSelect`",
+ "3-1": "Occurs when the customer selects an <> with iDEAL.",
+ "4-0": "`onSubmit`",
+ "4-1": "Occurs when the customer clicks the payment button (when using the button generated by the component).",
+ "5-0": "`onValidation`",
+ "5-1": "Occurs when form validation changes. Can be used to disable the payment button until all fields are validated."
+ },
+ "cols": 2,
+ "rows": 6,
+ "align": [
+ null,
+ null
+ ]
+}
+[/block]
+
+
-
+
The `PaymentComponent` has the following methods:
-
+
Methods
-
-| Method | Description |
-|---|---|
-|`getErrors`| Returns error messages or codes. |
-|`hasErrors`| Returns a boolean value about whether errors were registered. |
-|`getOrderData`| Returns an object containing a `payment_data` object and the full order configuration. |
-|`getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.|
-
+
+[block:parameters]
+{
+ "data": {
+ "h-0": "Method",
+ "h-1": "Description",
+ "0-0": "`getErrors`",
+ "0-1": "Returns error messages or codes.",
+ "1-0": "`hasErrors`",
+ "1-1": "Returns a boolean value about whether errors were registered.",
+ "2-0": "`getOrderData`",
+ "2-1": "Returns an object containing a `payment_data` object and the full order configuration.",
+ "3-0": "`getPaymentData`",
+ "3-1": "Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.",
+ "4-0": "`setQR ()`",
+ "4-1": "Returns a boolean to set up the QR code. Requires argument `orderData`. \nIf `orderData` is not sent, the payment will not be associated to the order."
+ },
+ "cols": 2,
+ "rows": 5,
+ "align": [
+ null,
+ null
+ ]
+}
+[/block]
+
+
-
-# 3. Create an order
-
+
+# 3\. Create an order
+
## Handle the interaction
-
-✅ **Tip!** This step only applies if using your own or an existing payment button.
-
+
+✅ **Tip!** This step only applies if using your own or an existing payment button.
+
1. Assign the button element to a variable:
-
- ```javascript
- const paymentButton = document.querySelector('#payment-button');
- ```
-
-
+
+ ```javascript
+ const paymentButton = document.querySelector('#payment-button');
+ ```
+
The `payment_data` includes the following parameters:
-
+
```JSON
{
"payment_data": {
@@ -286,115 +313,106 @@ The `payment_data` includes the following parameters:
"tokenize": true
}};
```
-
+
- Parameters
-
-
-| Key | Required | Description|
-| ---------- | :------- | ------|
+Parameters
+
+
+| Key | Required | Description |
+| ---------- | :------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `gateway` | Yes | The unique `gateway_id` to redirect the customer to the specific payment method. |
| `payload` | Yes | Information required to process the payment. **Note:** Do not edit or modify the `payload` or otherwise the payment fails. |
| `tokenize` | Optional | For [recurring payments](/docs/recurring-payments). If a customer selects to either save their cardholder data for future visits or use an existing token, a`payment_data.tokenize` parameter is added. |
-
-
-
+
**Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data.
-
+
-
+
2. Create an event handler for the payment button:
-
- - When the customer clicks the payment button, call the component's `getPaymentData()` method.
- - Send the response to your server and [create an order](#create-an-order).
- - Return the reponse from your server to the client-side to redirect the customer.
-
-
+
+ - When the customer clicks the payment button, call the component's `getPaymentData()` method.
+ - Send the response to your server and [create an order](#create-an-order).
+ - Return the reponse from your server to the client-side to redirect the customer.
+
+
### Redirect the customer
-
+
+You need to fetch the property payment_url, which will then - depending on the result - redirect the customer to the correct page. This may be for 3ds required cards towards the authentication step, or for frictionless / not required 3ds, towards the success page.
+The handling of the payment_url lies on your side.
+
The component's `redirection` handler redirects the customer to the relevant page:
-
+
- If customer actions are required to complete the payment (e.g. by completing 3D Secure or iDEAL issuer authentication), the customer is redirected to the relevant page. If successful, the customer is then redirected to the `redirect_url`, i.e. the "success page".
- If no customer action is required to complete the payment, the customer is redirected to the `redirect_url`, i.e. the "success page".
- If the customer chooses to pay by bank transfer, the component displays the banking details needed for customers to complete payment.
-- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
-
+- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
+
### Avoid duplicate orders
-
-When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
-
+
+When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
+
To avoid duplicate orders, disable the button until you have attempted to create an order.
-
+
Then, check `response.success`:
-
+
- If `true`, don't re-enable the button, and proceed with the redirect.
-- If `false`, re-enable the button for the customer to try again.
-
- ``` js
- paymentButton.addEventListener('click', e => {
- paymentButton.addAttribute('disabled');
- if (PaymentComponent.hasErrors()) {
- let errors = PaymentComponent.getErrors();
- console.log(errors);
- return false;
- }
- createOrder(PaymentComponent.getPaymentData()).then(response => {
- if(!response || !response.success) {
- paymentButton.disabled = false;
- console.log(response);
- } else {
- PaymentComponent.init('redirection', {
- order: response.data
- });
- }
- });
- });
- ```
-
+- If `false`, re-enable the button for the customer to try again.
+
+ ```js
+ paymentButton.addEventListener('click', e => {
+ paymentButton.addAttribute('disabled');
+ if (PaymentComponent.hasErrors()) {
+ let errors = PaymentComponent.getErrors();
+ console.log(errors);
+ return false;
+ }
+ createOrder(PaymentComponent.getPaymentData()).then(response => {
+ if(!response || !response.success) {
+ paymentButton.disabled = false;
+ console.log(response);
+ } else {
+ PaymentComponent.init('redirection', {
+ order: response.data
+ });
+ }
+ });
+ });
+ ```
+
## Create an order
-
+
Create an <> from your server, appending the `payment_data` collected from the payment component UI to the order data.
-
+
See API reference – [Create order](/reference/createorder/) > Payment component.
-
-# 4. Go live
-
-To test the payment methods, see Testing payment methods - [(/docs/testing#test-payment-details).
-
+
+# 4\. Go live
+
+To test the payment methods, see Testing payment methods - \[(/docs/testing#test-payment-details).
+
When you're ready to process real payments, make the following changes:
-
+
1. In [Step 1: Add the elements](#1-add-the-elements), replace the test JavaScript library with the live JavaScript library:
- ``` html
-
- ```
-
- Next, replace the test CSS file with the live CSS file:
- ``` html
-
- ```
-
+
+ ```html
+
+ ```
+
+ Next, replace the test CSS file with the live CSS file:
+
+ ```html
+
+ ```
+
2. In [Step 2: Construct the component object](#2-construct-the-component-object), change the environment from `test` to `live`:
- ``` js
- PaymentComponent = new MultiSafepay({
- env: 'live',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
+ ```js
+ PaymentComponent = new MultiSafepay({
+ env: 'live',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
3. In [Step 3: Create an order](#3-create-an-order), change the test endpoint to the **live** endpoint:
- ```
- https://api.multisafepay.com/v1/json/orders
- ```
-
-
-
----
-
-[block:html]
-{
- "html": "
+
# 1\. Add the HTML elements
From 4e5af19d79d48e3c21f2deb15d152711055cbaf1 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 18:32:06 +0200
Subject: [PATCH 046/319] DOCS-4221: Docs Component (#2956)
---
content/checkout/multiple.md | 44 +++++++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 43ec189bc..7e7697f6d 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -85,7 +85,49 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
Properties
- [block:parameters]{"data":{"h-0":"Key","h-1":"Required","h-2":"Value","0-0":"amount","0-1":"Yes","0-2":"The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000`","1-0":"currency","1-1":"Yes","1-2":"The currency of the order. Format: ISO-4217 , e.g. `EUR`","2-0":"customer.country","2-1":"No","2-2":"The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`","3-0":"customer.locale","3-1":"No","3-2":"The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`","4-0":"customer.reference","4-1":"Yes, for recurring payments","4-2":"Your unique customer reference. \n(\\*currently not supported for QR payments.)","5-0":"payment_options.settings.connect.group_cards","5-1":"No","5-2":"Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.","6-0":"payment_options.settings.connect.qr","6-1":"No","6-2":"Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`","7-0":"recurring.model","7-1":"Yes, for recurring payments","7-2":"The [recurring model](/docs/recurring-payments/).","8-0":"template.settings.embed_mode","8-1":"No","8-2":"A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean"},"cols":3,"rows":9,"align":["left","left","left"]}[/block]
+[block:parameters]
+{
+ "data": {
+ "h-0": "Key",
+ "h-1": "Required",
+ "h-2": "Value",
+ "0-0": "amount",
+ "0-1": "Yes",
+ "0-2": "The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000`",
+ "1-0": "currency",
+ "1-1": "Yes",
+ "1-2": "The currency of the order. Format: ISO-4217 , e.g. `EUR`",
+ "2-0": "customer.country",
+ "2-1": "No",
+ "2-2": "The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`",
+ "3-0": "customer.locale",
+ "3-1": "No",
+ "3-2": "The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`",
+ "4-0": "customer.reference",
+ "4-1": "Yes, for recurring payments",
+ "4-2": "Your unique customer reference. \n(\\*currently not supported for QR payments.)",
+ "5-0": "payment_options.settings.connect.group_cards",
+ "5-1": "No",
+ "5-2": "Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.",
+ "6-0": "payment_options.settings.connect.qr",
+ "6-1": "No",
+ "6-2": "Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`",
+ "7-0": "recurring.model",
+ "7-1": "Yes, for recurring payments",
+ "7-2": "The [recurring model](/docs/recurring-payments/).",
+ "8-0": "template.settings.embed_mode",
+ "8-1": "No",
+ "8-2": "A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean"
+ },
+ "cols": 3,
+ "rows": 9,
+ "align": [
+ "left",
+ "left",
+ "left"
+ ]
+}
+[/block]
From 23dfe874147302bb224c6c65d8f3b9912819c19e Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 18:44:14 +0200
Subject: [PATCH 047/319] DOCS-4221: Component (#2957)
---
content/checkout/multiple.md | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 7e7697f6d..567517971 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -71,10 +71,11 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
payment_options: {
settings: {
connect: {
- group_cards: true
+ group_cards: true,
qr: {
enabled: true,
autoload: false
+ }
}
}
},
@@ -273,14 +274,14 @@ PaymentComponent.init('dropin', {
```javascript
PaymentComponent.init('dropin', {
- container : '#MultiSafepayPayment',
- onSelect : state => {
+ container: '#MultiSafepayPayment',
+ onSelect: state => {
console.log('onSelect', state);
},
- onError : state => {
+ onError: state => {
console.log('onError', state);
},
- onLoad : state => {
+ onLoad: state => {
console.log('onLoad', state);
}
});
@@ -343,7 +344,7 @@ The `PaymentComponent` has the following methods:
"2-1": "Returns an object containing a `payment_data` object and the full order configuration.",
"3-0": "`getPaymentData`",
"3-1": "Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.",
- "4-0": "`setQR ()`",
+ "4-0": "`setQR()`",
"4-1": "Returns a boolean to set up the QR code. Requires argument `orderData`. \nIf `orderData` is not sent, the payment will not be associated to the order."
},
"cols": 2,
@@ -358,7 +359,7 @@ The `PaymentComponent` has the following methods:
-# 3\. Create an order
+# 3. Create an order
## Handle the interaction
@@ -452,9 +453,9 @@ Create an <> from your server, appending the `payment_data` coll
See API reference – [Create order](/reference/createorder/) > Payment component.
-# 4\. Go live
+# 4. Go live
-To test the payment methods, see Testing payment methods - \[(/docs/testing#test-payment-details).
+To test the payment methods, see [Testing payment methods](/docs/testing#test-payment-details).
When you're ready to process real payments, make the following changes:
From f85acf33d81f0e3876011e7bfaef416c5ffc63d0 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 18:50:44 +0200
Subject: [PATCH 048/319] DOCS-4221: Component (#2958)
---
content/checkout/multiple.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 567517971..36f3a2c54 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -97,13 +97,13 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
"0-2": "The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000`",
"1-0": "currency",
"1-1": "Yes",
- "1-2": "The currency of the order. Format: ISO-4217 , e.g. `EUR`",
+ "1-2": "The currency of the order. Format: ISO-4217 , e.g. `EUR`",
"2-0": "customer.country",
"2-1": "No",
- "2-2": "The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`",
+ "2-2": "The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`",
"3-0": "customer.locale",
"3-1": "No",
- "3-2": "The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`",
+ "3-2": "The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`",
"4-0": "customer.reference",
"4-1": "Yes, for recurring payments",
"4-2": "Your unique customer reference. \n(\\*currently not supported for QR payments.)",
From 12b93982179156f3f9aad86daaf8afe7b8daa460 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 19:03:11 +0200
Subject: [PATCH 049/319] DOCS-4221: Component (#2959)
---
content/checkout/multiple.md | 124 ++++++++---------------------------
1 file changed, 27 insertions(+), 97 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 36f3a2c54..8cc85fc83 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -85,50 +85,17 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
Properties
-
-[block:parameters]
-{
- "data": {
- "h-0": "Key",
- "h-1": "Required",
- "h-2": "Value",
- "0-0": "amount",
- "0-1": "Yes",
- "0-2": "The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000`",
- "1-0": "currency",
- "1-1": "Yes",
- "1-2": "The currency of the order. Format: ISO-4217 , e.g. `EUR`",
- "2-0": "customer.country",
- "2-1": "No",
- "2-2": "The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL`",
- "3-0": "customer.locale",
- "3-1": "No",
- "3-2": "The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`",
- "4-0": "customer.reference",
- "4-1": "Yes, for recurring payments",
- "4-2": "Your unique customer reference. \n(\\*currently not supported for QR payments.)",
- "5-0": "payment_options.settings.connect.group_cards",
- "5-1": "No",
- "5-2": "Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.",
- "6-0": "payment_options.settings.connect.qr",
- "6-1": "No",
- "6-2": "Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`",
- "7-0": "recurring.model",
- "7-1": "Yes, for recurring payments",
- "7-2": "The [recurring model](/docs/recurring-payments/).",
- "8-0": "template.settings.embed_mode",
- "8-1": "No",
- "8-2": "A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean"
- },
- "cols": 3,
- "rows": 9,
- "align": [
- "left",
- "left",
- "left"
- ]
-}
-[/block]
+| Key | Required | Value |
+|----------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
+| currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
+| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
+| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
+| customer.reference | Yes, for recurring payments | Your unique customer reference. \n(\*currently not supported for QR payments.) |
+| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
+| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true` |
+| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
@@ -294,34 +261,14 @@ In the method call, create event handlers for the following events:
Events
-
-[block:parameters]
-{
- "data": {
- "h-0": "Event",
- "h-1": "Event handler",
- "0-0": "`onError`",
- "0-1": "Occurs when there is an error in the payment component.",
- "1-0": "`onGetQR`",
- "1-1": "Occurs when the QR is rendered in the payment component. \n**Example**: \n \n onGetQR: e => { \n createOrder(e.orderData).then(response => { \n PaymentComponent.setQR({ \n order: response.data \n }); \n }); \n}, \n\\`\\`\\` \nAfter creating the order, you invoke getQR.",
- "2-0": "`onLoad`",
- "2-1": "Occurs when the payment component UI is rendered.",
- "3-0": "`onSelect`",
- "3-1": "Occurs when the customer selects an <> with iDEAL.",
- "4-0": "`onSubmit`",
- "4-1": "Occurs when the customer clicks the payment button (when using the button generated by the component).",
- "5-0": "`onValidation`",
- "5-1": "Occurs when form validation changes. Can be used to disable the payment button until all fields are validated."
- },
- "cols": 2,
- "rows": 6,
- "align": [
- null,
- null
- ]
-}
-[/block]
-
+| Event | Event handler |
+|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `onError` | Occurs when there is an error in the payment component. |
+| `onGetQR` | Occurs when the QR is rendered in the payment component. **Example**:
onGetQR: e => { createOrder(e.orderData).then(response => { PaymentComponent.setQR({ order: response.data }); }); }, ``` After creating the order, you invoke getQR. |
+| `onLoad` | Occurs when the payment component UI is rendered. |
+| `onSelect` | Occurs when the customer selects an <> with iDEAL. |
+| `onSubmit` | Occurs when the customer clicks the payment button (when using the button generated by the component). |
+| `onValidation` | Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
@@ -330,31 +277,14 @@ The `PaymentComponent` has the following methods:
Methods
-
-[block:parameters]
-{
- "data": {
- "h-0": "Method",
- "h-1": "Description",
- "0-0": "`getErrors`",
- "0-1": "Returns error messages or codes.",
- "1-0": "`hasErrors`",
- "1-1": "Returns a boolean value about whether errors were registered.",
- "2-0": "`getOrderData`",
- "2-1": "Returns an object containing a `payment_data` object and the full order configuration.",
- "3-0": "`getPaymentData`",
- "3-1": "Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.",
- "4-0": "`setQR()`",
- "4-1": "Returns a boolean to set up the QR code. Requires argument `orderData`. \nIf `orderData` is not sent, the payment will not be associated to the order."
- },
- "cols": 2,
- "rows": 5,
- "align": [
- null,
- null
- ]
-}
-[/block]
+
+| Method | Description |
+|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `getErrors` | Returns error messages or codes. |
+| `hasErrors` | Returns a boolean value about whether errors were registered. |
+| `getOrderData` | Returns an object containing a `payment_data` object and the full order configuration. |
+| `getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`. |
+| `setQR()` | Returns a boolean to set up the QR code. Requires argument `orderData`. If `orderData` is not sent, the payment will not be associated with the order. |
From 08eb43c7df77e5e66847d4620258dd9ada6e1060 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 19:13:04 +0200
Subject: [PATCH 050/319] DOCS-4221: Component (#2960)
---
content/checkout/multiple.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 8cc85fc83..1ffab58a9 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -4,9 +4,9 @@ category: 62bd999547298d001abc714c
order: 2
hidden: false
slug: 'payment-component-multiple'
-parentDoc: 62a848399bb3eb004023f291
----
-
+parentDoc: 62a848399bb3eb004023f291
+---
+
This technical manual is for integrating a payment component using multiple payment methods.
@@ -19,7 +19,7 @@ This technical manual is for integrating a payment component using multiple paym
-# 1\. Add the HTML elements
+# 1. Add the HTML elements
1. Add the component's CSS to the `` of your checkout page:
```html
@@ -88,9 +88,9 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
| Key | Required | Value |
|----------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
-| currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
-| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
-| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
+| currency | Yes | The currency of the order. Format: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g. `EUR` |
+| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g. `NL` |
+| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: [ISO 639](https://en.wikipedia.org/wiki/ISO_639) Supported languages: `en`, `es`, `fr`, `it`, `nl` |
| customer.reference | Yes, for recurring payments | Your unique customer reference. \n(\*currently not supported for QR payments.) |
| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true` |
From a23fdfb7be8dd649406cd9f57ff437677be8691e Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 23 Apr 2024 19:17:15 +0200
Subject: [PATCH 051/319] DOCS-4221: Component (#2961)
---
content/checkout/multiple.md | 595 +++++++++++++++++------------------
1 file changed, 295 insertions(+), 300 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 1ffab58a9..e59179540 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -4,203 +4,193 @@ category: 62bd999547298d001abc714c
order: 2
hidden: false
slug: 'payment-component-multiple'
-parentDoc: 62a848399bb3eb004023f291
----
+parentDoc: 62a848399bb3eb004023f291
+---
This technical manual is for integrating a payment component using multiple payment methods.
-
-
-
-
-
+
# 1. Add the HTML elements
-
+
1. Add the component's CSS to the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
2. Add the component's script to the bottom of the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
3. Add the DOM element for the component's UI in the `` of your checkout page:
- ```html
-
- ```
-
+ ```html
+
+ ```
+
## Choose your payment button
-
+
Decide if you want to:
-
+
- Generate a button with the component (see [Step 2](#2-initialize-the-component) below). **Recommended.**
- Use an existing button, e.g. if your checkout already includes one.
- Create your own button:
-
- ```html
-
- ```
-
+
+ ```html
+
+ ```
+
# 2. Initialize the component
-
+
## Generate an API token
-
Payment components require a MultiSafepay API token. See API reference – [Generate an API token](/reference/generateapitoken/).
-
-✅ **Tip!** To keep your API key private, request the token from your own server.
-
+
+✅ **Tip!** To keep your API key private, request the token from your own server.
+
## Construct the component object
-
+
1. Initialize an `orderData` object containing information about the customer's <> collected during the checkout process:
-
- ```javascript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- payment_options: {
- settings: {
- connect: {
- group_cards: true,
- qr: {
- enabled: true,
- autoload: false
- }
- }
- }
- },
- };
- ```
-
-
-Properties
-
-| Key | Required | Value |
-|----------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
-| currency | Yes | The currency of the order. Format: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g. `EUR` |
-| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g. `NL` |
-| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: [ISO 639](https://en.wikipedia.org/wiki/ISO_639) Supported languages: `en`, `es`, `fr`, `it`, `nl` |
-| customer.reference | Yes, for recurring payments | Your unique customer reference. \n(\*currently not supported for QR payments.) |
-| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
-| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true` |
-| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
-| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
-
-
-
-
-
-
-How to process recurring payments
-
-
- [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
-
- Upon subsequent payments, customers can select their stored payment details and pay with a single click.
-
- To process recurring payments in your payment component:
-
- - Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
-
-
- ```JavaScript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- template : {
- settings: {
- embed_mode: true
- }
- }
- };
- const recurringData = {
- "model": "cardOnFile",
- "tokens": [
- {
- "token": "AvqeOjgdm8A",
- "code": "IDEAL",
- "display": "xxxxxxxxxNL81PSTB0000012345",
- "bin": null,
- "name_holder": "Schilder",
- "expiry_date": "",
- "expired": 0,
- "last4": null,
- "model": "cardOnFile"
- },
- {
- "token": "BcEWsknWsYg",
- "code": "MASTERCARD",
- "display": "Card xxxx xxxx xxxx 4444",
- "bin": 555555,
- "name_holder": "Holder",
- "expiry_date": 2412,
- "expired": 0,
- "last4": 4444,
- "model": "cardOnFile"
- }]};
- ```
-
- > ✅ Success
->
-> Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
-
- Recurring payments are supported for all card payments.
-
- 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
-
- To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
-
-
-
- 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
-
+ ```javascript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ payment_options: {
+ settings: {
+ connect: {
+ group_cards: true
+ qr: {
+ enabled: true,
+ autoload: false
+ }
+ }
+ },
+ };
+ ```
+
+
+ Properties
+
+
+ | Key | Required | Value |
+ |---|---|
+ | amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
+ | currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
+ | customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
+ | customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
+ | customer.reference | Yes, for recurring payments | Your unique customer reference. |
+ | payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.|
+ | payment_options.settings.connect.qr.enabled | Allows QR code to be rendered for supported payment methods like: iDEAL, Bancontact, Wechat. Default: `false`.|
+ | payment_options.settings.connect.qr.autoload| Optional: Allows automatic display of QR code. Default: `true`. |
+ | template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
+
+
+
+
+
+
+ How to process recurring payments
+
+
+ [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+
+ Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+ To process recurring payments in your payment component:
+
+ - Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+ ```JavaScript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template : {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+
+ const recurringData = {
+ "model": "cardOnFile",
+ "tokens": [
+ {
+ "token": "AvqeOjgdm8A",
+ "code": "IDEAL",
+ "display": "xxxxxxxxxNL81PSTB0000012345",
+ "bin": null,
+ "name_holder": "Schilder",
+ "expiry_date": "",
+ "expired": 0,
+ "last4": null,
+ "model": "cardOnFile"
+ },
+ {
+ "token": "BcEWsknWsYg",
+ "code": "MASTERCARD",
+ "display": "Card xxxx xxxx xxxx 4444",
+ "bin": 555555,
+ "name_holder": "Holder",
+ "expiry_date": 2412,
+ "expired": 0,
+ "last4": 4444,
+ "model": "cardOnFile"
+ }]};
+ ```
+
+ > ✅ Success
+ >
+ > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+ Recurring payments are supported for all card payments.
+
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email
+
+
+
+ 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
+
2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token:
-
- ```javascript
- PaymentComponent = new MultiSafepay({
- env: 'test',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
+
+ ```javascript
+ PaymentComponent = new MultiSafepay({
+ env: 'test',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
## Initialize the component
-
+
Initialize the component using:
-
+
Payment component button
-
+
```javascript
PaymentComponent.init('dropin', {
- container: '#MultiSafepayPayment',
- onGetQR: function (state) {
- console.log('onGetQR', state);
- },
- onError: function (state) {
+ container : '#MultiSafepayPayment',
+ onSelect : state => {
+ console.log('onSelect', state);
+ },
+ onError : state => {
console.log('onError', state);
},
- onEvent: function (state) {
- console.log('onEvent', state);
+ onLoad : state => {
+ console.log('onLoad', state);
},
- onSubmit: function (state) {
+ onSubmit : state => {
if(PaymentComponent.hasErrors()) {
let errors = PaymentComponent.getErrors();
console.log(errors);
@@ -217,92 +207,88 @@ PaymentComponent.init('dropin', {
if(response.success) {
PaymentComponent.init('redirection', {
order: response.data
-
+ });
}
});
- },
- onValidation: function (state) {
- console.log('onValidation', state);
- },
- onSelect: function (state) {
- console.log('onSelect', state);
- },
- onLoad: function (state) {
- console.log('onLoad', state);
}
});
```
-
+
-
+
Own or existing button
-
+
```javascript
PaymentComponent.init('dropin', {
- container: '#MultiSafepayPayment',
- onSelect: state => {
+ container : '#MultiSafepayPayment',
+ onSelect : state => {
console.log('onSelect', state);
},
- onError: state => {
+ onError : state => {
console.log('onError', state);
},
- onLoad: state => {
+ onLoad : state => {
console.log('onLoad', state);
}
});
-```
-
+```
-
-In the method call, create event handlers for the following events:
-
+
+In the method call, create event handlers for the following events:
+
Events
-| Event | Event handler |
-|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `onError` | Occurs when there is an error in the payment component. |
-| `onGetQR` | Occurs when the QR is rendered in the payment component. **Example**:
onGetQR: e => { createOrder(e.orderData).then(response => { PaymentComponent.setQR({ order: response.data }); }); }, ``` After creating the order, you invoke getQR. |
-| `onLoad` | Occurs when the payment component UI is rendered. |
-| `onSelect` | Occurs when the customer selects an <> with iDEAL. |
-| `onSubmit` | Occurs when the customer clicks the payment button (when using the button generated by the component). |
-| `onValidation` | Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
-
+
+| Event | Event handler |
+|---|---|
+|`onError`| Occurs when there is an error in the payment component. |
+|`onLoad`| Occurs when the payment component UI is rendered. |
+|`onSelect`| Occurs when the customer selects an <> with iDEAL. |
+|`onSubmit`| Occurs when the customer clicks the payment button (when using the button generated by the component). |
+|`onValidation`| Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
+
-
+
The `PaymentComponent` has the following methods:
-
+
Methods
-| Method | Description |
-|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `getErrors` | Returns error messages or codes. |
-| `hasErrors` | Returns a boolean value about whether errors were registered. |
-| `getOrderData` | Returns an object containing a `payment_data` object and the full order configuration. |
-| `getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`. |
-| `setQR()` | Returns a boolean to set up the QR code. Requires argument `orderData`. If `orderData` is not sent, the payment will not be associated with the order. |
-
-
+| Method | Description |
+|---|---|
+|`getErrors`| Returns error messages or codes. |
+|`hasErrors`| Returns a boolean value about whether errors were registered. |
+|`getOrderData`| Returns an object containing a `payment_data` object and the full order configuration. |
+|`getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.|
+|`onGetQR - |Once autoload or QR button clicked, onGetQr will be triggered. ⚠️ At this point, the webshop needs to create an order with payment_data on server side, including all necessary customer information. The response should be used to initialize the QR component `MSP.setQR({...})`
+ onGetQR: function (state) {
+ console.log('onGetQR', state);
+ createMerchantOrderInServerSide(state.orderData).then(response => {
+ PaymentComponent.setQR({
+ order: response.data |
+|`setQR `| Helper to render the QR code with order information obtained from the result in callback onGetQR.|
+
-
+
# 3. Create an order
-
+
## Handle the interaction
-
-✅ **Tip!** This step only applies if using your own or an existing payment button.
-
+
+✅ **Tip!** This step only applies if using your own or an existing payment button.
+
1. Assign the button element to a variable:
-
- ```javascript
- const paymentButton = document.querySelector('#payment-button');
- ```
-
+
+ ```javascript
+ const paymentButton = document.querySelector('#payment-button');
+ ```
+
+
The `payment_data` includes the following parameters:
-
+
```JSON
{
"payment_data": {
@@ -311,106 +297,115 @@ The `payment_data` includes the following parameters:
"tokenize": true
}};
```
-
+
-Parameters
-
-
-| Key | Required | Description |
-| ---------- | :------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ Parameters
+
+
+| Key | Required | Description|
+| ---------- | :------- | ------|
| `gateway` | Yes | The unique `gateway_id` to redirect the customer to the specific payment method. |
| `payload` | Yes | Information required to process the payment. **Note:** Do not edit or modify the `payload` or otherwise the payment fails. |
| `tokenize` | Optional | For [recurring payments](/docs/recurring-payments). If a customer selects to either save their cardholder data for future visits or use an existing token, a`payment_data.tokenize` parameter is added. |
-
+
+
+
**Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data.
-
+
-
+
2. Create an event handler for the payment button:
-
- - When the customer clicks the payment button, call the component's `getPaymentData()` method.
- - Send the response to your server and [create an order](#create-an-order).
- - Return the reponse from your server to the client-side to redirect the customer.
-
-
+
+ - When the customer clicks the payment button, call the component's `getPaymentData()` method.
+ - Send the response to your server and [create an order](#create-an-order).
+ - Return the reponse from your server to the client-side to redirect the customer.
+
+
### Redirect the customer
-
-You need to fetch the property payment_url, which will then - depending on the result - redirect the customer to the correct page. This may be for 3ds required cards towards the authentication step, or for frictionless / not required 3ds, towards the success page.
-The handling of the payment_url lies on your side.
-
+
The component's `redirection` handler redirects the customer to the relevant page:
-
+
- If customer actions are required to complete the payment (e.g. by completing 3D Secure or iDEAL issuer authentication), the customer is redirected to the relevant page. If successful, the customer is then redirected to the `redirect_url`, i.e. the "success page".
- If no customer action is required to complete the payment, the customer is redirected to the `redirect_url`, i.e. the "success page".
- If the customer chooses to pay by bank transfer, the component displays the banking details needed for customers to complete payment.
-- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
-
+- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
+
### Avoid duplicate orders
-
-When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
-
+
+When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
+
To avoid duplicate orders, disable the button until you have attempted to create an order.
-
+
Then, check `response.success`:
-
+
- If `true`, don't re-enable the button, and proceed with the redirect.
-- If `false`, re-enable the button for the customer to try again.
-
- ```js
- paymentButton.addEventListener('click', e => {
- paymentButton.addAttribute('disabled');
- if (PaymentComponent.hasErrors()) {
- let errors = PaymentComponent.getErrors();
- console.log(errors);
- return false;
- }
- createOrder(PaymentComponent.getPaymentData()).then(response => {
- if(!response || !response.success) {
- paymentButton.disabled = false;
- console.log(response);
- } else {
- PaymentComponent.init('redirection', {
- order: response.data
- });
- }
- });
- });
- ```
-
+- If `false`, re-enable the button for the customer to try again.
+
+ ``` js
+ paymentButton.addEventListener('click', e => {
+ paymentButton.addAttribute('disabled');
+ if (PaymentComponent.hasErrors()) {
+ let errors = PaymentComponent.getErrors();
+ console.log(errors);
+ return false;
+ }
+ createOrder(PaymentComponent.getPaymentData()).then(response => {
+ if(!response || !response.success) {
+ paymentButton.disabled = false;
+ console.log(response);
+ } else {
+ PaymentComponent.init('redirection', {
+ order: response.data
+ });
+ }
+ });
+ });
+ ```
+
## Create an order
-
+
Create an <> from your server, appending the `payment_data` collected from the payment component UI to the order data.
-
+
See API reference – [Create order](/reference/createorder/) > Payment component.
-
+
# 4. Go live
-
-To test the payment methods, see [Testing payment methods](/docs/testing#test-payment-details).
-
+
+To test the payment methods, see Testing payment methods - [(/docs/testing#test-payment-details).
+
When you're ready to process real payments, make the following changes:
-
+
1. In [Step 1: Add the elements](#1-add-the-elements), replace the test JavaScript library with the live JavaScript library:
-
- ```html
-
- ```
-
- Next, replace the test CSS file with the live CSS file:
-
- ```html
-
- ```
-
+ ``` html
+
+ ```
+
+ Next, replace the test CSS file with the live CSS file:
+ ``` html
+
+ ```
+
2. In [Step 2: Construct the component object](#2-construct-the-component-object), change the environment from `test` to `live`:
- ```js
- PaymentComponent = new MultiSafepay({
- env: 'live',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
+ ``` js
+ PaymentComponent = new MultiSafepay({
+ env: 'live',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
3. In [Step 3: Create an order](#3-create-an-order), change the test endpoint to the **live** endpoint:
- ```
-https://api.multisafepay.com/v1/json/orders
- ```
\ No newline at end of file
+ ```
+ https://api.multisafepay.com/v1/json/orders
+ ```
+
+
+
+---
+
+[block:html]
+{
+"html": "
\n"
+}
+[/block]
+
+[Top of page](#)
\ No newline at end of file
From 3b466c5223164b8042e54e3edd5004d40e1e91d9 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Wed, 24 Apr 2024 09:38:33 +0200
Subject: [PATCH 052/319] DOCS-4221: Component (#2962)
---
content/checkout/multiple.md | 405 +----------------------------------
1 file changed, 1 insertion(+), 404 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index e59179540..6085af0ac 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -5,407 +5,4 @@ order: 2
hidden: false
slug: 'payment-component-multiple'
parentDoc: 62a848399bb3eb004023f291
----
-
-This technical manual is for integrating a payment component using multiple payment methods.
-
-
-
-# 1. Add the HTML elements
-
-1. Add the component's CSS to the `` of your checkout page:
- ```html
-
- ```
-
-2. Add the component's script to the bottom of the `` of your checkout page:
- ```html
-
- ```
-
-3. Add the DOM element for the component's UI in the `` of your checkout page:
- ```html
-
- ```
-
-## Choose your payment button
-
-Decide if you want to:
-
-- Generate a button with the component (see [Step 2](#2-initialize-the-component) below). **Recommended.**
-- Use an existing button, e.g. if your checkout already includes one.
-- Create your own button:
-
- ```html
-
- ```
-
-# 2. Initialize the component
-
-## Generate an API token
-Payment components require a MultiSafepay API token. See API reference – [Generate an API token](/reference/generateapitoken/).
-
-✅ **Tip!** To keep your API key private, request the token from your own server.
-
-## Construct the component object
-
-1. Initialize an `orderData` object containing information about the customer's <> collected during the checkout process:
- ```javascript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- payment_options: {
- settings: {
- connect: {
- group_cards: true
- qr: {
- enabled: true,
- autoload: false
- }
- }
- },
- };
- ```
-
-
- Properties
-
-
- | Key | Required | Value |
- |---|---|
- | amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
- | currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
- | customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
- | customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
- | customer.reference | Yes, for recurring payments | Your unique customer reference. |
- | payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`.|
- | payment_options.settings.connect.qr.enabled | Allows QR code to be rendered for supported payment methods like: iDEAL, Bancontact, Wechat. Default: `false`.|
- | payment_options.settings.connect.qr.autoload| Optional: Allows automatic display of QR code. Default: `true`. |
- | template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
-
-
-
-
-
-
- How to process recurring payments
-
-
- [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
-
- Upon subsequent payments, customers can select their stored payment details and pay with a single click.
-
- To process recurring payments in your payment component:
-
- - Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
-
- ```JavaScript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- template : {
- settings: {
- embed_mode: true
- }
- }
- };
-
- const recurringData = {
- "model": "cardOnFile",
- "tokens": [
- {
- "token": "AvqeOjgdm8A",
- "code": "IDEAL",
- "display": "xxxxxxxxxNL81PSTB0000012345",
- "bin": null,
- "name_holder": "Schilder",
- "expiry_date": "",
- "expired": 0,
- "last4": null,
- "model": "cardOnFile"
- },
- {
- "token": "BcEWsknWsYg",
- "code": "MASTERCARD",
- "display": "Card xxxx xxxx xxxx 4444",
- "bin": 555555,
- "name_holder": "Holder",
- "expiry_date": 2412,
- "expired": 0,
- "last4": 4444,
- "model": "cardOnFile"
- }]};
- ```
-
- > ✅ Success
- >
- > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
-
- Recurring payments are supported for all card payments.
-
- 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
-
- To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email
-
-
-
- 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
-
-2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token:
-
- ```javascript
- PaymentComponent = new MultiSafepay({
- env: 'test',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
-## Initialize the component
-
-Initialize the component using:
-
-
-Payment component button
-
-
-```javascript
-PaymentComponent.init('dropin', {
- container : '#MultiSafepayPayment',
- onSelect : state => {
- console.log('onSelect', state);
- },
- onError : state => {
- console.log('onError', state);
- },
- onLoad : state => {
- console.log('onLoad', state);
- },
- onSubmit : state => {
- if(PaymentComponent.hasErrors()) {
- let errors = PaymentComponent.getErrors();
- console.log(errors);
- return;
- }
-
- // Send state.paymentData to your server (createOrder)
- // Create an order from your server
- // Return the response from your server to the client-side
- // With the response, redirect the customer or log an error
-
- createOrder(PaymentComponent.getPaymentData()).then(response => {
- console.log(response);
- if(response.success) {
- PaymentComponent.init('redirection', {
- order: response.data
- });
- }
- });
- }
-});
-```
-
-
-
-
-Own or existing button
-
-
-```javascript
-PaymentComponent.init('dropin', {
- container : '#MultiSafepayPayment',
- onSelect : state => {
- console.log('onSelect', state);
- },
- onError : state => {
- console.log('onError', state);
- },
- onLoad : state => {
- console.log('onLoad', state);
- }
-});
-```
-
-
-In the method call, create event handlers for the following events:
-
-
-Events
-
-
-| Event | Event handler |
-|---|---|
-|`onError`| Occurs when there is an error in the payment component. |
-|`onLoad`| Occurs when the payment component UI is rendered. |
-|`onSelect`| Occurs when the customer selects an <> with iDEAL. |
-|`onSubmit`| Occurs when the customer clicks the payment button (when using the button generated by the component). |
-|`onValidation`| Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
-
-
-
-The `PaymentComponent` has the following methods:
-
-
-Methods
-
-
-| Method | Description |
-|---|---|
-|`getErrors`| Returns error messages or codes. |
-|`hasErrors`| Returns a boolean value about whether errors were registered. |
-|`getOrderData`| Returns an object containing a `payment_data` object and the full order configuration. |
-|`getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`.|
-|`onGetQR - |Once autoload or QR button clicked, onGetQr will be triggered. ⚠️ At this point, the webshop needs to create an order with payment_data on server side, including all necessary customer information. The response should be used to initialize the QR component `MSP.setQR({...})`
- onGetQR: function (state) {
- console.log('onGetQR', state);
- createMerchantOrderInServerSide(state.orderData).then(response => {
- PaymentComponent.setQR({
- order: response.data |
-|`setQR `| Helper to render the QR code with order information obtained from the result in callback onGetQR.|
-
-
-
-# 3. Create an order
-
-## Handle the interaction
-
-✅ **Tip!** This step only applies if using your own or an existing payment button.
-
-1. Assign the button element to a variable:
-
- ```javascript
- const paymentButton = document.querySelector('#payment-button');
- ```
-
-
-The `payment_data` includes the following parameters:
-
-```JSON
- {
- "payment_data": {
- "gateway": "CREDITCARD",
- "payload": "xxxxxxxx",
- "tokenize": true
- }};
-```
-
-
- Parameters
-
-
-| Key | Required | Description|
-| ---------- | :------- | ------|
-| `gateway` | Yes | The unique `gateway_id` to redirect the customer to the specific payment method. |
-| `payload` | Yes | Information required to process the payment. **Note:** Do not edit or modify the `payload` or otherwise the payment fails. |
-| `tokenize` | Optional | For [recurring payments](/docs/recurring-payments). If a customer selects to either save their cardholder data for future visits or use an existing token, a`payment_data.tokenize` parameter is added. |
-
-
-
-**Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data.
-
-
-
-2. Create an event handler for the payment button:
-
- - When the customer clicks the payment button, call the component's `getPaymentData()` method.
- - Send the response to your server and [create an order](#create-an-order).
- - Return the reponse from your server to the client-side to redirect the customer.
-
-
-### Redirect the customer
-
-The component's `redirection` handler redirects the customer to the relevant page:
-
-- If customer actions are required to complete the payment (e.g. by completing 3D Secure or iDEAL issuer authentication), the customer is redirected to the relevant page. If successful, the customer is then redirected to the `redirect_url`, i.e. the "success page".
-- If no customer action is required to complete the payment, the customer is redirected to the `redirect_url`, i.e. the "success page".
-- If the customer chooses to pay by bank transfer, the component displays the banking details needed for customers to complete payment.
-- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
-
-### Avoid duplicate orders
-
-When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
-
-To avoid duplicate orders, disable the button until you have attempted to create an order.
-
-Then, check `response.success`:
-
-- If `true`, don't re-enable the button, and proceed with the redirect.
-- If `false`, re-enable the button for the customer to try again.
-
- ``` js
- paymentButton.addEventListener('click', e => {
- paymentButton.addAttribute('disabled');
- if (PaymentComponent.hasErrors()) {
- let errors = PaymentComponent.getErrors();
- console.log(errors);
- return false;
- }
- createOrder(PaymentComponent.getPaymentData()).then(response => {
- if(!response || !response.success) {
- paymentButton.disabled = false;
- console.log(response);
- } else {
- PaymentComponent.init('redirection', {
- order: response.data
- });
- }
- });
- });
- ```
-
-## Create an order
-
-Create an <> from your server, appending the `payment_data` collected from the payment component UI to the order data.
-
-See API reference – [Create order](/reference/createorder/) > Payment component.
-
-# 4. Go live
-
-To test the payment methods, see Testing payment methods - [(/docs/testing#test-payment-details).
-
-When you're ready to process real payments, make the following changes:
-
-1. In [Step 1: Add the elements](#1-add-the-elements), replace the test JavaScript library with the live JavaScript library:
- ``` html
-
- ```
-
- Next, replace the test CSS file with the live CSS file:
- ``` html
-
- ```
-
-2. In [Step 2: Construct the component object](#2-construct-the-component-object), change the environment from `test` to `live`:
- ``` js
- PaymentComponent = new MultiSafepay({
- env: 'live',
- apiToken: apiToken,
- order: orderData
- });
- ```
-
-3. In [Step 3: Create an order](#3-create-an-order), change the test endpoint to the **live** endpoint:
- ```
- https://api.multisafepay.com/v1/json/orders
- ```
-
-
-
----
-
-[block:html]
-{
-"html": "
+
+
+
+
+# 1. Add the HTML elements
+
+1. Add the component's CSS to the `` of your checkout page:
+ ```html
+
+ ```
+
+2. Add the component's script to the bottom of the `` of your checkout page:
+ ```html
+
+ ```
+
+3. Add the DOM element for the component's UI in the `` of your checkout page:
+ ```html
+
+ ```
+
+## Choose your payment button
+
+Decide if you want to:
+
+- Generate a button with the component (see [Step 2](#2-initialize-the-component) below). **Recommended.**
+- Use an existing button, e.g. if your checkout already includes one.
+- Create your own button:
+
+ ```html
+
+ ```
+
+# 2. Initialize the component
+
+## Generate an API token
+
+Payment components require a MultiSafepay API token. See API reference – [Generate an API token](/reference/generateapitoken/).
+
+✅ **Tip!** To keep your API key private, request the token from your own server.
+
+## Construct the component object
+
+1. Initialize an `orderData` object containing information about the customer's <> collected during the checkout process:
+
+ ```javascript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ payment_options: {
+ settings: {
+ connect: {
+ group_cards: true,
+ qr: {
+ enabled: true,
+ autoload: false
+ }
+ }
+ }
+ },
+ };
+ ```
+
+
+Properties
+
+| Key | Required | Value |
+|----------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
+| currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
+| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
+| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
+| customer.reference | Yes, for recurring payments | Your unique customer reference. \n(\*currently not supported for QR payments.) |
+| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
+| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true` |
+| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
+
+
+
+
+
+
+How to process recurring payments
+
+
+[Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+
+Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+To process recurring payments in your payment component:
+
+- Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+
+ ```JavaScript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template : {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+ const recurringData = {
+ "model": "cardOnFile",
+ "tokens": [
+ {
+ "token": "AvqeOjgdm8A",
+ "code": "IDEAL",
+ "display": "xxxxxxxxxNL81PSTB0000012345",
+ "bin": null,
+ "name_holder": "Schilder",
+ "expiry_date": "",
+ "expired": 0,
+ "last4": null,
+ "model": "cardOnFile"
+ },
+ {
+ "token": "BcEWsknWsYg",
+ "code": "MASTERCARD",
+ "display": "Card xxxx xxxx xxxx 4444",
+ "bin": 555555,
+ "name_holder": "Holder",
+ "expiry_date": 2412,
+ "expired": 0,
+ "last4": 4444,
+ "model": "cardOnFile"
+ }
+ ]
+ };
+ ```
+
+> ✅ Success
+>
+> Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+Recurring payments are supported for all card payments.
+
+📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+
+
+📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
+
+2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token:
+
+ ```javascript
+ PaymentComponent = new MultiSafepay({
+ env: 'test',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
+## Initialize the component
+
+Initialize the component using:
+
+
+Payment component button
+
+
+```javascript
+PaymentComponent.init('dropin', {
+ container: '#MultiSafepayPayment',
+ onGetQR: function (state) {
+ console.log('onGetQR', state);
+ },
+ onError: function (state) {
+ console.log('onError', state);
+ },
+ onEvent: function (state) {
+ console.log('onEvent', state);
+ },
+ onSubmit: function (state) {
+ if(PaymentComponent.hasErrors()) {
+ let errors = PaymentComponent.getErrors();
+ console.log(errors);
+ return;
+ }
+
+ // Send state.paymentData to your server (createOrder)
+ // Create an order from your server
+ // Return the response from your server to the client-side
+ // With the response, redirect the customer or log an error
+
+ createOrder(PaymentComponent.getPaymentData()).then(response => {
+ console.log(response);
+ if(response.success) {
+ PaymentComponent.init('redirection', {
+ order: response.data
+
+ }
+ });
+ },
+ onValidation: function (state) {
+ console.log('onValidation', state);
+ },
+ onSelect: function (state) {
+ console.log('onSelect', state);
+ },
+ onLoad: function (state) {
+ console.log('onLoad', state);
+ }
+});
+```
+
+
+
+
+Own or existing button
+
+
+```javascript
+PaymentComponent.init('dropin', {
+ container: '#MultiSafepayPayment',
+ onSelect: state => {
+ console.log('onSelect', state);
+ },
+ onError: state => {
+ console.log('onError', state);
+ },
+ onLoad: state => {
+ console.log('onLoad', state);
+ }
+});
+```
+
+
+
+In the method call, create event handlers for the following events:
+
+
+Events
+
+| Event | Event handler |
+|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `onError` | Occurs when there is an error in the payment component. |
+| `onGetQR` | Occurs when the QR is rendered in the payment component. **Example**:
onGetQR: e => { createOrder(e.orderData).then(response => { PaymentComponent.setQR({ order: response.data }); }); }, ``` After creating the order, you invoke getQR. |
+| `onLoad` | Occurs when the payment component UI is rendered. |
+| `onSelect` | Occurs when the customer selects an <> with iDEAL. |
+| `onSubmit` | Occurs when the customer clicks the payment button (when using the button generated by the component). |
+| `onValidation` | Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
+
+
+
+The `PaymentComponent` has the following methods:
+
+
+Methods
+
+
+| Method | Description |
+|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `getErrors` | Returns error messages or codes. |
+| `hasErrors` | Returns a boolean value about whether errors were registered. |
+| `getOrderData` | Returns an object containing a `payment_data` object and the full order configuration. |
+| `getPaymentData`| Returns a `payment_data` object with a `payload` containing the customer's payment details, used to [create orders](/docs/payment-component-single/), and the `gateway`. |
+| `setQR()` | Returns a boolean to set up the QR code. Requires argument `orderData`. If `orderData` is not sent, the payment will not be associated with the order. |
+
+
+
+
+# 3. Create an order
+
+## Handle the interaction
+
+✅ **Tip!** This step only applies if using your own or an existing payment button.
+
+1. Assign the button element to a variable:
+
+ ```javascript
+ const paymentButton = document.querySelector('#payment-button');
+ ```
+
+The `payment_data` includes the following parameters:
+
+```JSON
+ {
+ "payment_data": {
+ "gateway": "CREDITCARD",
+ "payload": "xxxxxxxx",
+ "tokenize": true
+ }};
+```
+
+
+Parameters
+
+
+| Key | Required | Description |
+| ---------- | :------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `gateway` | Yes | The unique `gateway_id` to redirect the customer to the specific payment method. |
+| `payload` | Yes | Information required to process the payment. **Note:** Do not edit or modify the `payload` or otherwise the payment fails. |
+| `tokenize` | Optional | For [recurring payments](/docs/recurring-payments). If a customer selects to either save their cardholder data for future visits or use an existing token, a`payment_data.tokenize` parameter is added. |
+
+**Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data.
+
+
+
+2. Create an event handler for the payment button:
+
+ - When the customer clicks the payment button, call the component's `getPaymentData()` method.
+ - Send the response to your server and [create an order](#create-an-order).
+ - Return the reponse from your server to the client-side to redirect the customer.
+
+
+### Redirect the customer
+
+You need to fetch the property payment_url, which will then - depending on the result - redirect the customer to the correct page. This may be for 3ds required cards towards the authentication step, or for frictionless / not required 3ds, towards the success page.
+The handling of the payment_url lies on your side.
+
+The component's `redirection` handler redirects the customer to the relevant page:
+
+- If customer actions are required to complete the payment (e.g. by completing 3D Secure or iDEAL issuer authentication), the customer is redirected to the relevant page. If successful, the customer is then redirected to the `redirect_url`, i.e. the "success page".
+- If no customer action is required to complete the payment, the customer is redirected to the `redirect_url`, i.e. the "success page".
+- If the customer chooses to pay by bank transfer, the component displays the banking details needed for customers to complete payment.
+- If a QR code is available for customers to complete payment on their mobile device, the component displays the QR code.
+
+### Avoid duplicate orders
+
+When using your own payment button, if the customer clicks it again before they are redirected, this can create duplicate orders.
+
+To avoid duplicate orders, disable the button until you have attempted to create an order.
+
+Then, check `response.success`:
+
+- If `true`, don't re-enable the button, and proceed with the redirect.
+- If `false`, re-enable the button for the customer to try again.
+
+ ```js
+ paymentButton.addEventListener('click', e => {
+ paymentButton.addAttribute('disabled');
+ if (PaymentComponent.hasErrors()) {
+ let errors = PaymentComponent.getErrors();
+ console.log(errors);
+ return false;
+ }
+ createOrder(PaymentComponent.getPaymentData()).then(response => {
+ if(!response || !response.success) {
+ paymentButton.disabled = false;
+ console.log(response);
+ } else {
+ PaymentComponent.init('redirection', {
+ order: response.data
+ });
+ }
+ });
+ });
+ ```
+
+## Create an order
+
+Create an <> from your server, appending the `payment_data` collected from the payment component UI to the order data.
+
+See API reference – [Create order](/reference/createorder/) > Payment component.
+
+# 4. Go live
+
+To test the payment methods, see [Testing payment methods](/docs/testing#test-payment-details).
+
+When you're ready to process real payments, make the following changes:
+
+1. In [Step 1: Add the elements](#1-add-the-elements), replace the test JavaScript library with the live JavaScript library:
+
+ ```html
+
+ ```
+
+ Next, replace the test CSS file with the live CSS file:
+
+ ```html
+
+ ```
+
+2. In [Step 2: Construct the component object](#2-construct-the-component-object), change the environment from `test` to `live`:
+ ```js
+ PaymentComponent = new MultiSafepay({
+ env: 'live',
+ apiToken: apiToken,
+ order: orderData
+ });
+ ```
+
+3. In [Step 3: Create an order](#3-create-an-order), change the test endpoint to the **live** endpoint:
+ ```
+https://api.multisafepay.com/v1/json/orders
+ ```
+
+---
+
+[block:html]
+{
+ "html": "
\n"
+}
+[/block]
+
+[Top of page](#)
\ No newline at end of file
From 97556518535f926ca014d21c48c24d6317689270 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 25 Apr 2024 11:52:37 +0200
Subject: [PATCH 062/319] DOCS-4221: Add component tables (#2972)
add tables for component
---
content/checkout/multiple.md | 50 +++++++++++++++++++++---------------
1 file changed, 30 insertions(+), 20 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index d91e6e31c..d860c2770 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -85,18 +85,17 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
Properties
-| Key | Required | Value |
-|----------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| amount | Yes | The value of the order. Format: Number without decimal points, e.g. 100 euro is formatted as `10000` |
-| currency | Yes | The currency of the order. Format: ISO-4217 , e.g. `EUR` |
-| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g. `NL` |
-| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl` |
-| customer.reference | Yes, for recurring payments | Your unique customer reference. \n(\*currently not supported for QR payments.) |
-| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
-| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled` \n `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true` |
-| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
-| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean |
-
+| Key | Required | Value |
+|------------------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| amount | Yes | The value of the order. Format: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
+| currency | Yes | The currency of the order. Format: ISO-4217 , e.g., `EUR`. |
+| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g., `NL`. |
+| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+| customer.reference | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
+| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
+| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`. |
+| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean. |
@@ -263,14 +262,25 @@ In the method call, create event handlers for the following events:
Events
-| Event | Event handler |
-|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `onError` | Occurs when there is an error in the payment component. |
-| `onGetQR` | Occurs when the QR is rendered in the payment component. **Example**:
onGetQR: e => { createOrder(e.orderData).then(response => { PaymentComponent.setQR({ order: response.data }); }); }, ``` After creating the order, you invoke getQR. |
-| `onLoad` | Occurs when the payment component UI is rendered. |
-| `onSelect` | Occurs when the customer selects an <> with iDEAL. |
-| `onSubmit` | Occurs when the customer clicks the payment button (when using the button generated by the component). |
-| `onValidation` | Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
+
+| Event | Event Handler |
+|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `onError` | Occurs when there is an error in the payment component. |
+| `onGetQR` | Occurs when the QR is rendered in the payment component. |
+| | **Example**: |
+| | ```javascript |
+| | onGetQR: e => { |
+| | createOrder(e.orderData).then(response => { |
+| | PaymentComponent.setQR({ |
+| | order: response.data |
+| | }); |
+| | }); |
+| | }, |
+| `onLoad` | Occurs when the payment component UI is rendered. |
+| `onSelect` | Occurs when the customer selects an *issuer* with iDEAL. |
+| `onSubmit` | Occurs when the customer clicks the payment button (when using the button generated by the component). |
+| `onValidation` | Occurs when form validation changes. Can be used to disable the payment button until all fields are validated. |
+
From 00c514babd5c55d624efd57f7d24b409a6c0eff9 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Fri, 26 Apr 2024 13:41:02 +0200
Subject: [PATCH 063/319] DOCS-4225: [PrestaShop 1.6] - Changing the PHP
version used to test the plugin (#2973)
---
content/integrations/prestashop-1-6.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/prestashop-1-6.md b/content/integrations/prestashop-1-6.md
index 20d4290d9..c52d70281 100644
--- a/content/integrations/prestashop-1-6.md
+++ b/content/integrations/prestashop-1-6.md
@@ -27,7 +27,7 @@ slug: 'prestashop-1-6'
- [MultiSafepay account](/docs/getting-started-guide/)
- PrestaShop 1.6
-- Tested on PHP 7.0
+- Tested on PHP 5.6
# Installation and configuration
From bb5791df977a2ea5ebea0d3afea872aba62c5493 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 2 May 2024 15:19:02 +0200
Subject: [PATCH 064/319] DOCS-4175: Exact online (#2974)
Add accounting integration
---
content/accounting/accounting-integrations.md | 274 ++++++++++++++++++
1 file changed, 274 insertions(+)
diff --git a/content/accounting/accounting-integrations.md b/content/accounting/accounting-integrations.md
index b4661d506..5c70a006d 100644
--- a/content/accounting/accounting-integrations.md
+++ b/content/accounting/accounting-integrations.md
@@ -87,7 +87,281 @@ To connect your MultiSafepay account to e-Boekhouden, see PSP betalingen –
---
+# Exact Online
+Exact Globe and Online can integrate with MultiSafepay directly to export relevant transaction data via their API, or you can manually export MultiSafepay [accountant exports](/docs/reports#accountant-export) (MT940 format).
+
+ \#Exact Online
+
+Integration is available for Exact Online accounts with type "Accounting".
+
+## Automated exports
+
+
+
+
+How to automate exports with Exact Online
+
+
+
+To grant MultiSafepay permission to access your Exact Online account:
+
+Sign in to your MultiSafepay dashboard .
+Go to **Reports** > **Accounting integrations** > **Exact Online** > **Configure**.
+ You are redirected to Exact Online.
+
+- Enter your email address and Exact Online password, and then click **Next**.
+ A list of required permissions is displayed.
+- Grant MultiSafepay access to Exact Online only or Exact Online and future companies.
+- Select the checkbox to accept the Exact Online terms and conditions.
+ Click **Allow**.
+- You are redirected to your MultiSafepay dashboard.
+
+ ✅ You have successfully granted MultiSafepay access permissions.
+
+
+
+❗️If you delete or modify information in Exact Online, exports will fail. If you encounter an error, email [support@multisafepay.com](+support@multisafepay.com+)
+
+
+
+
+
+How to link ledger accounts
+
+In the **Exact Online code** field:
+
+Click the **dropdown** icon and then select the relevant code, **or**
+Enter the code or name to search for the relevant code.
+
+Once all accounts are linked, click **Submit**. This is essential for all changes to be saved.
+
+
+To edit the existing ledger account:
+
+
+Click the **Pencil** icon next to the **Exact Online code** field.
+In the **Exact Online code** field, click the **dropdown** icon and then select the relevant code.
+Click **Submit**.
+
+
+
+To create your own ledger account:
+
+
+Click **+ _ next to the \_Exact Online code_ field.\_
+In the **Exact Online code** field, enter your **Code** and **Description\*\*.
+Click ✔.
+
+
+
+
+
+
+
+How to schedule automated exports
+
+In your dashboard, under **Schedule export_, toggle the _**Enabled/Disabled** radio button to **Enabled**.
+Click **Save\*\*.
+ ✅ The scheduled export appears below.
+
+
+
+Exports start the day **after** you set the schedule.
+You can only have 1 scheduled export queued at a time.
+You can view the status of previous exports under **Export history**. If exports are failing, email [support@multisafepay.com](+support@multisafepay.com+)
+Export data for a specified time period **once only** to avoid duplicate data in Exact.
+
+
+
+To enable/disable exports:
+
+- In your dashboard, under **Schedule export_, toggle the _**Enabled/Disabled\*\* radio button as needed.
+
+❗️You must add the data for periods when exports are disabled to Exact Online **manually**, otherwise it is lost.
+
+
+
+
+
+## Financial year
+
+
+
+
+
+How to add a new financial year
+
+
+
+Sign in to your Exact Online account.
+On the navigation menu > click **sample company Exact online** > **Master Data**.
+Under **Financial** > select **Period-data table**.
+Under **Financial years** page > click on **New** > **Create** Create new financial year pop-up screen appears.
+Click **Close**.
+
+❗️You must add the financial year to Exact Online every year. Otherwise, your exports will fail.
+
+
+
+
+
+## Manual imports
+
+
+
+
+Prerequisites
+
+
+
+Exact Basic / Standard package does **not** support the MT940 import function. You need at least Exact Advanced.
+Lightspeed users must request Lightspeed to make an adjustment to make sure order numbers appear in the correct fields in Exact Online to successfully match the MultiSafepay MT940.
+Exact Online imports and matches MultiSafepay MT940 reports provided that:
+ - Your accounting package can process MT940 files.
+
+ \- The order numbers in the MT940 files also appear in the correct invoice fields in your accounting platform.
+
+ \- The customer's name and order amounts that appear in the exported MT940 files match your accounting platform.
+
+
+
+
+
+
+
+
+
+How to import manually
+
+
+
+- Provide Exact with an additional international bank account number (IBAN). This can be a dummy (placeholder) IBAN.
+
+
+
+ \- Go to IBAN Calculator – Calculate an IBAN .
+
+ \- From the **Country** list, select **The Netherlands**.
+
+ \- Under **Bank Code**, enter a bank, e.g. ING Group.
+
+ \- In the **Account number** field, enter any 7 digits.
+
+ \- Click **Calculate IBAN**.
+
+ A dummy IBAN and BIC code are generated.
+
+
+
+- Submit the IBAN to the relevant platform
+
+ **Exact Online**
+
+
+
+ \- Sign in and go to **Financial** > **Banking & Cash** > **Bank accounts** > **Overview**.
+
+ \- Click **New**.
+
+ \- Enter your dummy IBAN, and then click **Save**.
+
+ You can now register all transactions linked to this IBAN.
+
+Export a MT940 accountant export from your MultiSafepay dashboard.
+
+
+
+ \- Sign in to your MultiSafepay dashboard .
+
+ \- Go to **Reports** > **Accountant export**:
+
+ \- From the **Date selection** list, select a date range.
+
+ \- From the **Currency** list, select the currency.
+
+ \- From the **Report type** list, select **MT940**.
+
+ \- For the **Group costs in 1 record** toggle, set to:
+
+ \- **Yes:** Show only the total of all MultiSafepay transaction fees for the selected timeframe.
+
+ \- **No:** List each MultiSafepay fee below the matching transaction.
+
+ \- Click **Advanced options:**
+
+ \- In the **Bank Account / IBAN** field, enter the dummy IBAN.
+
+ \- In the **BIC** field, enter the dummy BIC code.
+
+
+
+- Import the MT940 accountant export into Exact Online.
+
+
+
+ \- Sign in to your Exact Online account.
+
+ \- Go to **Financial** > **Banking & Cash** > **Statements** > **Import**.
+
+ \- Click **Choose File**, and then select the MT940 file you want to upload.
+
+ \- Click **Import**.
+
+
+
+
+
+
+
+
+
+
+
+## Denovit integration\*
+
+
+
+Denovit automates payment link into Exact invoices.
+
+
+
+How to set up Denovit
+
+
+Sign in to your Denovit account.
+Go to your **Dashboard_, and then select the _**Paylink** module.
+Connect to your Exact account.
+Under **PSP settings\*\*, enter your [MultiSafepay API key](/docs/sites#site-id-api-key-and-security-code) and the payment conditions you use in Exact.
+Adjust other settings as relevant, e.g. personalize your email template, thank-you page, or notification email to improve customer experience.
+
+
+For each new invoice in Exact, if you:
+
+
+**Email:** The customer receives a second email containing a payment link, in addition to the normal email.
+**Print and process:** The customer receives an email containing a payment link.
+
+
+***
+
+
+
+To add MultiSafepay [payment links](/docs/payment-links/) into Exact invoices, see Denovit – Payment link module .
+
+
+
+
+
+
+
+xCore integration\*
+
+
+xCore offers two reconciliation apps that retrieve all payment details from MultiSafepay for the day and automatically match each payment with its corresponding open item in Exact.
+
+
+For more information, see xCore – Afletteren 2.0 Exact Online with MultiSafepay .
# King Business Software
From c4ab05c05b3278eeee5eed02984cad8a5ccb2655 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Thu, 9 May 2024 19:04:10 +0200
Subject: [PATCH 065/319] DOCS-4230: Release of 3.13.1 of the PrestaShop 1.6
plugin (#2975)
---
content/integrations/prestashop-1-6.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/prestashop-1-6.md b/content/integrations/prestashop-1-6.md
index c52d70281..f49ec9bf1 100644
--- a/content/integrations/prestashop-1-6.md
+++ b/content/integrations/prestashop-1-6.md
@@ -11,7 +11,7 @@ slug: 'prestashop-1-6'
-Download
+DownloadSource code
From 930d7d0845ece80706d6a5f4a2780e123c9e3296 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Fri, 10 May 2024 10:15:54 +0200
Subject: [PATCH 066/319] DOCS-4234: Pronamic 2 (#2976)
Update partner integrations
---
content/integrations/partner-integrations.md | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md
index a88c85ee2..ad96ece9d 100644
--- a/content/integrations/partner-integrations.md
+++ b/content/integrations/partner-integrations.md
@@ -251,7 +251,7 @@ To install and configure, see LogiVert – " target="_blank">Pronamic Pay ,provides a free plugin to integrate WooCommerce WordPress stores with MultiSafepay.
+Pronamic ,provides a Premium Pronamic Pay plugin to integrate MultiSafepay with multiple WordPress plugins.
Prerequisites
@@ -293,6 +293,22 @@ For any technical queries, see –
+Supported plugins
+
+- Gravity Forms
+- Contact Form 7
+- Ninja Forms
+- Formidable Forms
+- WooCommerce
+- Easy Digital Downloads
+- Restrict Content Pro
+- MemberPress
+- Charitable
+- Give
+
+
+
Installation and configuration
From a39a4381c8fd936feaaafcbc20e8fd164fddf6cc Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Fri, 10 May 2024 15:17:10 +0200
Subject: [PATCH 067/319] Docs 4232 (#2977)
Expand POS features
---
content/point-of-sale/smartPOS-features.md | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index db4a9dc9d..95b07cfb3 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -156,6 +156,15 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
+***
+
+How to switch languages
+
+1. In the **Settings** section, go to **Languages*.
+2. Select between English, Dutch, and Spanish.
+
+
+
***
From f880ae41fb381188ca119e2531f3081eb3715ab2 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Tue, 14 May 2024 16:57:24 +0200
Subject: [PATCH 068/319] DOCS-4237: [VirtueMart 4] Release of 2.0.2 (#2978)
---
content/integrations/virtuemart-4.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/virtuemart-4.md b/content/integrations/virtuemart-4.md
index 60b95b4b8..78869d5bc 100755
--- a/content/integrations/virtuemart-4.md
+++ b/content/integrations/virtuemart-4.md
@@ -11,7 +11,7 @@ slug: 'virtuemart-4'
"
}
[/block]
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 2705eaa50..c055e2045 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -7,7 +7,7 @@ parentDoc: 62bd75142e264000a66d62b5
slug: 'in3'
---
-
+in3 is a Dutch <> method where customers pay in 3 installments, at no extra cost and without having to register with the Bureau Krediet Registratie (BKR). in3 guarantees <> after receiving the first installment.
From c8a0d803467706199aac360de343a2bcfdbd3223 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Thu, 23 May 2024 18:02:55 +0200
Subject: [PATCH 071/319] DOCS-4247: [PrestaShop 1.7] Release of 5.14.1 (#2981)
---
content/integrations/prestashop-1-7.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop-1-7.md
index 31ce6cde0..6df971078 100644
--- a/content/integrations/prestashop-1-7.md
+++ b/content/integrations/prestashop-1-7.md
@@ -12,7 +12,7 @@ slug: 'prestashop-1-7'
-Download
+DownloadSource code
From b1e0ba2f78a80057b17590963e6e42cb508a6803 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 29 May 2024 11:05:56 +0200
Subject: [PATCH 072/319] DOCS-4245 Order save inspector (#2982)
Magento troubleshooting section
---
content/integrations/magento-2.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md
index 2d36fc8ea..b6cb4cc5b 100755
--- a/content/integrations/magento-2.md
+++ b/content/integrations/magento-2.md
@@ -731,6 +731,22 @@ If you installed the plugin via the Magento Marketplace, go to **System** > **We
---
+## Troubleshooting
+
+
+How to troubleshoot Magento 2 issues
+
+
+### Order status updates
+
+If you experience issues with order statusses not being updated correctly (e.g. incongruence pending - processing), consider the following:
+
+- this is generally caused by third party solutions interfering in the order processing flow and the observer being based on a different instance of the order object.
+- to debug this issue on your side, check our Order Save Inspector
+
+
+
+
[block:html]
{
From e2187809cb58dd267bf00cc52142a5aa7192496a Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 30 May 2024 16:58:29 +0200
Subject: [PATCH 073/319] DOCS-4249 additional information CTAP / methods /
PayPal (#2983)
TID information and troubleshooting instructions
---
content/getting-started/payment-methods.md | 10 +++++++++-
content/payment-methods/paypal.md | 10 ++++++++++
content/point-of-sale/traditional-ctap.md | 3 ++-
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/content/getting-started/payment-methods.md b/content/getting-started/payment-methods.md
index 28fccde8c..24fe61eab 100644
--- a/content/getting-started/payment-methods.md
+++ b/content/getting-started/payment-methods.md
@@ -28,11 +28,19 @@ Some payment methods, especially Banking methods, can be activated directly via
2. To activate the payment method for:
- All sites, go to **Settings** > **Payment methods**.
- A specific site, go to **Sites**, and then click the relevant site.
+This overwrites your global selection. Only the payment methods selected for the site will then be available.
3. Select the checkbox for the payment method, and then click **Save changes**.
+**Tip: if you do not set site-specific methods, the global configuration will be applied.**
+
💬 **Support:** If the payment method isn't visible in your dashboard, email [support@multisafepay.com](mailto:support@multisafepay.com)
-For instructions to activate additional payment methods, see the respective pages.
+
+ How to activate optional payment methods
+
+For instructions to activate additional payment methods, see the respective pages and follow individual activation steps.
+\
+
diff --git a/content/payment-methods/paypal.md b/content/payment-methods/paypal.md
index 51900573c..909b19af6 100755
--- a/content/payment-methods/paypal.md
+++ b/content/payment-methods/paypal.md
@@ -166,6 +166,16 @@ You can include shopping cart in your [create order](/reference/createorder/) re
You can no longer display your logo; your website name is displayed in the PayPal checkout.
+
+## Troubleshooting
+
+If you encounter any issues with PayPal, for example a system error, do the following checks:
+
+- [you have upgraded to the latest PayPal API](/docs/paypal#activation)
+- PayPal is activated for your account
+-
+
+
---
diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md
index 57e2a38d4..2bedab55b 100644
--- a/content/point-of-sale/traditional-ctap.md
+++ b/content/point-of-sale/traditional-ctap.md
@@ -37,7 +37,8 @@ Traditional (CTAP) is a terminal that has passed
Date: Wed, 5 Jun 2024 11:54:18 +0200
Subject: [PATCH 074/319] Docs 4258 (#2984)
* DOCS-4258: add ROM info
---
content/payment-methods/riverty.md | 5 +++++
content/point-of-sale/pos-troubleshooting.md | 14 ++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/content/payment-methods/riverty.md b/content/payment-methods/riverty.md
index 1203e543c..0613fd950 100755
--- a/content/payment-methods/riverty.md
+++ b/content/payment-methods/riverty.md
@@ -158,6 +158,11 @@ For other ready-made integrations, make an [update order](/reference/updateorder
+## Strong customer authentication
+
+In some cases, the customer is redirected to an authentication page.
+The criteria for when this is triggered are controlled by Riverty.
+
## Surcharges
Due to changes to the Wet op het consumentenkrediet, merchants who apply [surcharges](/docs/surcharges/) to <> methods are now deemed credit providers under article 7:57 of the Burgerlijk Wetboek. This requires a permit from the Authority for Financial Markets (AFM).
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 2c8acddd3..6c0e7f581 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -117,5 +117,19 @@ If your payment is declined, check if you encountered any error messages.
>
***
+## ROM version
+
+An outdated version of the firmware can cause miscellaneous issues.
+Always ensure to run your device on the latest available version.
+
+You can update this on your terminal via:
+
+1. **Reboot** via the button on right of the device
+2. Settings (terminal) > About device > (select model)
+
+You can view your current version, and **check update**.
+
+***
+
[Top of page](#)
\ No newline at end of file
From bed69fd0b33f6809d850a1f3376814c57ad084e7 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 5 Jun 2024 15:25:18 +0200
Subject: [PATCH 075/319] Docs 4245 (#2985)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
expand GETorder POS
---------
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/point-of-sale/smartpos-solutions.md | 118 ++++++++++++++++++++
1 file changed, 118 insertions(+)
diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md
index 3beccc86d..ccae5a8fd 100644
--- a/content/point-of-sale/smartpos-solutions.md
+++ b/content/point-of-sale/smartpos-solutions.md
@@ -145,6 +145,124 @@ curl -X POST \
2. To initiate payments - see MultiSafepay Android POS integration .
+# API features
+
+In addition to the features mentioned in our API reference, there are POS-specific details you can retrieve via our API, including the **Terminal ID** that processed a transaction.
+
+**Example GET order**
+
+```
+
+{
+ "success": true,
+ "data": {
+ "amount": 1,
+ "amount_refunded": 0,
+ "completed": "2024-06-04T15:50:18",
+ "costs": [
+ {
+ "amount": 2,
+ "description": "2 For Visa Transactions",
+ "transaction_id": 899813954,
+ "type": "SYSTEM"
+ },
+ {
+ "amount": 0.6,
+ "description": "2.9 % For Visa CreditCards Transactions (min 60)",
+ "transaction_id": 899813955,
+ "type": "SYSTEM"
+ }
+ ],
+ "created": "2024-06-04T15:50:17",
+ "currency": "EUR",
+ "custom_info": {
+ "custom_1": null,
+ "custom_2": null,
+ "custom_3": null
+ },
+ "customer": {
+ "address1": null,
+ "address2": null,
+ "city": null,
+ "country": null,
+ "country_name": null,
+ "email": null,
+ "first_name": null,
+ "house_number": null,
+ "last_name": null,
+ "locale": "en_US",
+ "phone1": null,
+ "phone2": null,
+ "state": null,
+ "zip_code": null
+ },
+ "description": "12341234",
+ "fastcheckout": "NO",
+ "financial_status": "completed",
+ "items": null,
+ "modified": "2024-06-04T15:50:18",
+ "order_id": "TestGetOrder123123",
+ "payment_details": {
+ "account_holder_name": "card holder",
+ "account_id": null,
+ "application_id": "a0000000031010",
+ "authorization_code": "705151",
+ "card_acceptor_id": "1001001",
+ "card_acceptor_location": "Amsterdam",
+ "card_acceptor_name": "TestMSP",
+ "card_additional_response_data": {
+ "sca_details": {}
+ },
+ "card_authentication_result": null,
+ "card_entry_mode": "ICC_CONTACTLESS",
+ "card_expiry_date": "3112",
+ "card_funding": "D",
+ "card_product": "F",
+ "card_product_type": 1,
+ "card_sequence_number": "0000",
+ "card_verification_result": "2",
+ "cardholder_verification_method": "FAILED",
+ "cardholder_verification_result": "UNKNOWN",
+ "emv": {
+ "91": "ab1231231234"
+ },
+ "external_transaction_id": "12312312312",
+ "issuer_bin": "123123",
+ "issuer_country_code": "ES",
+ "last4": "1234",
+ "recurring_flow": null,
+ "recurring_id": "1231213123",
+ "recurring_model": null,
+ "response_code": "00",
+ "scheme_reference_id": "123123123123123",
+ "terminal_id": "0000004d",
+ "type": "VISA"
+ },
+ "payment_methods": [
+ {
+ "account_holder_name": "card holder",
+ "amount": 1,
+ "card_expiry_date": "3112",
+ "currency": "EUR",
+ "description": "12341234",
+ "external_transaction_id": "123123412341234",
+ "payment_description": "Visa",
+ "status": "completed",
+ "type": "VISA"
+ }
+ ],
+ "reason": "Approved",
+ "reason_code": "1000",
+ "related_transactions": null,
+ "status": "completed",
+ "transaction_id": 123412342341234,
+ "var1": null,
+ "var2": null,
+ "var3": null
+ }
+}
+
+```
# Handle notifications
From f44866584c730ebb0f9eddfc7cd99e95804a717c Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Mon, 10 Jun 2024 12:36:52 +0200
Subject: [PATCH 076/319] DOCS-4260 M2 Troubleshooting guide (#2988)
* DOCS-4260 M2 Troubleshooting guide
---
content/integrations/magento-2.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md
index b6cb4cc5b..243965165 100755
--- a/content/integrations/magento-2.md
+++ b/content/integrations/magento-2.md
@@ -737,14 +737,16 @@ If you installed the plugin via the Magento Marketplace, go to **System** > **We
How to troubleshoot Magento 2 issues
-### Order status updates
+### Order Status Update
-If you experience issues with order statusses not being updated correctly (e.g. incongruence pending - processing), consider the following:
+If you experience issues with order statuses not being updated correctly (e.g., incongruence between pending and processing), this might happen randomly and be difficult to replicate. This is generally caused by third-party solutions interfering in the order processing flow and the observer being based on a different instance of the order object.
-- this is generally caused by third party solutions interfering in the order processing flow and the observer being based on a different instance of the order object.
-- to debug this issue on your side, check our Order Save Inspector
+_Tip_: This issue might appear after upgrading to our latest plugin version, possibly due to faster notification processing times surfacing an already existing update conflict.
+To debug this issue on your side:
+1. Set to debug mode.
+2. Use our Order Save Inspector to check which module might interfere (for example, delivery software, ERP).
From 5977611c8c1314795ed99c9f7a0dc0aa2ae738c1 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Mon, 10 Jun 2024 15:43:41 +0200
Subject: [PATCH 077/319] DOCS-4195 WooCommerce troubleshooting section (#2986)
* DOCS-4195 WooCommerce troubleshooting section
---
content/integrations/woocommerce.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md
index 3f461e08e..22373feab 100755
--- a/content/integrations/woocommerce.md
+++ b/content/integrations/woocommerce.md
@@ -301,6 +301,23 @@ The Integration Team will do their best to help you install third-party packages
+## Troubleshooting
+
+### Redirect URL not leading to thank you page
+
+- possible reasons
+
+WC_Order::get_checkout_order_received_url() =>
+
+does not return correct URL, which can be caused by a third party plugin making use of the "woocommerce_get_checkout_order_received_url" filter and returning a wrong value
+
+- possible solutions
+
+Use the filter "woocommerce_get_checkout_order_received_url", provided by WooCommerce, and re-format into the correct value.
+
+ WooCommerce code reference
+WooCommerce add filter
+
## Updates
You can update the plugin in your backend and the CMS marketplace, or via SFTP.
From 2fe6e2cdca2865488f6a8b93c3da821e24dca821 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Wed, 12 Jun 2024 11:12:56 +0200
Subject: [PATCH 078/319] DOCS-4261: [Shopware 6] - Release of 3.0.0 (#2989)
---
content/integrations/shopware-6.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/integrations/shopware-6.md b/content/integrations/shopware-6.md
index 8e15ff333..1fc61b388 100644
--- a/content/integrations/shopware-6.md
+++ b/content/integrations/shopware-6.md
@@ -21,8 +21,8 @@ slug: 'shopware-6'
## Prerequisites
- [MultiSafepay account](/docs/getting-started-guide/)
-- Shopware 6.4.11.x or higher, and 6.5.x.x
-- Tested on Shopware 6.5.8.7, 6.4.20.2 and PHP 8.1
+- Shopware 6.4.11.x or higher, 6.5.x.x and 6.6.x.x
+- Tested on Shopware 6.4.20.2, 6.5.8.11, 6.6.3.0 and PHP 8.1–8.2
## Installation and configuration
From 313ad3369f64d37ca204cf1f6925cb3a9bc2c479 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 25 Jun 2024 18:07:11 +0200
Subject: [PATCH 079/319] DOCS-4266: iDeal 2.0 migration - guide (#2990)
IDEAL 2.0
---
content/payment-methods/ideal.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/content/payment-methods/ideal.md b/content/payment-methods/ideal.md
index 73ed32fb5..c7a091c28 100755
--- a/content/payment-methods/ideal.md
+++ b/content/payment-methods/ideal.md
@@ -9,6 +9,18 @@ slug: 'ideal'
+> ⚠️ Note:
+>
+> We are gradually migrating to iDeal 2.0, an enhanced version of this payment method.
+>
+> Changes:
+>
+> - For users of our redirect solution:
+> From **26/06/2024 on**, our **payment page** no longer displays an issuer list when iDeal is selected.
+> Instead, the customer is redirected to the iDeal environment to select the issuer.
+> - For users of our direct solution (via API):
+> By **01/01/2025**, slight modifications to your payment method integration will be necessary. Further information will follow.
+
iDEAL is the leading payment method in the Netherlands and links all major Dutch retail banks. Customers pay via mobile banking app, [QR code](#ideal-qr), or in their own online banking environment. Once a payment is completed, the customer cannot reverse it and iDEAL guarantees <>.
Read how iDEAL can benefit your business on multisafepay.com
From 51d94e404575ab743abce0eb10b51ee457648b4d Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 26 Jun 2024 12:41:59 +0200
Subject: [PATCH 080/319] DOCS-4268: Clarifications SP (#2991)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/payment-management/success-pages.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/content/payment-management/success-pages.md b/content/payment-management/success-pages.md
index a18d4f282..77c636343 100644
--- a/content/payment-management/success-pages.md
+++ b/content/payment-management/success-pages.md
@@ -6,12 +6,14 @@ hidden: false
slug: 'success-pages'
---
-After completing payment, MultiSafepay redirects the customer to a success (or thank you) page.
+After completing payment process, MultiSafepay redirects the customer to a success ("thank you") page, or to the next confirmation step where necessary.
If `payment_options.redirect_url` in your [create order](/reference/createorder) request is:
-- Set to your success page URL, we redirect the customer there
-- **Not** set, we redirect the customer to a MultiSafepay success page
+- Set to your success page URL, we redirect the customer there (or to the next step in the process)
+- **Not** set, we redirect the customer to a MultiSafepay success page (or to the next step in the process)
+
+**Note: redirection to the success page should not be taken as a guarantor of completed payment; To check the status of a payment, you can rely on the notification.
#### Example
From d4e9ef0a4cf43beb73e17b28541177d74aadddb6 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Mon, 8 Jul 2024 17:19:47 +0200
Subject: [PATCH 081/319] DOCS-4264: Magento Manual Capture (#2992)
---
content/integrations/magento-2.md | 27 +++++++++++++++++++++++
content/payment-methods/manual-capture.md | 4 +++-
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md
index 243965165..f1e578caa 100755
--- a/content/integrations/magento-2.md
+++ b/content/integrations/magento-2.md
@@ -277,6 +277,33 @@ However, the vault only contains tokens valid in your webshop. If your server is
+
+## Manual Capture
+
+The Magento 2 integration supports Manual Capture from version 3.7.0 and up.
+
+
+How to use manual capture in magento
+
+It has been implemented for the following supported payment gateways:
+
+- Card payments
+- Maestro
+- Mastercard
+- Visa
+
+For more information about Manual capture and how to enable it for your MultiSafepay account, please check our [Manual capture](/docs/manual-capture#integration) https://docs.multisafepay.com/docs/manual-capture#integration instructions.
+
+To enable Manual capture in your Magento environment:
+
+1. Go to Stores > Configuration > MultiSafepay > Payment Gateways
+2. Select a supported payment gateway, e.g. 'Card Payment'
+3. Select **Enable Manual Capture** > Yes
+
+Please note that the full shipping amount will be captured whenever the first shipment has been made, even if it was just a partial shipment of the items. If the rest of the items in the order will not be shipped anymore, you can initiate a refund for the shipment costs of those items.
+
+
+
## Order lifetimes
The default lifetime of **Pending payment** orders in Magento 2 is 480 minutes (8 hours). For payment methods with a longer authorization period, the <> to **Cancelled** after 8 hours.
diff --git a/content/payment-methods/manual-capture.md b/content/payment-methods/manual-capture.md
index 014fe7b11..d8c8bf107 100644
--- a/content/payment-methods/manual-capture.md
+++ b/content/payment-methods/manual-capture.md
@@ -20,7 +20,9 @@ To activate Manual Capture for your MultiSafepay account, email Manual capture: Initial payment
From 9367170fe694d20d42fd44bfa588a4ba4534ebca Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 11 Jul 2024 12:31:11 +0200
Subject: [PATCH 082/319] DOCS-4279: Sunmi guides (#2994)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/point-of-sale/hardware-setup.md | 47 +++++++++++++++++++-
content/point-of-sale/pos-troubleshooting.md | 23 ++++++++++
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md
index 3a983c94c..3548a9b4f 100644
--- a/content/point-of-sale/hardware-setup.md
+++ b/content/point-of-sale/hardware-setup.md
@@ -55,6 +55,51 @@ To print your receipt, you need a thermal printer roll of either 57mm or 58mm.
- Charge the terminal for at least 30 minutes.
- Press and hold the power button for a few seconds to switch it on.
- For more information, see the manual provided with the terminal.
+For more information, see the manual provided with the terminal.
+
+***
+
+## Update firmware
+
+An outdated version of the firmware can cause miscellaneous issues.
+Always ensure to run your device on the latest available version.
+
+Via the Sunmi portal,
+
+1. Go to **Device** > Device upgrade >Upgrade management
+
+2. Remove the data filter
+
+3. If there is new firmware available, the **Add to Upgrade Group** button will be highlighted.
+If there is no new firmware available it will be greyed out.
+Adding a terminal to the update group means the terminal will detect new firmware and will start downloading.
+
+Tip: Make sure to unpack and activate the terminal so you can add it to the upgrade group.
+
+4. Download will start automatically.
+By default, the download limit is set to 20KB/sec. You can increase this on the terminal itself in the **System update app**, ideally via the partner portal to apply it to all terminals.
+
+5. Upon successful download, reboot the terminal to install the newly downloaded firmware.
+
+6. You can automate this in the partner portal via
+Device > Device Upgrade > **Important package configuration**
+
+
+Steps on the device:
+
+1. **Reboot** via the button on right of the device
+2. Settings (terminal) > About device > (select model)
+3. You can view your current version, and **check update**.
+
+***
+
+### Sunmi contact
+
+As a partner you can contact Sunmi support for any issues with the terminal.
+
+1. Go to Sunmi
+2. Click **Support**
+3. Go to **Contact Technical Support**
+4. Click **Need to raise a request**
[Top of page](#)
\ No newline at end of file
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 6c0e7f581..159a331eb 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -92,7 +92,18 @@ To check if IPEK is registered, turn on your terminal and click **Configured**.
If your IPEK is not configured, email
***
+### Logs
+Retrieving logs can be a helpful step to investigate an issue. You can generate them via your Sunmi portal:
+
+- Go to Device > **Log task management**
+- Clear _start time_
+- Press **New task**
+- Ensure to select **syslog** and add serial numbers
+- Define the timeframe during which the logs should be uploaded to the portal and replicate the issue during this time. _Start time \_must be later than \_current time_.
+- Click **release**
+
+***
# Payment errors
The terminal isn't working correctly, payment information isn't displayed or payment is declined.
@@ -130,6 +141,18 @@ You can update this on your terminal via:
You can view your current version, and **check update**.
***
+## Set device to developer mode
+Note: once a device is converted to developer mode, it cannot be reverted. This means it will not
+be PCI compliant anymore.
+
+1. Request TUSN code from Sumni.
+2. Navigate to Settings > System > About
+3. Scroll down to the \_TUSN \_button
+4. Press the TUSN button 8 times (alternative: SV button)
+5. Enter the code received from Sunmi.
+ The 4-digit code is valid for 24 hours.
+
+***
[Top of page](#)
\ No newline at end of file
From 7a807e7dbb474429af4d1c0dc0be8da751ec2db6 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 11 Jul 2024 12:46:27 +0200
Subject: [PATCH 083/319] DOCS-4280: Sunmi guides 2 (#2996)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* DOCS-4280: Sunmi guides
---------
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/point-of-sale/hardware-setup.md | 5 ++---
content/point-of-sale/pos-troubleshooting.md | 18 ++----------------
2 files changed, 4 insertions(+), 19 deletions(-)
diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md
index 3548a9b4f..4243e3e5c 100644
--- a/content/point-of-sale/hardware-setup.md
+++ b/content/point-of-sale/hardware-setup.md
@@ -66,12 +66,11 @@ Always ensure to run your device on the latest available version.
Via the Sunmi portal,
-1. Go to **Device** > Device upgrade >Upgrade management
+1. Go to **Device** > Device upgrade > Upgrade management
2. Remove the data filter
-3. If there is new firmware available, the **Add to Upgrade Group** button will be highlighted.
-If there is no new firmware available it will be greyed out.
+3. If there is new firmware available, the **Add to Upgrade Group** button will be highlighted.
Adding a terminal to the update group means the terminal will detect new firmware and will start downloading.
Tip: Make sure to unpack and activate the terminal so you can add it to the upgrade group.
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 159a331eb..bf48c3c6b 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -127,28 +127,14 @@ If your payment is declined, check if you encountered any error messages.
> - If available, pictures or video
>
-***
-## ROM version
-
-An outdated version of the firmware can cause miscellaneous issues.
-Always ensure to run your device on the latest available version.
-
-You can update this on your terminal via:
-
-1. **Reboot** via the button on right of the device
-2. Settings (terminal) > About device > (select model)
-
-You can view your current version, and **check update**.
-
***
## Set device to developer mode
-Note: once a device is converted to developer mode, it cannot be reverted. This means it will not
-be PCI compliant anymore.
+Note: once a device is converted to developer mode, it cannot be reverted. This means it will no longer be PCI compliant.
1. Request TUSN code from Sumni.
2. Navigate to Settings > System > About
-3. Scroll down to the \_TUSN \_button
+3. Scroll down to the **TUSN** button
4. Press the TUSN button 8 times (alternative: SV button)
5. Enter the code received from Sunmi.
The 4-digit code is valid for 24 hours.
From 3da8d596cf1df8bcba138a4aec5077e47df00756 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 11 Jul 2024 17:00:56 +0200
Subject: [PATCH 084/319] DOCS-4281: Pronamic links (#2997)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* DOCS-4281: Pronamic links
---------
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/integrations/partner-integrations.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md
index ad96ece9d..31fb8ac20 100644
--- a/content/integrations/partner-integrations.md
+++ b/content/integrations/partner-integrations.md
@@ -251,7 +251,7 @@ To install and configure, see LogiVert – " target="_blank">Pronamic ,provides a Premium Pronamic Pay plugin to integrate MultiSafepay with multiple WordPress plugins.
+Pronamic ,provides a Premium Pronamic Pay plugin to integrate MultiSafepay with multiple WordPress plugins.
Prerequisites
@@ -313,7 +313,7 @@ For any technical queries, see – " target="_blank">Installation guide .
+To install and configure the plugin, see Pronamic Pay – Installation guide .
___
From 13a36b1456b79b2adb460e7ae67c8d4da24a07fc Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 11 Jul 2024 17:12:15 +0200
Subject: [PATCH 085/319] DOCS-4235: Gomage (#2998)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Ines MultiSafepay <“ines.mayer@multisafepay.com”>
---
content/integrations/partner-integrations.md | 21 ++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md
index 31fb8ac20..5c34534d2 100644
--- a/content/integrations/partner-integrations.md
+++ b/content/integrations/partner-integrations.md
@@ -147,6 +147,27 @@ For other support, see Easywebshop – Gomage provides a plugin to integrate with MultiSafepay.
+
+
+Prerequisites
+
+
+You will need a [MultiSafepay account](/docs/getting-started-guide/).
+
+
+
+
+Support
+
+
+For support, see Gomage .
+
+
+___
+
## Logic4
From c03c6e4cf1dd48256a4045bb90bac4d98a097769 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Fri, 12 Jul 2024 09:57:45 +0200
Subject: [PATCH 086/319] DOCS-4282: Release of 5.14.2 of the PrestaShop plugin
(#2999)
---
content/integrations/prestashop-1-7.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop-1-7.md
index 6df971078..55ad4bcd6 100644
--- a/content/integrations/prestashop-1-7.md
+++ b/content/integrations/prestashop-1-7.md
@@ -12,7 +12,7 @@ slug: 'prestashop-1-7'
-Download
+DownloadSource code
From 78f41d8ed38b06e6338c3824834fb0b491e12f80 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 18 Jul 2024 13:30:21 +0200
Subject: [PATCH 087/319] DOCS-4286 PAD gateway switch (#3000)
* DOCS-4286 PAD gateway switch
---
content/payment-methods/pay-after-delivery.md | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/content/payment-methods/pay-after-delivery.md b/content/payment-methods/pay-after-delivery.md
index 9dd307bea..cd8116dcf 100755
--- a/content/payment-methods/pay-after-delivery.md
+++ b/content/payment-methods/pay-after-delivery.md
@@ -23,6 +23,34 @@ Read how Pay After Delivery can benefit your business on Pay After Delivery Installments ]) product line.
+
+### API integrations
+
+ Switch the gateway code in either redirect or direct transactions to "BNPL_MF".
+ For _direct_ transaction requests, _bank account_ is no longer required.
+
+### Plugin integrations
+
+- Configure "BNPL_MF" gateway.
+- deactivate "PAYAFTER" gateway.
+
+### Redirect or Components
+
+Configure in your plugin integration "BNPL_MF" and deactivate "PAYAFTER" gateway in the MultiSafepay Control Panel.
+
+**Questions?**
+Contact our MultiFactor support at [klantenservice@multifactor.nl](mailto:klantenservice@multifactor.nl).
+
+
# Payment flow
This diagram shows the flow for a successful transaction. Click to magnify.
From 93e3a8471b21857592df257a86fc49e73472259a Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 23 Jul 2024 18:49:05 +0200
Subject: [PATCH 088/319] Docs 4287 (#3002)
* DOCS-4287: QR POS / unbinding
---
content/point-of-sale/smartPOS-features.md | 33 ++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index 95b07cfb3..404146b0f 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -160,11 +160,30 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
How to switch languages
+
1. In the **Settings** section, go to **Languages*.
2. Select between English, Dutch, and Spanish.
+***
+
+How to scan qr codes
+
+
+You can use the QR code reader within our app to easily recognize order information and include it in a transaction.
+
+1. In the **Settings** section, enable **Insert order*.
+2. When using **Manual input**, select **Scan QR*.
+
+The QR reader is able to detect the following parameters:
+- amount
+- order ID
+- description
+This information will be included in the payment request.
+
+
+
***
@@ -195,5 +214,19 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
---
+
+How to unbind your terminal
+
+
+1. In the **Settings** list, go to the menu in the top left corner.
+2. Select **Security*, and insert your 4-digit PIN Code.
+3. Click **Unbind* and confirm.
+
+Note: Unbinding will result in a complete data erasure.
+You can bind the terminal to the same or a different account, or terminal group.
+
+
+
+***
[Top of page](#)
\ No newline at end of file
From 3a751e91396dc36fc1681e07e07c91a615d73066 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 23 Jul 2024 19:06:38 +0200
Subject: [PATCH 089/319] DOCS-4269: Giropay July (#3003)
---
content/payment-methods/giropay.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/content/payment-methods/giropay.md b/content/payment-methods/giropay.md
index b44b13750..d8b25c415 100644
--- a/content/payment-methods/giropay.md
+++ b/content/payment-methods/giropay.md
@@ -11,6 +11,11 @@ slug: 'giropay'
Giropay is the leading inter-bank payment method in Germany, connecting all major German retail banks. Customers pay from their own online banking environment. <> is instant and guaranteed.
+
+> ⚠️ Note: Giropay is deprecated as of 01 July 2024. New activations are no longer possible.
+>
+>
+
Read how Giropay can benefit your business on multisafepay.com
| Supports | Details |
From 87b147ed30d45794932e94e40045247e25dd48ba Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 23 Jul 2024 19:12:11 +0200
Subject: [PATCH 090/319] DOCS-4289: video (#3004)
---
api/general/introduction.md | 5 -----
1 file changed, 5 deletions(-)
diff --git a/api/general/introduction.md b/api/general/introduction.md
index 49f3a4286..7005dd3d2 100644
--- a/api/general/introduction.md
+++ b/api/general/introduction.md
@@ -10,11 +10,6 @@ Welcome to the MultiSafepay API reference (JSON gateway)!
To test using the API sandbox, you need to [create a test account](/docs/create-account/).
-[block:html]
-{
- "html": ""
-}
-[/block]
# Direct vs redirect
From f3fbbd242b85a048e337c6da6e385299b3755e3e Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Wed, 24 Jul 2024 10:26:26 +0200
Subject: [PATCH 091/319] DOCS-4288: Add recommended Shopify checkout
configuration (#3001)
---
content/integrations/shopify.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md
index f4e9a265e..7aee81bbe 100755
--- a/content/integrations/shopify.md
+++ b/content/integrations/shopify.md
@@ -56,6 +56,10 @@ See Shopify –
-
+2. Select **Settings**.
+
+
+
+
-
- How to enable display items
-
+## How to enable display items
1. In the **Global settings** list, click the **Display items** toggle.
2. To return to the main screen, click the **Back** button.
@@ -57,11 +55,7 @@ Once you've initiated the payment, the items are displayed on the payment screen
***
-
-
-
- How to enable tipping
-
+## How to enable tipping
1. In the **Global settings** list, click the **Tipping** toggle.
2. To return to the main screen, click the **Back** button.
@@ -74,13 +68,7 @@ After the payment has been processed, the option to tip is displayed on the paym
***
-
-
-
-
-
- How to enable print or email
-
+## How to enable print or email
1. In the **Global settings** list, click the **Print/Email** toggle.
2. To return to the main screen, click the **Back** button.
@@ -92,29 +80,19 @@ After the payment has been processed, the option to tip is displayed on the paym
***
-
-
-
- How to disable manual input
-
+## How to enable manual input
1. In the **Payment** list, click the ** Manual input** toggle.
2. To return to the main screen, click the **Back** button.
***
-
-
-
-
-
- How to enable cloud mode
-
+## How to enable cloud mode
1. In the **Payment** list, click the ** Cloud mode** toggle to the right.
2. To return to the main screen, click the **Back** button.
----
+***
To exit the cloud mode payment screen:
@@ -123,11 +101,9 @@ To exit the cloud mode payment screen:
**Note:** For your security, we recommend you change the default PIN code as soon as possible.
----
+***
-
-How to change the PIN code
-
+## How to change the PIN code
1. Go to **Settings** > **Security**.
2. Enter the default PIN code.
@@ -136,8 +112,9 @@ To exit the cloud mode payment screen:
----
-
+***
+
+
After you've enabled the **Cloud mode**, the **Navigation** list appears. This feature allows you to hide the cancel button and system navigation.
@@ -145,9 +122,9 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
-
-How to hide navigation
-
+
+
+## How to hide navigation
1. In the **Navigation** list, click the ** System navigation** toggle to the right.
2. To return to the main screen, click the **Back** button
@@ -157,38 +134,35 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
***
-
-How to switch languages
-
-1. In the **Settings** section, go to **Languages*.
+## How to switch languages
+
+1. In the **Settings** section, go to \*_Languages_.
2. Select between English, Dutch, and Spanish.
***
-
-How to scan qr codes
-
+
+## How to scan qr codes
You can use the QR code reader within our app to easily recognize order information and include it in a transaction.
-1. In the **Settings** section, enable **Insert order*.
-2. When using **Manual input**, select **Scan QR*.
+1. In the **Settings** section, enable \*_Insert order_.
+2. When using **Manual input**, select \*_Scan QR_.
The QR reader is able to detect the following parameters:
+
- amount
- order ID
-- description
-This information will be included in the payment request.
+- description
+ This information will be included in the payment request.
***
-
-How to enable ❌ cancel
-
+## How to enable ❌ cancel
1. In the **Navigation** list, click the **Cancel button** toggle to the right.
2. To return to the main screen, click the **Back** button.
@@ -197,12 +171,9 @@ This information will be included in the payment request.
***
-
+## How to view transaction overview
-
- How to view transaction overview
-
1. On the navigation menu, click the **Back** button.
2. Select **History**.
@@ -211,22 +182,18 @@ This information will be included in the payment request.
- View transaction information **or**
- Send a copy of the transaction via email.
----
-
+***
-
-How to unbind your terminal
-
+## How to unbind your terminal
1. In the **Settings** list, go to the menu in the top left corner.
-2. Select **Security*, and insert your 4-digit PIN Code.
-3. Click **Unbind* and confirm.
+2. Select \*_Security_, and insert your 4-digit PIN Code.
+3. Click \*_Unbind_ and confirm.
-Note: Unbinding will result in a complete data erasure.
+Note: Unbinding will result in a complete data erasure.
You can bind the terminal to the same or a different account, or terminal group.
-
***
[Top of page](#)
\ No newline at end of file
From f9b93d8f8b0a69a049a1744ef611fc647504037e Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Mon, 29 Jul 2024 11:22:31 +0200
Subject: [PATCH 093/319] DOCS-4294: RMA (#3006)
---
content/point-of-sale/pos-troubleshooting.md | 36 ++++++++++++++++++--
1 file changed, 34 insertions(+), 2 deletions(-)
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index bf48c3c6b..95be5df30 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -108,7 +108,7 @@ Retrieving logs can be a helpful step to investigate an issue. You can generate
The terminal isn't working correctly, payment information isn't displayed or payment is declined.
-### Declined payment
+## Declined payment
If your payment is declined, check if you encountered any error messages.
@@ -125,7 +125,39 @@ If your payment is declined, check if you encountered any error messages.
> - Terminal serial number
> - Description of the issue
> - If available, pictures or video
->
+
+## Send back a terminal
+
+In specific cases it might be necessary to return a device to us for technical investigation, or hardware substitution.
+
+(!) Note: Only return a terminal if requested by us.
+
+### Needed details
+
+To ensure a quick and efficient return procedure, indicate the following:
+
+| MultiSafepay account ID |
+| Serial number |
+| Address for new terminal |
+| Reason for return |
+| Support ticket reference (ex. 172349)|
+
+Send this information to [pos-support@multisafepay.com](mailto:pos@multisafepay.com).
+
+### Reasons to return a terminal (temporarily)
+
+- Display broken
+- Keyboard broken
+- Printer broken
+- Scanner broken
+- Battery not working/no power
+- Payment issues (only send back on our request)
+- Chip reader broken
+- Hardware damage
+- Network not working
+- Account closure
+- Wrong terminal ordered
+
***
## Set device to developer mode
From fbd245184f371f6fb0e13257e91b7c76df2e782a Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 30 Jul 2024 17:35:00 +0200
Subject: [PATCH 094/319] DOCS-4292 Woo, CCV, 1000 (#3007)
---
content/integrations/ccv-shop.md | 1 +
content/integrations/woocommerce.md | 1 +
content/point-of-sale/pos-troubleshooting.md | 1 +
3 files changed, 3 insertions(+)
diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md
index 6be010edc..2ff4f56c8 100644
--- a/content/integrations/ccv-shop.md
+++ b/content/integrations/ccv-shop.md
@@ -41,6 +41,7 @@ ___
The activated payment methods from your MultiSafepay account appear will be registered in CCV Shop as a payment method.
+To keep the payment methods synchronised, ensure to toggle the "update payment methods" setting before pressing "update".
diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md
index 22373feab..c08e87ed2 100755
--- a/content/integrations/woocommerce.md
+++ b/content/integrations/woocommerce.md
@@ -216,6 +216,7 @@ By default, activated payment methods from your MultiSafepay account appear on t
- Cards: [All](/docs/card-payments/) (The card number field automatically detects the type of card (e.g. Visa) as the customer enters their card number.)
+Tip: in your settings, you can enable the function "group Credit cards" to show cards as a single payment method.
- Banking methods: All, except TrustPay
- <>: All
- Wallets: [Alipay](/docs/alipay/), [Apple Pay](/docs/apple-pay/), [Google Pay](/docs/google-pay/), [PayPal](/docs/paypal/)
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 95be5df30..1e01fc37e 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -117,6 +117,7 @@ If your payment is declined, check if you encountered any error messages.
| Configuration error. Try again | Send a request to |
| Card not supported | Send a request to |
| Use a different interface | Initiate the transaction again. Ask the customer to insert the card instead of doing a contactless payment. |
+| 1000 card declined | Contact support@multisafepay.com to confirm payment method configuration. |
> **Note:**
>
From f24318ca9a8dce006b9eee6892aa77379ba8cba1 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 31 Jul 2024 12:50:21 +0200
Subject: [PATCH 095/319] DOCS-4265: request to pay (#3008)
---
content/payment-methods/request-to-pay.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/payment-methods/request-to-pay.md b/content/payment-methods/request-to-pay.md
index 6315c2fc5..79b9d09bb 100644
--- a/content/payment-methods/request-to-pay.md
+++ b/content/payment-methods/request-to-pay.md
@@ -17,7 +17,7 @@ Read how Request to Pay can benefit your business on
Date: Wed, 7 Aug 2024 13:06:30 +0200
Subject: [PATCH 097/319] DOCS-4300 Fix duplicates (#3011)
---
content/payment-methods/card-payment-pricing-models.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md
index 4324663ef..cb4beba37 100644
--- a/content/payment-methods/card-payment-pricing-models.md
+++ b/content/payment-methods/card-payment-pricing-models.md
@@ -1,11 +1,11 @@
---
-title: 'Card payment pricing'
+title: 'Card payment pricing models'
category: 6298bd782d1cf4006032e765
order: 30
hidden: false
parentDoc: 62a727569e389a012f577acd
excerpt: 'Distinction between Blended and Interchange ++ pricing'
-slug: Card-payment-pricing
+slug: Card-payment-pricing-models
---
Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
From 67db9081dd87d4f4d7ead493dfcf3c34b32aed7c Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Fri, 9 Aug 2024 16:18:12 +0200
Subject: [PATCH 098/319] DOCS-4304 required fields (#3013)
---
content/payment-methods/3ds2.md | 2 ++
content/payment-methods/card-payments.md | 2 ++
content/payment-methods/cardholder-data.md | 2 +-
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/content/payment-methods/3ds2.md b/content/payment-methods/3ds2.md
index 4b49ff2b4..d45566287 100644
--- a/content/payment-methods/3ds2.md
+++ b/content/payment-methods/3ds2.md
@@ -32,6 +32,8 @@ When you collect cardholder data, you also need to collect other contextual info
See also [Cardholder data](/docs/cardholder-data).
+Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include the `email` parameter.
+
# Exemptions
To help you optimize <> and manage risk, MultiSafepay supports exemptions from 3DS2 and [strong customer authentication](/docs/psd2/) (SCA).
diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md
index 74de827b9..70c789500 100644
--- a/content/payment-methods/card-payments.md
+++ b/content/payment-methods/card-payments.md
@@ -99,6 +99,8 @@ The table below sets out the <> and < **Card direct/redirect**. Set `gateway` to `AMEX`, `MAESTRO`, `MASTERCARD`, `VISA`, or the generic `CREDITCARD`.
+ Note: Consider card-specific requirements for the [Create order request](/reference/createorder/), for example including `email` parameter for VISA payments.
+
diff --git a/content/payment-methods/cardholder-data.md b/content/payment-methods/cardholder-data.md
index dc5534875..717d22fb2 100755
--- a/content/payment-methods/cardholder-data.md
+++ b/content/payment-methods/cardholder-data.md
@@ -41,7 +41,7 @@ Set `type` to `direct`.
## 3DS2
When you collect cardholder data, you must also collect the contextual information about the customer's device (fingerprint) required for [3DS2](/docs/3ds2) authentication. The fingerprint can be created through JavaScript interfaces and methods in the customer's browser.
-
+Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include the `email` parameter.
To learn how to create a fingerprint, see Recipe – Create a customer.browser object .
From c161605fd3a9eb3b9cb449b735985a31dbfcb11c Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Fri, 9 Aug 2024 19:08:06 +0200
Subject: [PATCH 099/319] Docs 4295 (#3014)
* DOCS-4295:POS features July
* DOCS-4295 POS July / in3 B2B
---
content/payment-methods/in3.md | 25 ++++++++++++
content/point-of-sale/smartPOS-features.md | 45 +++++++++++++++++++++-
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index c055e2045..85122a9a0 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -156,6 +156,31 @@ We therefore strongly recommend **not** applying surcharges.
For more information, email
+# in3 Business
+
+We are currently in the pilot phase with in3 Business.
+To activate this payment method, email
+
+
+in3 is a Dutch <> method where customers pay in 3 installments, at no extra cost and without having to register with the Bureau Krediet Registratie (BKR). in3 guarantees <> after receiving the first installment.
+
+Read how in3 Business can benefit your webshop on multisafepay.com
+
+
+## User guide
+
+### Amount limits:
+
+- Minimum amount: 50 EUR
+- Maximum amount: 3000 EUR
+
+### Integration:
+
+For `direct` requests:
+
+- Gateway: IN3B2B
+- Required fields: First name, last name, address, email, business name, chamber of commerce number.
+
---
[block:html]
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index 0a7c61ce2..92c93505f 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -66,6 +66,10 @@ After the payment has been processed, the option to tip is displayed on the paym
+You can add an employee via **add employee** > Insert name and ID.
+
+
+
***
## How to enable print or email
@@ -122,6 +126,20 @@ After you've enabled the **Cloud mode**, the **Navigation** list appears. This f
+## How to generate closing balance
+
+At the end of a processing period, you can print an overview of total transaction amounts per payment method, and tips.
+
+Via Settings > **Closing balance**, can set the following parameters:
+
+- Default date: today, yesterday
+- Closing start hour
+- Closing end hour
+- Filter by: Company, Terminal group, Terminal
+
+
+
+***
## How to hide navigation
@@ -171,9 +189,17 @@ The QR reader is able to detect the following parameters:
***
-## How to view transaction overview
+## How to validate a card
+1. In Settings > **Payment**, enable _Allow Zero Amount_
+2. Customer completes the 0 EUR transaction.
+3. You will see the transaction with 0 amount in your transaction overview.
+
+
+***
+
+## How to view transaction overview
1. On the navigation menu, click the **Back** button.
2. Select **History**.
@@ -193,6 +219,23 @@ The QR reader is able to detect the following parameters:
Note: Unbinding will result in a complete data erasure.
You can bind the terminal to the same or a different account, or terminal group.
+## How to use an external printer
+
+Additionally to our built-in printers within some of our devices, you can use the Sunmi kitchen cloud printer via
+
+- Bluetooth
+- WiFi
+- USB connections
+
+You can set it up within your app:
+
+1. Via Settings, go to _External printer_
+2. Press _Discover_
+3. Select Connection Type
+4. List of printers available is displayed
+5. When a payment is completed, click the **printer icon** to print your receipt.
+
+
***
From 8988af17acce4015a955af2f06613feffe5c9838 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 20 Aug 2024 17:31:23 +0200
Subject: [PATCH 100/319] DOCS-4306 deeplink features (#3015)
---
content/point-of-sale/smartpos-solutions.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md
index ccae5a8fd..3cfcf1f6b 100644
--- a/content/point-of-sale/smartpos-solutions.md
+++ b/content/point-of-sale/smartpos-solutions.md
@@ -93,13 +93,15 @@ curl -X POST \
2. Initiate a payment using the URL below:
``` URL
-msp://?amount={$amount}&order_id={$order_id}&callback={$callback_url}¬ification_url={$notification_url}
+msp://?amount={$amount}&order_id={$order_id}&callback={$callback_url}&printing=true&tipping=true¬ification_url={$notification_url}
```
- `amount`: the amount specified in EUR cents.
-- `order_id`: Your unique identifier for order ID.
-- `callback_url`: This URL redirects the customer to receive payment status notifications.
+- `order_id`: your unique identifier for order ID.
+- `callback_url`: this URL redirects the customer to receive payment status notifications.
- Optionally, you can set `notification_url` to receive order payment updates notifications.
+- `tipping`: include a tip.
+- `printing`: activate printing function.
Payment status received can either be **Completed** or **Cancelled**.
From bee82203d218942fdcb37110f999917f2271c958 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 22 Aug 2024 21:54:15 +0200
Subject: [PATCH 101/319] DOCS-4308 Add closing order flow (#3016)
---
content/point-of-sale/smartPOS-features.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index 92c93505f..2f2121cf0 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -107,6 +107,18 @@ To exit the cloud mode payment screen:
***
+## How to define your closing order flow
+
+Upon completed or declined payment, the customer is redirected to a page that confirms the outcome of the payment process.
+Example: "Payment is completed successfully".
+
+You can customize this flow:
+
+1. Go to **Settings** > Payment > *Close timeout*
+2. To display the confirmation screen for a fixed amount of time, select the seconds from the dropdown. If you want the customer to proceed without any confirmation screen, for example to redirect to your own application environment, you can *deactivate* the functionality.
+
+Note: This applies to both cloud mode and native application setups.
+
## How to change the PIN code
1. Go to **Settings** > **Security**.
From 730443795f6ea82f6106df2590f54d4ed9c7e3d4 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 27 Aug 2024 17:31:03 +0200
Subject: [PATCH 102/319] DOCS-4311: Update CCV-Shop adding information about
sorting the payment methods and how to get an API Key (#3017)
---
content/integrations/ccv-shop.md | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md
index 2ff4f56c8..bce23e10c 100644
--- a/content/integrations/ccv-shop.md
+++ b/content/integrations/ccv-shop.md
@@ -11,7 +11,8 @@ excerpt: "Technical manual for MultiSafepay's free app."
# Prerequisites
-You will need a [MultiSafepay account](/docs/getting-started-guide/).
+- [MultiSafepay account](/docs/getting-started-guide/)
+- A MultiSafepay [site API key](/docs/sites#site-id-api-key-and-security-code)
# Installation and configuration
@@ -19,7 +20,7 @@ You will need a [MultiSafepay account](/docs/getting-started-guide/).
2. Go to **App store** and search for **MultiSafepay** app.
3. Once found, select the app and click in **Install** button.
4. Review and accept the permissions required by the app.
-5. Follow the instructions and fill the required fields to configure the app.
+5. Enter your [Site API key](/docs/sites#site-id-api-key-and-security-code), and fill the required fields to configure the app.
6. Click the **Install** button to complete the installation.
7. Go to **My web shop** > **Settings** > **Ordering process & stock** > **Payment methods** and confirm your payments are enabled in the section **MultiSafepay Payment Service provider**
@@ -41,7 +42,7 @@ ___
The activated payment methods from your MultiSafepay account appear will be registered in CCV Shop as a payment method.
-To keep the payment methods synchronised, ensure to toggle the "update payment methods" setting before pressing "update".
+To keep the payment methods synchronized, ensure to toggle the "update payment methods" setting before pressing "update".
@@ -74,6 +75,20 @@ To process backend refunds:
+## Sorting Payment Methods
+
+To sort the payment methods on the checkout page, you can change the order in the MultiSafepay app configuration.
+
+1. Sign in to your CCV Shop <>.
+2. Go to **App Store** > **MultiSafepay**.
+3. Click on **Edit** button.
+4. Turn on the switch field **Payment methods order**.
+5. A list of the installed payment methods will be shown.
+6. Use the arrow icons to sort the payment methods.
+7. Click on **Update** button to save the changes.
+
+📘 **Note:** Only payment methods provided by MultiSafepay can be reordered. CCV Shop does not support ordering of payment methods not provided by our app, so the order of other payment methods cannot be adjusted.
+
---
[block:html]
From 0566b571044d55595c1e6924dce1a7120302729a Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 27 Aug 2024 17:40:53 +0200
Subject: [PATCH 103/319] DOCS-4311: Update CCV-Shop adding information about
sorting the payment methods and how to get an API Key (#3018)
---
content/integrations/ccv-shop.md | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md
index bce23e10c..d1b14abd9 100644
--- a/content/integrations/ccv-shop.md
+++ b/content/integrations/ccv-shop.md
@@ -79,16 +79,24 @@ To process backend refunds:
To sort the payment methods on the checkout page, you can change the order in the MultiSafepay app configuration.
+
+How to sort payment methods
+
+
1. Sign in to your CCV Shop <>.
2. Go to **App Store** > **MultiSafepay**.
3. Click on **Edit** button.
4. Turn on the switch field **Payment methods order**.
5. A list of the installed payment methods will be shown.
-6. Use the arrow icons to sort the payment methods.
+6. Use the arrow icons to sort the payment methods.
7. Click on **Update** button to save the changes.
+
📘 **Note:** Only payment methods provided by MultiSafepay can be reordered. CCV Shop does not support ordering of payment methods not provided by our app, so the order of other payment methods cannot be adjusted.
+
+
+
---
[block:html]
From defde7ba1806cdc959dcf85dd11bb44ed00a33ed Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Tue, 27 Aug 2024 22:04:12 +0200
Subject: [PATCH 104/319] DOCS-4312 security measures terminal (#3019)
---
content/point-of-sale/hardware-setup.md | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md
index 4243e3e5c..1264b892e 100644
--- a/content/point-of-sale/hardware-setup.md
+++ b/content/point-of-sale/hardware-setup.md
@@ -19,6 +19,16 @@ slug: 'hardware-setup'
This page outlines the configuration of the hardware.
+### Security check upon delivery
+
+To ensure the secure handling of your customers' card data, it is highly recommended to inspect your terminals for any signs of tampering.
+
+Steps to follow:
+
+1. Verify that the plastic cover around the terminal box is undamaged.
+2. Compare the device you received with the image of the device you ordered.
+3. Check the weight of the terminal to ensure no unauthorized objects, such as in the battery compartment, have been added.
+
### Connect to a Wi-Fi network
To connect to a Wi-Fi network:
From 87d2d0fa108816a10e1a90e7d50fda3b367e33c4 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 29 Aug 2024 17:32:04 +0200
Subject: [PATCH 105/319] DOCS-4315: POS Troubleshooting addition and closing
order flow (#3020)
---
content/point-of-sale/pos-troubleshooting.md | 55 +++++++++++++-------
content/point-of-sale/smartPOS-features.md | 7 +--
2 files changed, 39 insertions(+), 23 deletions(-)
diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md
index 1e01fc37e..77ff7ad8c 100644
--- a/content/point-of-sale/pos-troubleshooting.md
+++ b/content/point-of-sale/pos-troubleshooting.md
@@ -127,25 +127,52 @@ If your payment is declined, check if you encountered any error messages.
> - Description of the issue
> - If available, pictures or video
-## Send back a terminal
+
+***
+# Set device to developer mode
+
+Note: once a device is converted to developer mode, it cannot be reverted. This means it will no longer be PCI compliant.
+
+1. Request TUSN code from Sumni.
+2. Navigate to Settings > System > About
+3. Scroll down to the **TUSN** button
+4. Press the TUSN button 8 times (alternative: SV button)
+5. Enter the code received from Sunmi.
+ The 4-digit code is valid for 24 hours.
+
+
+# Tampering alarm
+
+If your device has been blocked due to the error on screen "Attacked! Please contact your service provider", you can reach out to Sunmi for support.
+
+1. On the Sunmi page , go to *Contact Technical Support* > Create new request.
+2. Select **P Serial Tamper** and follow the steps in the Sunmi environment.
+Tip: prepare a picture of your device to attach to the form.
+3. Depending on the error code, you will receive a code to unblock your device.
+
+Once the terminal is rebooted, the device is ready for use again.
+If the alarm reoccurs within a short time frame, a sensor might be damaged. You can contact us for assistance via [pos-support@multisafepay.com](mailto:pos@multisafepay.com).
+
+
+# Send back a terminal
In specific cases it might be necessary to return a device to us for technical investigation, or hardware substitution.
(!) Note: Only return a terminal if requested by us.
-### Needed details
+## Needed details
To ensure a quick and efficient return procedure, indicate the following:
-| MultiSafepay account ID |
-| Serial number |
-| Address for new terminal |
-| Reason for return |
-| Support ticket reference (ex. 172349)|
+- MultiSafepay account ID
+- Serial number
+- Address for new terminal
+- Reason for return
+- Support ticket reference (ex. 172349)
Send this information to [pos-support@multisafepay.com](mailto:pos@multisafepay.com).
-### Reasons to return a terminal (temporarily)
+## Reasons to return a terminal (temporarily)
- Display broken
- Keyboard broken
@@ -160,18 +187,6 @@ Send this information to [pos-support@multisafepay.com](mailto:pos@multisafepay.
- Wrong terminal ordered
-***
-## Set device to developer mode
-
-Note: once a device is converted to developer mode, it cannot be reverted. This means it will no longer be PCI compliant.
-
-1. Request TUSN code from Sumni.
-2. Navigate to Settings > System > About
-3. Scroll down to the **TUSN** button
-4. Press the TUSN button 8 times (alternative: SV button)
-5. Enter the code received from Sunmi.
- The 4-digit code is valid for 24 hours.
-
***
[Top of page](#)
\ No newline at end of file
diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md
index 2f2121cf0..20228c632 100644
--- a/content/point-of-sale/smartPOS-features.md
+++ b/content/point-of-sale/smartPOS-features.md
@@ -109,13 +109,14 @@ To exit the cloud mode payment screen:
## How to define your closing order flow
-Upon completed or declined payment, the customer is redirected to a page that confirms the outcome of the payment process.
-Example: "Payment is completed successfully".
+Upon completed or declined payment, the customer can be redirected to a page that confirms the outcome of the payment process, OR go back automatically to your app.
+Example message on the confirmation screen: "Payment is completed successfully".
You can customize this flow:
1. Go to **Settings** > Payment > *Close timeout*
-2. To display the confirmation screen for a fixed amount of time, select the seconds from the dropdown. If you want the customer to proceed without any confirmation screen, for example to redirect to your own application environment, you can *deactivate* the functionality.
+2. To display the confirmation screen for a fixed amount of time, select the seconds from the dropdown. This is the timeout of the "Completed" page.
+If you select *disabled*, there is no automatic timeout, and you will need to press *Close Order* to close the confirmation screen and return to your own application.
Note: This applies to both cloud mode and native application setups.
From 2fc0ef372a9499ccafcedb4a9e21836a15120bcd Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Thu, 29 Aug 2024 18:41:55 +0200
Subject: [PATCH 106/319] DOCS-4316: API key POS & Acc Exp group (#3021)
---
content/accounting/reports.md | 2 +-
content/point-of-sale/smartpos-activation.md | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/content/accounting/reports.md b/content/accounting/reports.md
index 65563b2c6..47ae2aa9f 100644
--- a/content/accounting/reports.md
+++ b/content/accounting/reports.md
@@ -49,7 +49,7 @@ The accountant export lists all successful incoming and outgoing transactions, i
| Paymenttype | A MultiSafepay fee, or the payment method |
| Description 2-4 | Descriptions of the order |
| Tr status | The <> |
-| Ms description | The site name |
+| Ms description | The site name, or name of the terminal group |
| Mt merchanttransactionid | Your unique identifier for the order |
| Mt cust firstname | The customer’s first name |
| Mt cust lastname | The customer’s last name |
diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md
index 296a1303a..36ba485cd 100644
--- a/content/point-of-sale/smartpos-activation.md
+++ b/content/point-of-sale/smartpos-activation.md
@@ -55,7 +55,7 @@ Install the MultiSafepay payment app on your terminal to scan the QR code.
**Note:** You can edit and link various terminals if you have already created a group.
-How to edit a group
+## How to edit a group
1. Sign in to your MultiSafepay dashboard .
2. Go to **Devices** > **Terminals**.
@@ -63,9 +63,12 @@ Install the MultiSafepay payment app on your terminal to scan the QR code.
4. To edit an existing group:
- Click the ** edit** icon next to the group name.
- Fill in the **name** field.
-5. In the **<>** field, click the **dropdown** icon and select the relevant MCC code.
+5. In the **Category** field, click the **dropdown** icon and select the relevant category code.
6. Click **Create**.
+Tip: You can view your API key via *Manage groups* > API key.
+
+
---
From e6900dbc3d2c3e105c4d4d7c5d64e7fff6dd52df Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Fri, 30 Aug 2024 13:43:05 +0200
Subject: [PATCH 107/319] DOCS-4317: Reporting troubleshooting section (#3022)
---
content/accounting/reports.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/content/accounting/reports.md b/content/accounting/reports.md
index 47ae2aa9f..c01af14a4 100644
--- a/content/accounting/reports.md
+++ b/content/accounting/reports.md
@@ -6,6 +6,10 @@ hidden: false
slug: 'reports'
---
+Reports can be generated via your Merchant Dashboard, or received in a [subscription](/docs/reports#set-up-automated-reports).
+
+Note: You can only retrieve data from approximately two years back.
+
# Accountant export
The accountant export lists all successful incoming and outgoing transactions, including the:
@@ -451,6 +455,16 @@ To identify transactions in reports by payment method, use the following N-codes
+
+## Troubleshooting
+
+### Data range not applied
+
+In some cases, the custom range selected for your report is not applied immediately. This can usually be solved by either accessing from a different browser, or deleting your cookies / cache data.
+
+### Payout report not generated
+
+Note: The payout report is only available for automated withdrawals.
---
[block:html]
From b00634ee1f4e67e3a89f23e9faf319d1031398bc Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Sun, 1 Sep 2024 09:49:09 +0200
Subject: [PATCH 108/319] DOCS-4318: Amount limits in3 (#3023)
---
content/payment-methods/in3.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 85122a9a0..3111d395f 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -172,7 +172,7 @@ Read how in3 Business can benefit your webshop on
+How to disable payment methods
-You can disable payment methods in the **Payment method settings list**. The dot next to the payment methods is green when enabled, and grey when disabled.
+You can enable and disable payment methods in the **Payment method settings list**. The dot next to the payment methods is green when enabled, and grey when disabled.
To disable payment methods for specific languages, follow these steps:
From 7becb18713af2dc662fb980a4e7661df2cba09c4 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Sun, 1 Sep 2024 10:13:07 +0200
Subject: [PATCH 110/319] DOCS-4310: Coupon refunds (#3025)
---
content/integrations/lightspeed.md | 2 +-
content/payment-methods/gift-cards.md | 9 +++++++++
content/payment-methods/in3.md | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/content/integrations/lightspeed.md b/content/integrations/lightspeed.md
index b83a6f7f8..df19b6730 100755
--- a/content/integrations/lightspeed.md
+++ b/content/integrations/lightspeed.md
@@ -289,7 +289,7 @@ If no specific rule is set for a country, the **Default** order is used.
-How to disable payment methods
+How to enable payment methods
You can enable and disable payment methods in the **Payment method settings list**. The dot next to the payment methods is green when enabled, and grey when disabled.
diff --git a/content/payment-methods/gift-cards.md b/content/payment-methods/gift-cards.md
index ef961ca21..a79d05c1e 100644
--- a/content/payment-methods/gift-cards.md
+++ b/content/payment-methods/gift-cards.md
@@ -85,6 +85,7 @@ The table below sets out the <> and <
+
### Testing
To test gift card payments, see Testing payment methods - [Prepaid cards](/docs/testing#prepaid-cards).
@@ -149,6 +150,14 @@ VVV Cadeaukaart cards can sometimes throw an error where the credit balance appe
If a customer completes a payment and receives this error message, advise them to wait for 1 hour for a confirmation email before trying again to avoid placing two orders.
+## Refunds
+
+Transactions paid partially by a gift card, and partially by a payment method follow the below rules:
+
+1. Refund amounts lower than 5 EUR are always refunded to the payment method.
+2. Refund priority is: payment method first, rest of amount refunded to the coupon
+
+
## Webshop Giftcard
Webshop Giftcard no longer offers [open-loop gift cards](#closed-loop-vs-open-loop-cards).
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 3111d395f..4507d4ac4 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -106,7 +106,7 @@ Different billing and shipping addresses are supported.
## Amount limits
- Minimum amount: 50 EUR
-- Maximum amount: 3000 EUR
+- Maximum amount: 5000 EUR
You can adjust these limits in the <> of our [ready-made integrations](/docs/our-integrations/) to show or hide in3 on your checkout page depending on the order value.
From af254ee75c9eca9a2b95e0402190f088a5774386 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Mon, 9 Sep 2024 11:18:10 +0200
Subject: [PATCH 111/319] DOCS-4320:Add information in3 B2B (#3028)
---
content/payment-methods/in3.md | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 4507d4ac4..d0de025bc 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -171,8 +171,8 @@ Read how in3 Business can benefit your webshop on Apple Pay's domain & IP addresses
- When using a protected environment during testing, ensure you have **whitelisted **our IP ranges. You can mention this need to our support team via [info@multisafepay.com](mailto:info@multisafepay.com) who will send the information to you.
- Check if the issue occurs via the** redirect solution** as well. This result is valuable information when contacting [info@multisafepay.com](mailto:info@multisafepay.com).
From 6aea84efb6657c81af81f1c64c8990e1a5b91ad9 Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Mon, 9 Sep 2024 17:26:45 +0200
Subject: [PATCH 113/319] DOCS-4307: Review Sofort for supported payments
methods for recurring payments
---
content/payment-management/recurring-payments.md | 3 ++-
content/payment-methods/card-payment-pricing-models.md | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/content/payment-management/recurring-payments.md b/content/payment-management/recurring-payments.md
index 9c95721d1..e18d94342 100755
--- a/content/payment-management/recurring-payments.md
+++ b/content/payment-management/recurring-payments.md
@@ -30,9 +30,10 @@ For both initial and subsequent payments:
For initial payments then subsequent payments via direct debit:
- Bancontact - [Bancontact WIP](/docs/bancontact#bancontact-wip-service)
- iDEAL
-- Sofort
❗️ **Note:** For subsequent payments to be successful via direct debit, ensure that direct debit [is activated in your MultiSafepay account](/docs/direct-debit/#activation).
+❗️ **Note:** Sofort is no longer available for new merchants.
+
✅ **Tip:** Test every payment method flow you intend to use.
diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md
index cb4beba37..ecae3c773 100644
--- a/content/payment-methods/card-payment-pricing-models.md
+++ b/content/payment-methods/card-payment-pricing-models.md
@@ -6,7 +6,7 @@ hidden: false
parentDoc: 62a727569e389a012f577acd
excerpt: 'Distinction between Blended and Interchange ++ pricing'
slug: Card-payment-pricing-models
----
+---
Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
From d0ebe5f5846d5971839e2c7208723f7f0970ba83 Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Mon, 9 Sep 2024 17:31:16 +0200
Subject: [PATCH 114/319] DOCS-4307:Review Sofort for supported payments
methods for recurring payments
---
content/payment-management/recurring-payments.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/payment-management/recurring-payments.md b/content/payment-management/recurring-payments.md
index e18d94342..1f4b7dc7a 100755
--- a/content/payment-management/recurring-payments.md
+++ b/content/payment-management/recurring-payments.md
@@ -32,7 +32,7 @@ For initial payments then subsequent payments via direct debit:
- iDEAL
❗️ **Note:** For subsequent payments to be successful via direct debit, ensure that direct debit [is activated in your MultiSafepay account](/docs/direct-debit/#activation).
-❗️ **Note:** Sofort is no longer available for new merchants.
+❗️ **Note:** For subsequent payments to be successful via direct debit, ensure that direct debit [is activated in your MultiSafepay account](/docs/direct-debit/#activation).
✅ **Tip:** Test every payment method flow you intend to use.
From f94f283a93221445b84a5fc7aedd10b975f7581b Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 10 Sep 2024 09:04:52 +0200
Subject: [PATCH 115/319] DOCS-4319: General improvements over the Magento 2
documentation page (#3026)
---
content/integrations/magento-2.md | 182 +++---------------------------
1 file changed, 15 insertions(+), 167 deletions(-)
diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md
index d8ae395fd..edc219fa4 100755
--- a/content/integrations/magento-2.md
+++ b/content/integrations/magento-2.md
@@ -17,17 +17,13 @@ slug: 'magento-2'
-> ⚠️ Action required
->
-> If you are still using the deprecated plugin, we recommend [upgrading to the latest version](/docs/magento-2#upgrades) as soon as possible.
-
Our plugin is supported by a certified Magento 2 Solution Specialist and receives regular updates for the latest features from Magento and MultiSafepay.
# Prerequisites
- [MultiSafepay account](/docs/getting-started-guide/)
-- Magento Open Source version 2.3.x & 2.4.x **or** Adobe Commerce version 2.3.x & 2.4.x (For GraphQL, only Magento Open Source versions 2.4.x are supported)
-- PHP 7.1+
+- Magento Open Source version 2.3.6+ & 2.4.x **or** Adobe Commerce version 2.4.x (For GraphQL, only Magento Open Source versions 2.4.x are supported)
+- PHP 7.2+
# Modules
@@ -37,15 +33,16 @@ Our plugin is supported by a certified Magento 2 Solution Specialist and receive
The plugin consists of several Magento modules:
-| Module | Description |
-|---|---|
-| Multisafepay-magento2-core | Provides core functionalities |
-| Multisafepay-magento2-frontend | Enables payment <> in the Magento checkout |
-| Multisafepay-magento2-adminhtml | Enables/disables payment gateways, and changes settings in the Magento backend |
-| Multisafepay-magento2-msi | Handles stock when MSI is enabled |
-| Multisafepay-magento2-catalog-inventory | Handles stock when MSI is disabled |
-| Multisafepay-magento2 | Meta package that installs all the above |
-| Multisafepay-magento2-graphql | For GraphQL support, extends and adds GraphQL queries and mutations |
+| Module | Description |
+|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
+| Multisafepay/magento2-core | Provides core functionalities |
+| Multisafepay/magento2-frontend | Enables payment <> in the Magento checkout |
+| Multisafepay/magento2-adminhtml | Enables/disables payment gateways, and changes settings in the Magento backend |
+| Multisafepay/magento2-msi | Handles stock when MSI is enabled |
+| Multisafepay/magento2-catalog-inventory | Handles stock when MSI is disabled |
+| Multisafepay/magento2 | Meta package that installs all the above |
+| Multisafepay/magento2-graphql | For GraphQL support, extends and adds GraphQL queries and mutations |
+| Multisafepay/hyva-checkout | Adds support for Hyvä Checkout |
@@ -141,8 +138,8 @@ The plugin is compatible with most Magento checkouts.
By default, MagePlaza One Step checkout is supported.
@@ -394,16 +391,6 @@ To get a payment link for a customer, follow these steps:
{{/depend}}
```
-**Magento 2.3.4+**
-
-The email template syntax is different for Magento 2.3.4+. Add this code snippet instead:
-
-```
-{{depend order.payment.additional_information.payment_link}}
-Pay now with {{var order.payment.additional_information.method_title}}
-{{/depend}}
-```
-
**Backend emails**
To add payment links to order confirmation emails from your Magento **backend**, you can use the `payment_link` variable and an `if/else` statement in the template.
@@ -618,145 +605,6 @@ You can update the plugin via
-## Upgrades
-If you are still using the deprecated plugin , we recommend upgrading to the latest version as soon as possible.
-
-
-Why upgrade?
-
-
-The new plugin features code improvements, and unit and integration testing. It is built on top of the Magento payment provider <> structure. Some payment methods now skip the MultiSafepay payment page, which increases <>.
-
-We support most Magento functionalities. For any questions, email
-
-**New features**
-
-- Improved:
- - Magento backend configuration, including support information
- - Translations
- - Error handling, and event and error logs
-- Documentation for payment methods
-- Modular setup for greater installation flexibility
-- PWA (GraphQL) endpoints
-- Support for Magento Vault and Instant Purchase (replace [recurring payments](/docs/recurring-payments/))
-
-**Configuration fields**
-
-We have removed or altered the following configuration fields:
-
-_Emailing invoices to customers_
-
-This feature now uses a Magento core configuration field: **Sales** > **Sales emails** > **Invoice** > **Enabled**.
-
-_Order statuses and flow_
-
-As of version 2.16, you can assign the following MultiSafepay statuses to a Magento order status:
-
-- Cancelled
-- Chargeback
-- Declined
-- Expired
-- Initialized
-- Partial refunded
-- Refunded
-- Reserved
-- Uncleared
-- Void
-
-We have updated the order status flow from version 2.5.0:
-
-- All new orders first receive **Pending** status.
-- When redirecting the customer, the status changes to **Pending payment**, until the customer reaches your success page.
-- If the payment is succesfully received at this point, the status changes to **Processing**.
-- Around the same time, the webhook is triggered and the invoice is created. The webhook changes the status to **Processing** (if it isn't already).
-- For bank transfers, the status doesn't change to **Pending payment**, therefore the order isn't automatically cancelled after a set period of time to give the customer more time to pay.
-
-_Payment links_
-
-Payment links are now generated automatically.
-
-_Reset gateway_
-
-When creating an order in your Magento 2 backend, you can now select the MultiSafepay payment <> instead. The payment gateway displays all active payment gateways to the customer based on the site settings in your MultiSafepay account.
-
-To enable or disable the gateway on your checkout page, we have added a **Can use checkout** configuration field.
-
-_Keep cart alive_
-
-The cart is now always kept alive when the customer clicks **Back** on the MultiSafepay payment page.
-
-_Checkout_
-
-We have changed the default payment flow from [redirect to direct](/reference/introduction#direct-vs-redirect) for:
-
-- AfterPay, E-Invoicing, in3, Pay After Delivery
-- Direct Debit, Request to Pay
-
-We have included extra fields in the checkout for these payment methods. If you use a custom checkout, you must account for the iDEAL <> checkout field and the new checkout fields for these payment methods.
-
-Alternatively, you can disable additional checkout fields for these payment methods and change the flow back to redirect. Go to **Stores** > **Configuration** > **MultiSafepay** > **Payment gateways** > **Gateway** > **Additional checkout fields**.
-
-
-
-
-How to delete the deprecated plugin
-
-
-Make sure you finish processing all orders created in the deprecated plugin before you delete it. The deprecated payment gateways are no longer available in Magento after deletion.
-
-You can refund transactions processed through the deprecated plugin in your MultiSafepay dashboard, but **not** from your Magento 2 backend.
-
-The way you delete the deprecated plugin depends on the way you installed it:
-
-**Composer**
-
-There are two options:
-
-Option 1: Remove the code base
-
-```
-composer remove multisafepay/magento2msp
-php bin/magento setup:upgrade
-```
-
-Option 2: Do a complete uninstall
-
-This includes removing database entries and configuration.
-```
-bin/magento module:uninstall MultiSafepay_Connect --remove-data --clear-static-content
-php bin/magento setup:upgrade
-```
-
-_Backups_
-
-You can back up certain parts of the plugin by adding the following parameters:
-
-- `--backup-code`
-- `--backup-media`
-- `--backup-db`
-
-For information about all parameters, see Magento - Uninstall modules .
-If you want a field from the deprecated plugin back, email
-
-**app/code**
-
-1. Disable the plugin:
- ```
- php bin/magento module:disable --clear-static-content
- php bin/magento setup:upgrade
- ```
-2. To remove the code base, delete the app/code/MultiSafepay/Connect directory:
- ```
- cd app/code/MultiSafepay
- rm -rf Connect
- ```
-
-**Marketplace**
-
-If you installed the plugin via the Magento Marketplace, go to **System** > **Web setup wizard** > **Extension manager** > **Update / uninstall**.
-
-
-
---
## Troubleshooting
@@ -766,7 +614,7 @@ If you installed the plugin via the Magento Marketplace, go to **System** > **We
### Order Status Update
-If you experience issues with order statuses not being updated correctly (e.g., incongruence between pending and processing), this might happen randomly and be difficult to replicate. This is generally caused by third-party solutions interfering in the order processing flow and the observer being based on a different instance of the order object.
+If you experience issues with order statuses not being updated correctly (e.g., incongruent pending and processing), this might happen randomly and be difficult to replicate. This is generally caused by third-party solutions interfering in the order processing flow and the observer being based on a different instance of the order object.
_Tip_: This issue might appear after upgrading to our latest plugin version, possibly due to faster notification processing times surfacing an already existing update conflict.
From 8370755c3ec19ec85195d77c6a16c6451ef0a02d Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 10 Sep 2024 12:31:46 +0200
Subject: [PATCH 116/319] =?UTF-8?q?DOCS-4307:=20Review=20Sofort=20for=20su?=
=?UTF-8?q?pported=20payment=20methods=20for=20recurring=20=E2=80=A6=20(#3?=
=?UTF-8?q?031)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
content/payment-management/recurring-payments.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/content/payment-management/recurring-payments.md b/content/payment-management/recurring-payments.md
index 1f4b7dc7a..55ddd0a9b 100755
--- a/content/payment-management/recurring-payments.md
+++ b/content/payment-management/recurring-payments.md
@@ -32,8 +32,6 @@ For initial payments then subsequent payments via direct debit:
- iDEAL
❗️ **Note:** For subsequent payments to be successful via direct debit, ensure that direct debit [is activated in your MultiSafepay account](/docs/direct-debit/#activation).
-❗️ **Note:** For subsequent payments to be successful via direct debit, ensure that direct debit [is activated in your MultiSafepay account](/docs/direct-debit/#activation).
-
✅ **Tip:** Test every payment method flow you intend to use.
From 7356e95d20fcafd6b59ff776f553bc3bd2fa47c3 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 11 Sep 2024 11:07:45 +0200
Subject: [PATCH 117/319] Docs 4325 (#3032)
---
content/payment-methods/3ds2.md | 2 +-
content/payment-methods/card-payments.md | 2 +-
content/payment-methods/cardholder-data.md | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/content/payment-methods/3ds2.md b/content/payment-methods/3ds2.md
index d45566287..4f9730863 100644
--- a/content/payment-methods/3ds2.md
+++ b/content/payment-methods/3ds2.md
@@ -32,7 +32,7 @@ When you collect cardholder data, you also need to collect other contextual info
See also [Cardholder data](/docs/cardholder-data).
-Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include the `email` parameter.
+Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include correct information in the `email` or `phone` parameter.
# Exemptions
diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md
index 70c789500..f52c1703c 100644
--- a/content/payment-methods/card-payments.md
+++ b/content/payment-methods/card-payments.md
@@ -99,7 +99,7 @@ The table below sets out the <> and < **Card direct/redirect**. Set `gateway` to `AMEX`, `MAESTRO`, `MASTERCARD`, `VISA`, or the generic `CREDITCARD`.
- Note: Consider card-specific requirements for the [Create order request](/reference/createorder/), for example including `email` parameter for VISA payments.
+ Note: Consider card-specific requirements for the [Create order request](/reference/createorder/), for example including correct details in the `email` or `phone` parameter for VISA payments.
diff --git a/content/payment-methods/cardholder-data.md b/content/payment-methods/cardholder-data.md
index 717d22fb2..be80d78d4 100755
--- a/content/payment-methods/cardholder-data.md
+++ b/content/payment-methods/cardholder-data.md
@@ -41,7 +41,7 @@ Set `type` to `direct`.
## 3DS2
When you collect cardholder data, you must also collect the contextual information about the customer's device (fingerprint) required for [3DS2](/docs/3ds2) authentication. The fingerprint can be created through JavaScript interfaces and methods in the customer's browser.
-Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include the `email` parameter.
+Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include correct information in the `email` or `phone` parameter.
To learn how to create a fingerprint, see Recipe – Create a customer.browser object .
From 3334600a4c8b3b83e9c6358a7e319bdd557462a1 Mon Sep 17 00:00:00 2001
From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com>
Date: Wed, 11 Sep 2024 11:33:45 +0200
Subject: [PATCH 118/319] Docs 4324 (#3034)
---
content/integrations/webshop-access.md | 2 +-
content/payment-methods/3ds2.md | 9 ++++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md
index 2a8e32895..8647a4880 100644
--- a/content/integrations/webshop-access.md
+++ b/content/integrations/webshop-access.md
@@ -45,7 +45,7 @@ With the results of these checks, reach out to us via [info@multisafepay.com](ma
Tip: Check our status page for general updates or notifications.
-Further checks for for plugin integrations:
+Further checks for plugin integrations:
- Set your backoffice to debug mode.
- Send us the system report / error logs.
diff --git a/content/payment-methods/3ds2.md b/content/payment-methods/3ds2.md
index 4f9730863..723dc7f6a 100644
--- a/content/payment-methods/3ds2.md
+++ b/content/payment-methods/3ds2.md
@@ -6,6 +6,13 @@ hidden: false
parentDoc: 62a727569e389a012f577acd
slug: '3ds2'
---
+
+
+>⚠️ Note:
+>
+> Due to scheme regulations, transactions created with payment method VISA must include correct customer details in the `email` / `phone` parameter.
+> See also [Create Order](/reference/createorder/) > customer object.
+
# Authentication
3D Secure 2.0 (3DS2) is an authentication protocol that <> use to verify cardholder identity for online credit and debit card payments. Under the [PSD2](/docs/psd2/), MultiSafepay is required to apply it to **all** Europe-based card payments, and we enable it by default for non-EU payments as well.
@@ -32,7 +39,7 @@ When you collect cardholder data, you also need to collect other contextual info
See also [Cardholder data](/docs/cardholder-data).
-Note: Some details are required to comply with scheme regulations. For exmaple, transactions created with payment method VISA must include correct information in the `email` or `phone` parameter.
+Note: Some details are required to comply with scheme regulations. For example, transactions created with payment method VISA must include the `email` parameter.
# Exemptions
From 2ee3b66ff78c16b3f770ff2552e998355005e6e2 Mon Sep 17 00:00:00 2001
From: Miguel-MultiSafepay
<104830395+Miguel-MultiSafepay@users.noreply.github.com>
Date: Thu, 12 Sep 2024 13:50:15 +0200
Subject: [PATCH 119/319] DOCS-4327: Release of 1.4.1 of the OpenCart 4 plugin
(#3035)
---
content/integrations/opencart-4.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/integrations/opencart-4.md b/content/integrations/opencart-4.md
index 94c3f2873..cbffe1b02 100644
--- a/content/integrations/opencart-4.md
+++ b/content/integrations/opencart-4.md
@@ -11,7 +11,7 @@ slug: 'opencart-4'
\n\n"
}
[/block]
From 8b74ad92ef01dffe4d926b6d7ef8d3210089c5b9 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 17 Sep 2024 13:06:09 +0200
Subject: [PATCH 130/319] DOCS-4335: Fix glossary element not showing pop-up
(backend) (#3041)
---
content/integrations/opencart-4.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/opencart-4.md b/content/integrations/opencart-4.md
index cbffe1b02..b833c92df 100644
--- a/content/integrations/opencart-4.md
+++ b/content/integrations/opencart-4.md
@@ -161,7 +161,7 @@ You can't refund more than the original amount in your backend.
How to process backend refunds
-1. Sign in to your OpenCart 4 .
+1. Sign in to your OpenCart 4 <>.
2. Go to **Orders** > **Order view button** > **Order history panel**.
3. Click the **Refund** button.
This only appears if the <> is **Completed** or **Shipped**.
From 3903d97682d4debe99d03938e90bc5b97d7824ae Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 17 Sep 2024 13:51:23 +0200
Subject: [PATCH 131/319] DOCS-4341: Format issues at checkout > multiple
payment methods (#3049)
---
content/checkout/multiple.md | 179 +++++++++++++++++++----------------
1 file changed, 96 insertions(+), 83 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index d860c2770..4fa4350f3 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -32,7 +32,7 @@ This technical manual is for integrating a payment component using multiple paym
```
3. Add the DOM element for the component's UI in the `` of your checkout page:
- ```html
+ ```html
```
@@ -82,92 +82,105 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
};
```
-
-Properties
-
-| Key | Required | Value |
-|------------------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| amount | Yes | The value of the order. Format: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
-| currency | Yes | The currency of the order. Format: ISO-4217 , e.g., `EUR`. |
-| customer.country | No | The customer's country code. Used to validate the availability of the payment method. Format: ISO-3166-1 alpha-2 , e.g., `NL`. |
-| customer.locale | No | The customer's language. Sets the language of the payment component UI. Format: ISO 639 Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
-| customer.reference | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
-| payment_options.settings.connect.group_cards | No | Groups all card payment methods as a single option in the list of payment methods. Format: Boolean Default: `false`. |
-| payment_options.settings.connect.qr | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. Default: `true`. |
-| recurring.model | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
-| template.settings.embed_mode | No | A template designed to blend in seamlessly with your ecommerce platform. Format: Boolean. |
-
-
-
-
-
-How to process recurring payments
-
-
-[Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
-
-Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+ Properties
+
+ | Key | Required | Value |
+ |----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
+ | `currency` | Yes | The currency of the order. **Format**: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g., `EUR`. |
+ | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g., `NL`. |
+ | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: [ISO 639](https://en.wikipedia.org/wiki/ISO_639). Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+ | `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
+ | `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
+ | `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
+ | `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+ | `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
+
+
+
+
-To process recurring payments in your payment component:
+
-- Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+ How to process recurring payments
- ```JavaScript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- template : {
- settings: {
- embed_mode: true
- }
- }
- };
- const recurringData = {
- "model": "cardOnFile",
- "tokens": [
- {
- "token": "AvqeOjgdm8A",
- "code": "IDEAL",
- "display": "xxxxxxxxxNL81PSTB0000012345",
- "bin": null,
- "name_holder": "Schilder",
- "expiry_date": "",
- "expired": 0,
- "last4": null,
- "model": "cardOnFile"
- },
- {
- "token": "BcEWsknWsYg",
- "code": "MASTERCARD",
- "display": "Card xxxx xxxx xxxx 4444",
- "bin": 555555,
- "name_holder": "Holder",
- "expiry_date": 2412,
- "expired": 0,
- "last4": 4444,
- "model": "cardOnFile"
- }
- ]
- };
- ```
-
-> ✅ Success
->
-> Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
-
-Recurring payments are supported for all card payments.
-
-📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
-
-To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
-
-
+ [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+
+ Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+ To process recurring payments in your payment component:
+
+ - Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+
+ ```JavaScript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template : {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+ const recurringData = {
+ "model": "cardOnFile",
+ "tokens": [
+ {
+ "token": "AvqeOjgdm8A",
+ "code": "IDEAL",
+ "display": "xxxxxxxxxNL81PSTB0000012345",
+ "bin": null,
+ "name_holder": "Schilder",
+ "expiry_date": "",
+ "expired": 0,
+ "last4": null,
+ "model": "cardOnFile"
+ },
+ {
+ "token": "BcEWsknWsYg",
+ "code": "MASTERCARD",
+ "display": "Card xxxx xxxx xxxx 4444",
+ "bin": 555555,
+ "name_holder": "Holder",
+ "expiry_date": 2412,
+ "expired": 0,
+ "last4": 4444,
+ "model": "cardOnFile"
+ }
+ ]
+ };
+ ```
+
+ > ✅ Success
+ >
+ > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+ Recurring payments are supported for all card payments.
+
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+
📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
From b5c4917005b52c3d380a6b7967104d1240269453 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 17 Sep 2024 14:17:15 +0200
Subject: [PATCH 132/319] Docs 4341 (#3050)
* DOCS-4341: Format issues at checkout > multiple payment methods
* DOCS-4341: Format issues at checkout > multiple payment methods
* Automated external URL lint.
---------
Co-authored-by: github-actions[bot]
---
content/checkout/multiple.md | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 4fa4350f3..7faaa3173 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -85,17 +85,20 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
Properties
+
+
| Key | Required | Value |
|----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
- | `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
- | `currency` | Yes | The currency of the order. **Format**: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g., `EUR`. |
- | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g., `NL`. |
- | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: [ISO 639](https://en.wikipedia.org/wiki/ISO_639). Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
- | `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
- | `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
- | `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
- | `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
- | `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
+ | `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
+ | `currency` | Yes | The currency of the order. **Format**: ISO-4217 , e.g., `EUR`. |
+ | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: ISO-3166-1 alpha-2 , e.g., `NL`. |
+ | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: ISO 639 . Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+ | `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
+ | `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
+ | `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
+ | `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+ | `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
+
-
-
+| Key | Required | Value |
+|----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
+| `currency` | Yes | The currency of the order. **Format**: ISO-4217 , e.g., `EUR`. |
+| `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: ISO-3166-1 alpha-2 , e.g., `NL`. |
+| `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: ISO 639 . Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+| `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
+| `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
+| `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
+| `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+| `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
-
- How to process recurring payments
-
- [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
- Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+
+
+
- To process recurring payments in your payment component:
- - Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
-
+
+How to process recurring payments
+
+[Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+
+To process recurring payments in your payment component:
+ - Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+
+
+
```JavaScript
const orderData = {
currency: 'EUR',
@@ -171,17 +163,19 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
};
```
- > ✅ Success
- >
- > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
- Recurring payments are supported for all card payments.
+ > ✅ Success
+ >
+ > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
- 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+ Recurring payments are supported for all card payments.
- To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+
-
📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
From d736d2a31acbdcd4ba3320e1e4f541a6eb2d0728 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 17 Sep 2024 16:24:41 +0200
Subject: [PATCH 135/319] Docs 4341 (#3053)
* DOCS-4341: Format issues at checkout > multiple payment methods
* DOCS-4341: Format issues at checkout > multiple payment methods
* DOCS-4341: Format issues at checkout > multiple payment methods
* DOCS-4341: Format issues at checkout > multiple payment methods
* DOCS-4341: Format issues at checkout > multiple payment methods
---
content/checkout/multiple.md | 98 +++++++++++++++++++++++++++---------
1 file changed, 75 insertions(+), 23 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index b974004d4..117d10676 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -87,37 +87,89 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
-| Key | Required | Value |
-|----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
-| `currency` | Yes | The currency of the order. **Format**: ISO-4217 , e.g., `EUR`. |
-| `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: ISO-3166-1 alpha-2 , e.g., `NL`. |
-| `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: ISO 639 . Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
-| `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
-| `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
-| `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
-| `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
-| `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
+ | Key | Required | Value |
+ |----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
+ | `currency` | Yes | The currency of the order. **Format**: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g., `EUR`. |
+ | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g., `NL`. |
+ | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: [ISO 639](https://en.wikipedia.org/wiki/ISO_639). Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+ | `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
+ | `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
+ | `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
+ | `recurring.model` | Yes, for recurring payments | The [recurring model](/docs/recurring-payments/). |
+ | `template.settings.embed_mode` | No | A template designed to blend in seamlessly with your ecommerce platform. **Format**: Boolean. |
-
-
-
-
+
+
-
-How to process recurring payments
-
+
+ How to process recurring payments
+
-[Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
+ [Recurring payments](/docs/recurring-payments/) is a solution that lets you store a customer’s payment details as a secure, encrypted token.
-Upon subsequent payments, customers can select their stored payment details and pay with a single click.
+ Upon subsequent payments, customers can select their stored payment details and pay with a single click.
-To process recurring payments in your payment component:
- - Add the `cardOnFile` recurring model
- - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+ To process recurring payments in your payment component:
+ - Add the `cardOnFile` recurring model
+ - Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
+ ```javascript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template : {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+ const recurringData = {
+ "model": "cardOnFile",
+ "tokens": [
+ {
+ "token": "AvqeOjgdm8A",
+ "code": "IDEAL",
+ "display": "xxxxxxxxxNL81PSTB0000012345",
+ "bin": null,
+ "name_holder": "Schilder",
+ "expiry_date": "",
+ "expired": 0,
+ "last4": null,
+ "model": "cardOnFile"
+ },
+ {
+ "token": "BcEWsknWsYg",
+ "code": "MASTERCARD",
+ "display": "Card xxxx xxxx xxxx 4444",
+ "bin": 555555,
+ "name_holder": "Holder",
+ "expiry_date": 2412,
+ "expired": 0,
+ "last4": 4444,
+ "model": "cardOnFile"
+ }
+ ]
+ };
+ ```
+
+ > ✅ Success
+ >
+ > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+ Recurring payments are supported for all card payments.
+
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+
```JavaScript
From ab9fec4c3715486536345b10beb2fe186a02aa8b Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 17 Sep 2024 16:49:35 +0200
Subject: [PATCH 136/319] Docs 4338 (#3054)
* DOCS-4338: add deprecated status to outdated payment methods/int
* DOCS-4338: add deprecated status to outdated payment methods/int
From 309c294ff94e5acbedeaa895af54bf2c6438f4b4 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 17 Sep 2024 17:12:43 +0200
Subject: [PATCH 137/319] DOCS-4337: Shopify (#3044)
---
.gitignore | 3 +
content/integrations/shopify-deprecated.md | 120 +++++++++++++++++++++
content/integrations/shopify.md | 101 ++++-------------
content/integrations/shopware-5.md | 2 +-
content/integrations/shopware-6.md | 2 +-
content/integrations/virtuemart-3.md | 2 +-
content/integrations/virtuemart-4.md | 2 +-
content/integrations/vue-storefront.md | 2 +-
content/integrations/woocommerce.md | 2 +-
content/integrations/x-cart.md | 2 +-
content/integrations/zen-cart.md | 2 +-
11 files changed, 151 insertions(+), 89 deletions(-)
create mode 100755 content/integrations/shopify-deprecated.md
diff --git a/.gitignore b/.gitignore
index d6074e3e6..4ce69e61c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,8 @@
.DS_Store
+# ignore JetBrains IDE files
+.idea
+
# ignore all installed nodeJS packages
node_modules
diff --git a/content/integrations/shopify-deprecated.md b/content/integrations/shopify-deprecated.md
new file mode 100755
index 000000000..23c37ef1c
--- /dev/null
+++ b/content/integrations/shopify-deprecated.md
@@ -0,0 +1,120 @@
+---
+title: "Shopify (deprecated)"
+category: 62962dd7e272a6002ebbbbc5
+order: 16
+hidden: false
+parentDoc: 62a9a54abde254065ee92a5c
+excerpt: "Technical manual for MultiSafepay's free app."
+slug: 'shopify-deprecated'
+---
+
+
+> ❗️ Urgent action required!
+>
+> As of January, 2025, this deprecated version of the Shopify app will no longer be supported.
+> [Migrate to our updated app](/docs/shopify#installation) as soon as possible.
+> The main difference between the deprecated and the new integration is to provide the possibility to select a single payment option in the Shopify checkout, streamlining the payment process and speeding up transactions, instead of being redirected to the payment page of MultiSafepay to select the payment method.
+
+# Prerequisites
+
+You will need a [MultiSafepay account](/docs/getting-started-guide/).
+
+# Installation
+
+To install, follow these steps:
+
+1. For increased security and stability, wait for off-peak hours and temporarily enable password protection for your webshop.
+2. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods).
+3. From the Shopify app store, install the MultiSafepay payments app .
+4. Under **Settings**:
+ - **Website API key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
+ - **Environment**: Set whether it is a **live** or **test** API key.
+5. Click **Save and continue** (this process might take a few seconds).
+ You are redirected to **Settings** > **Payments**.
+6. For each payment method you wish to activate, follow the below steps on the **app** page:
+ - Select the payment method checkbox.
+ - Under **Test mode**, select the **Enable test mode** checkbox.
+ - Click **Activate **.
+ If the payment method is **not** activated for your MultiSafepay account, then in Shopify an error appears.
+7. [Activate the method for your MultiSafepay account](/docs/payment-methods), and then in Shopify, click **Retry**.
+
+✅ **Tip!** We recommend first testing each payment method before setting your **live** API key.
+
+
+---
+
+# User guide
+
+## Abandoned checkouts
+
+MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supported because Shopify offers a similar native service.
+
+See Shopify – Recovering abandoned checkouts .
+
+## Cancellation
+
+If a customer cancels a payment to use another payment method instead, they must complete payment within **2 hours** to avoid errors.
+
+## Checkout Configuration
+
+To send an order request with as much information as possible, we recommend setting up the checkout by using the email as the primary customer contact method and, if required, adding the phone number in the customer information. This can be set up in Settings > Checkout Page.
+
+## Countries
+
+The app is unavailable in Norway and Finland.
+
+For more information, email
+
+## Currencies
+
+Payments are processed in the webshop's default currency only.
+
+## Order expiration
+
+Shopify orders expire after **3** days.
+
+The `pendingExpiresAt` value matches the date and time when the order expires and must be within 3 days of calling the `paymentSessionPending` mutation (once only).
+
+For more information, see Shopify.dev – Pend a payment .
+
+**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
+
+
+## Payment methods
+
+
+Supported payment methods
+
+
+- Banking methods:
+ - [Bancontact](/docs/bancontact/)
+ - [Bank transfer](/docs/bank-transfer/)
+ - [Belfius](/docs/belfius/)
+ - [Direct debit](/docs/direct-debit/)
+ - [EPS](/docs/eps/)
+ - [iDEAL](/docs/ideal/)
+ - [Trustly](/docs/trustly/)
+- Cards: [All](/docs/card-payments/)
+- Prepaid cards: [Paysafecard](/docs/paysafecard/), Fashioncheque
+- Wallets: [WeChat Pay](/docs/wechat-pay/)
+
+
+
+## Reconciliation
+
+To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID.
+
+## Refunds
+
+[Full and partial refunds](/docs/refund-payments/) are supported via your MultiSafepay dashboard and backend.
+You can't refund more than the original amount in your backend.
+
+---
+
+[block:html]
+{
+ "html": "
"
+}
+[/block]
+
+[Top of page](#)
diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md
index 7aee81bbe..f88571aee 100755
--- a/content/integrations/shopify.md
+++ b/content/integrations/shopify.md
@@ -11,9 +11,9 @@ slug: 'shopify'
> ❗️ Urgent action required!
>
-> As of July 31, 2022, the deprecated version of the app will no longer be supported. Payments will **not** be processed.
-> [Migrate to our updated app](#how-to-install) as soon as possible.
-> The new app leverages a single, powerful <> for a faster, safer integration.
+> As of January, 2025, the deprecated version of the app will no longer be supported.
+> [Migrate to our updated app](/docs/shopify#how-to-install) as soon as possible.
+> The new Shopify app allows you to list each payment method individually within your checkout. After selection, the customer is redirected to the payment page.
# Prerequisites
@@ -23,21 +23,21 @@ You will need a [MultiSafepay account](/docs/getting-started-guide/).
To install or migrate, follow these steps:
-1. For increased security and stability, wait for off-peak hours and temporarily enable password protection for your webshop.
+1. Ensure that your Shopify user has the permissions to install new apps.
2. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods).
-3. From the Shopify app store, install the MultiSafepay payments app .
-4. Under **Settings**:
- - **Website API key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
- - **Environment**: Set whether it is a **live** or **test** key.
-5. Click **Save and continue** (might take a few seconds).
- You are redirected to **Settings** > **Payments**.
-6. For each payment method you want to activate, on the ** app** page:
- - If Shopify has not reviewed the payment method yet, click **Install unlisted app**.
- - Select the payment method checkbox.
- - Under **Test mode**, select the **Enable test mode** checkbox.
- - Click **Activate **.
- If the payment method is **not** activated for your MultiSafepay account, an error appears.
-7. [Activate the method for your MultiSafepay account](/docs/payment-methods), and then in Shopify, click **Retry**.
+3. Select the desired payment methods, installing their apps using one or more of the following links:
+ - Card Payment
+ - iDEAL
+5. Click on "Install" button.
+6. If necessary, log in to your Shopify store.
+7. On your admin page, select Install app.
+6. Under **Settings**:
+ - **MultiSafepay API Key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
+ - **Test mode**: Turn on if you are using a Test API key. Turn off for a Live API key.
+5. Click **Save**.
+6. Under **Payment configuration** click on the button **Payment configuration**
+ - Enable Test Mode if you are using a Test API key. Turn off for a Live API key.
+ - Enable or disable payment icons according to your preferences.
✅ **Tip!** We recommend first testing each payment method before setting your **live** API key.
@@ -58,7 +58,7 @@ If a customer cancels a payment to use another payment method instead, they must
## Checkout Configuration
-To send an order request with as much information as possible, we recommend setting up the checkout using as customer contact method the email and if required, adding the phone number in the customer information. This can be setup in **Settings** > Checkout page.
+To send an order request with as much information as possible, we recommend setting up the checkout by using the email as the primary customer contact method and, if required, adding the phone number in the customer information. This can be set up in Settings > Checkout Page.
## Countries
@@ -70,44 +70,6 @@ For more information, email
Payments are processed in the webshop's default currency only.
-## Deprecated version
-
-
-Installation and configuration
-
-
-1. To install payment methods, use the relevant links. For each, click the **Install** button on the bottom right:
-
- - Alipay
- - American Express
- - Bancontact
- - Bank transfer
- - Belfius
- - CBC/KBC
- - Dotpay
- - EPS
- - Giropay
- - iDEAL , iDEAL QR
- - Maestro
- - Mastercard
- - PayPal
- - Paysafecard
- - Request to Pay
- - Direct debit
- - Sofort
- - Trustly
- - Visa (including Cartes Bancaires & Dankort)
-
-2. Sign in to your Shopify <>.
-3. Go to **Settings** > **Payment providers** > **Alternative payments**.
-4. Search for and then click the payment methods you have installed.
-5. Enter your [site ID and security code](/docs/sites#site-id-api-key-and-security-code).
-6. Activate the payment method.
-
-✅ **Tip!** To bundle all payment methods under a single MultiSafepay payment gateway at checkout, under **Alternative payments**, activate the **MultiSafepay** payment method.
-
-
-
## Order expiration
Shopify orders expire after **3** days.
@@ -116,30 +78,7 @@ The `pendingExpiresAt` value matches the date and time when the order expires an
For more information, see Shopify.dev – Pend a payment .
-**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
-
-
-## Payment methods
-
-
-Supported payment methods
-
-
-- Banking methods:
- - [Bancontact](/docs/bancontact/)
- - [Bank transfer](/docs/bank-transfer/)
- - [Belfius](/docs/belfius/)
- - [Direct debit](/docs/direct-debit/)
- - [EPS](/docs/eps/)
- - [Giropay](/docs/giropay/)
- - [iDEAL](/docs/ideal/)
- - [Sofort](/docs/sofort/)
- - [Trustly](/docs/trustly/)
-- Cards: [All](/docs/card-payments/)
-- Prepaid cards: [Paysafecard](/docs/paysafecard/), Fashioncheque
-- Wallets: [WeChat Pay](/docs/wechat-pay/)
-
-
+**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
## Reconciliation
@@ -147,7 +86,7 @@ To match orders in your accounting system with your MultiSafepay account, use th
## Refunds
-[Full and partial refunds](/docs/refund-payments/) are supported in your MultiSafepay dashboard and backend.
+[Full and partial refunds](/docs/refund-payments/) are supported via your MultiSafepay dashboard and backend.
You can't refund more than the original amount in your backend.
---
diff --git a/content/integrations/shopware-5.md b/content/integrations/shopware-5.md
index 00aa530b5..1b503e1dd 100644
--- a/content/integrations/shopware-5.md
+++ b/content/integrations/shopware-5.md
@@ -1,7 +1,7 @@
---
title: "Shopware 5"
category: 62962dd7e272a6002ebbbbc5
-order: 16
+order: 17
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manuals for MultiSafepay's free plugins."
diff --git a/content/integrations/shopware-6.md b/content/integrations/shopware-6.md
index 1fc61b388..0ab98a50b 100644
--- a/content/integrations/shopware-6.md
+++ b/content/integrations/shopware-6.md
@@ -1,7 +1,7 @@
---
title: "Shopware 6"
category: 62962dd7e272a6002ebbbbc5
-order: 17
+order: 18
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manuals for MultiSafepay's free plugins."
diff --git a/content/integrations/virtuemart-3.md b/content/integrations/virtuemart-3.md
index 1618a102a..cb84a08eb 100755
--- a/content/integrations/virtuemart-3.md
+++ b/content/integrations/virtuemart-3.md
@@ -1,7 +1,7 @@
---
title: "VirtueMart 3"
category: 62962dd7e272a6002ebbbbc5
-order: 18
+order: 19
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free plugin."
diff --git a/content/integrations/virtuemart-4.md b/content/integrations/virtuemart-4.md
index e7b8c1f1c..37c89c64e 100755
--- a/content/integrations/virtuemart-4.md
+++ b/content/integrations/virtuemart-4.md
@@ -1,7 +1,7 @@
---
title: "VirtueMart 4"
category: 62962dd7e272a6002ebbbbc5
-order: 19
+order: 20
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free plugin."
diff --git a/content/integrations/vue-storefront.md b/content/integrations/vue-storefront.md
index 5f3e8943c..4f0d4ba6c 100644
--- a/content/integrations/vue-storefront.md
+++ b/content/integrations/vue-storefront.md
@@ -1,7 +1,7 @@
---
title: "Vue Storefront"
category: 62962dd7e272a6002ebbbbc5
-order: 20
+order: 21
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Free plugin for MultiSafepay payment solutions."
diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md
index c08e87ed2..990b0b186 100755
--- a/content/integrations/woocommerce.md
+++ b/content/integrations/woocommerce.md
@@ -1,7 +1,7 @@
---
title: "WooCommerce"
category: 62962dd7e272a6002ebbbbc5
-order: 21
+order: 22
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free plugin."
diff --git a/content/integrations/x-cart.md b/content/integrations/x-cart.md
index 1af8d68b5..c16c75f73 100755
--- a/content/integrations/x-cart.md
+++ b/content/integrations/x-cart.md
@@ -1,7 +1,7 @@
---
title: "X-Cart"
category: 62962dd7e272a6002ebbbbc5
-order: 22
+order: 23
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free plugin."
diff --git a/content/integrations/zen-cart.md b/content/integrations/zen-cart.md
index 177e42e8b..301929c5a 100755
--- a/content/integrations/zen-cart.md
+++ b/content/integrations/zen-cart.md
@@ -1,7 +1,7 @@
---
title: "Zen Cart"
category: 62962dd7e272a6002ebbbbc5
-order: 23
+order: 24
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free plugin."
From 02484dac6bc24cd4b5a7e3f895eb6a234122faf5 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Tue, 17 Sep 2024 17:18:52 +0200
Subject: [PATCH 138/319] DOCS-4337: Fix warning notice in Shopify docs (#3055)
---
content/integrations/shopify-deprecated.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/shopify-deprecated.md b/content/integrations/shopify-deprecated.md
index 23c37ef1c..25eb4e8ee 100755
--- a/content/integrations/shopify-deprecated.md
+++ b/content/integrations/shopify-deprecated.md
@@ -13,7 +13,7 @@ slug: 'shopify-deprecated'
>
> As of January, 2025, this deprecated version of the Shopify app will no longer be supported.
> [Migrate to our updated app](/docs/shopify#installation) as soon as possible.
-> The main difference between the deprecated and the new integration is to provide the possibility to select a single payment option in the Shopify checkout, streamlining the payment process and speeding up transactions, instead of being redirected to the payment page of MultiSafepay to select the payment method.
+> The new Shopify app allows you to list each payment method individually within your checkout. After selection, the customer is redirected to the payment page.
# Prerequisites
From 41d97801d62fffec0886e90956a52c6b4ec8e9b5 Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Wed, 18 Sep 2024 09:41:04 +0200
Subject: [PATCH 139/319] DOCS-4342: format fix checkout page
---
content/checkout/multiple.md | 110 ++++++++++++++++++-----------------
1 file changed, 56 insertions(+), 54 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 117d10676..e7f7e47b5 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -116,62 +116,64 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
- Add the `cardOnFile` recurring model
- Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
- ```javascript
- const orderData = {
- currency: 'EUR',
- amount: 10000,
- customer: {
- locale: 'en',
- country: 'NL'
- },
- template : {
- settings: {
- embed_mode: true
- }
- }
- };
- const recurringData = {
- "model": "cardOnFile",
- "tokens": [
- {
- "token": "AvqeOjgdm8A",
- "code": "IDEAL",
- "display": "xxxxxxxxxNL81PSTB0000012345",
- "bin": null,
- "name_holder": "Schilder",
- "expiry_date": "",
- "expired": 0,
- "last4": null,
- "model": "cardOnFile"
- },
- {
- "token": "BcEWsknWsYg",
- "code": "MASTERCARD",
- "display": "Card xxxx xxxx xxxx 4444",
- "bin": 555555,
- "name_holder": "Holder",
- "expiry_date": 2412,
- "expired": 0,
- "last4": 4444,
- "model": "cardOnFile"
- }
- ]
- };
- ```
-
- > ✅ Success
- >
- > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
-
- Recurring payments are supported for all card payments.
-
- 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
-
- To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
+
+ ```javascript
+ const orderData = {
+ currency: 'EUR',
+ amount: 10000,
+ customer: {
+ locale: 'en',
+ country: 'NL'
+ },
+ template: {
+ settings: {
+ embed_mode: true
+ }
+ }
+ };
+
+ const recurringData = {
+ model: "cardOnFile",
+ tokens: [
+ {
+ token: "AvqeOjgdm8A",
+ code: "IDEAL",
+ display: "xxxxxxxxxNL81PSTB0000012345",
+ bin: null,
+ name_holder: "Schilder",
+ expiry_date: "",
+ expired: 0,
+ last4: null,
+ model: "cardOnFile"
+ },
+ {
+ token: "BcEWsknWsYg",
+ code: "MASTERCARD",
+ display: "Card xxxx xxxx xxxx 4444",
+ bin: 555555,
+ name_holder: "Holder",
+ expiry_date: 2412,
+ expired: 0,
+ last4: 4444,
+ model: "cardOnFile"
+ }
+ ]
+ };
+ ```
+
+ > ✅ Success
+ >
+ > Your payment component now automatically renders a checkbox where customers can choose whether they would like to store their payment details for future visits.
+
+ Recurring payments are supported for all card payments.
+
+ 📘 **Note:** To test card details, see Test payment details – [Credit and debit cards](/docs/testing#credit-and-debit-cards).
+
+ To use recurring payments in your payment component, you need to enable recurring payments for your account. If you haven't already, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com))
-
+
📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
From f5b15fedfe78faebd8338b707ba0abf4ebaa19e4 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Wed, 18 Sep 2024 09:52:30 +0200
Subject: [PATCH 140/319] DOCS-4342: format fix checkout page (#3056)
* DOCS-4342: format fix checkout page
* Automated external URL lint.
---------
Co-authored-by: github-actions[bot]
---
content/checkout/multiple.md | 66 +++---------------------------------
1 file changed, 4 insertions(+), 62 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index e7f7e47b5..8f335cd88 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -90,9 +90,9 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
| Key | Required | Value |
|----------------------------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `amount` | Yes | The value of the order. **Format**: Number without decimal points, e.g., 100 euro is formatted as `10000`. |
- | `currency` | Yes | The currency of the order. **Format**: [ISO-4217](https://en.wikipedia.org/wiki/ISO_4217), e.g., `EUR`. |
- | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2), e.g., `NL`. |
- | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: [ISO 639](https://en.wikipedia.org/wiki/ISO_639). Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
+ | `currency` | Yes | The currency of the order. **Format**: ISO-4217 , e.g., `EUR`. |
+ | `customer.country` | No | The customer's country code. Used to validate the availability of the payment method. **Format**: ISO-3166-1 alpha-2 , e.g., `NL`. |
+ | `customer.locale` | No | The customer's language. Sets the language of the payment component UI. **Format**: ISO 639 . Supported languages: `en`, `es`, `fr`, `it`, `nl`. |
| `customer.reference` | Yes, for recurring payments | Your unique customer reference. (\*currently not supported for QR payments.) |
| `payment_options.settings.connect.group_cards`| No | Groups all card payment methods as a single option in the list of payment methods. **Format**: Boolean **Default**: `false`. |
| `payment_options.settings.connect.qr` | No | Allows QR code to be rendered for iDEAL and Bancontact: `enabled`. `autoload` allows automatic display of QR code, and subsequent redirect for these methods. **Default**: `true`. |
@@ -173,65 +173,7 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
-
-
-
-📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
+ 📘 **Note:** We use the `orderData` object to ensure the payment methods are enabled, e.g. for the currency, country, and order value.
2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token:
From d64786cd094243c7d38226f958e2ff11b53e7125 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Wed, 18 Sep 2024 11:02:42 +0200
Subject: [PATCH 141/319] DOCS-4343: format fix checkout page (#3057)
* DOCS-4343: format fix checkout page
* DOCS-4343: format fix checkout page
---
content/checkout/multiple.md | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md
index 8f335cd88..6bf143dc8 100644
--- a/content/checkout/multiple.md
+++ b/content/checkout/multiple.md
@@ -116,9 +116,8 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
- Add the `cardOnFile` recurring model
- Make [List tokens](/reference/listtokens) request from your server and provide a`tokens`
-
- ```javascript
- const orderData = {
+ ```javascript
+ const orderData = {
currency: 'EUR',
amount: 10000,
customer: {
@@ -130,9 +129,9 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
embed_mode: true
}
}
- };
+ };
- const recurringData = {
+ const recurringData = {
model: "cardOnFile",
tokens: [
{
@@ -156,10 +155,10 @@ Payment components require a MultiSafepay API token. See API reference – [Gene
expired: 0,
last4: 4444,
model: "cardOnFile"
- }
- ]
- };
- ```
+ }
+ ]
+ };
+ ```
> ✅ Success
>
From dec68404c8ce70b7995c0cde31443a5a324bb288 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Wed, 18 Sep 2024 13:16:12 +0200
Subject: [PATCH 142/319] DOCS-4346: Card payment pricing page duplication
(#3059)
---
.../card-payment-pricing-models.md | 60 +++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 content/payment-methods-test/card-payment-pricing-models.md
diff --git a/content/payment-methods-test/card-payment-pricing-models.md b/content/payment-methods-test/card-payment-pricing-models.md
new file mode 100644
index 000000000..ecae3c773
--- /dev/null
+++ b/content/payment-methods-test/card-payment-pricing-models.md
@@ -0,0 +1,60 @@
+---
+title: 'Card payment pricing models'
+category: 6298bd782d1cf4006032e765
+order: 30
+hidden: false
+parentDoc: 62a727569e389a012f577acd
+excerpt: 'Distinction between Blended and Interchange ++ pricing'
+slug: Card-payment-pricing-models
+---
+
+Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
+
+There are three cost components that determine the final card pricing:
+
+- The **Interchange** fee that is paid to the issuing bank
+- The **Scheme fee** charged by the scheme, like Visa or Mastercard
+- The **<>** fee, in this case applied by MultiSafepay
+
+## Pricing models
+
+When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
+
+The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
+
+- Issuer country
+- Issuing bank
+- Type of card, business or consumer
+- Type of card funding, debit or credit
+- Type of transaction, Point-of-Sale or Card-not-Present
+- Merchant segment
+- Monthly transaction volume
+
+We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
+
+### Blended pricing
+
+In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
+
+Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
+
+### Interchange ++ pricing
+
+The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
+
+Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
+
+This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
+
+### How to choose
+
+If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
+If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
+
+---
+
+[block:html]
+{
+ "html": "
\n"
+}
+[/block]
From 8e5c1731df596be8a98913ba55a9e27b4bce17eb Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Wed, 18 Sep 2024 13:30:01 +0200
Subject: [PATCH 143/319] DOCS-4347: page duplicate
---
.../card-payment-pricing-models.md | 60 -------------------
1 file changed, 60 deletions(-)
delete mode 100644 content/payment-methods-test/card-payment-pricing-models.md
diff --git a/content/payment-methods-test/card-payment-pricing-models.md b/content/payment-methods-test/card-payment-pricing-models.md
deleted file mode 100644
index ecae3c773..000000000
--- a/content/payment-methods-test/card-payment-pricing-models.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: 'Card payment pricing models'
-category: 6298bd782d1cf4006032e765
-order: 30
-hidden: false
-parentDoc: 62a727569e389a012f577acd
-excerpt: 'Distinction between Blended and Interchange ++ pricing'
-slug: Card-payment-pricing-models
----
-
-Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
-
-There are three cost components that determine the final card pricing:
-
-- The **Interchange** fee that is paid to the issuing bank
-- The **Scheme fee** charged by the scheme, like Visa or Mastercard
-- The **<>** fee, in this case applied by MultiSafepay
-
-## Pricing models
-
-When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
-
-The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
-
-- Issuer country
-- Issuing bank
-- Type of card, business or consumer
-- Type of card funding, debit or credit
-- Type of transaction, Point-of-Sale or Card-not-Present
-- Merchant segment
-- Monthly transaction volume
-
-We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
-
-### Blended pricing
-
-In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
-
-Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
-
-### Interchange ++ pricing
-
-The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
-
-Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
-
-This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
-
-### How to choose
-
-If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
-If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
-
----
-
-[block:html]
-{
- "html": "
\n"
-}
-[/block]
From 75c18e4a1724e4919bbc273fbfbc39bb312de5f2 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Wed, 18 Sep 2024 13:38:32 +0200
Subject: [PATCH 144/319] DOCS-4345: Label Shopify docs as Beta (#3058)
* DOCS-4345: Label Shopify docs as Beta
* DOCS-4345: Label Shopify docs as Beta
* DOCS-4345: Label Shopify docs as Beta
---
...{shopify-deprecated.md => shopify-beta.md} | 68 +++++--------------
content/integrations/shopify.md | 58 ++++++++++------
2 files changed, 54 insertions(+), 72 deletions(-)
rename content/integrations/{shopify-deprecated.md => shopify-beta.md} (57%)
diff --git a/content/integrations/shopify-deprecated.md b/content/integrations/shopify-beta.md
similarity index 57%
rename from content/integrations/shopify-deprecated.md
rename to content/integrations/shopify-beta.md
index 25eb4e8ee..de7fb5ac2 100755
--- a/content/integrations/shopify-deprecated.md
+++ b/content/integrations/shopify-beta.md
@@ -1,42 +1,37 @@
---
-title: "Shopify (deprecated)"
+title: "Shopify (Beta)"
category: 62962dd7e272a6002ebbbbc5
order: 16
hidden: false
parentDoc: 62a9a54abde254065ee92a5c
excerpt: "Technical manual for MultiSafepay's free app."
-slug: 'shopify-deprecated'
+slug: 'shopify-beta'
---
-> ❗️ Urgent action required!
->
-> As of January, 2025, this deprecated version of the Shopify app will no longer be supported.
-> [Migrate to our updated app](/docs/shopify#installation) as soon as possible.
-> The new Shopify app allows you to list each payment method individually within your checkout. After selection, the customer is redirected to the payment page.
-
# Prerequisites
You will need a [MultiSafepay account](/docs/getting-started-guide/).
# Installation
-To install, follow these steps:
+To install or migrate, follow these steps:
-1. For increased security and stability, wait for off-peak hours and temporarily enable password protection for your webshop.
+1. Ensure that your Shopify user has the permissions to install new apps.
2. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods).
-3. From the Shopify app store, install the MultiSafepay payments app .
-4. Under **Settings**:
- - **Website API key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
- - **Environment**: Set whether it is a **live** or **test** API key.
-5. Click **Save and continue** (this process might take a few seconds).
- You are redirected to **Settings** > **Payments**.
-6. For each payment method you wish to activate, follow the below steps on the **app** page:
- - Select the payment method checkbox.
- - Under **Test mode**, select the **Enable test mode** checkbox.
- - Click **Activate **.
- If the payment method is **not** activated for your MultiSafepay account, then in Shopify an error appears.
-7. [Activate the method for your MultiSafepay account](/docs/payment-methods), and then in Shopify, click **Retry**.
+3. Select the desired payment methods, installing their apps using one or more of the following links:
+ - Card Payment
+ - iDEAL
+5. Click on "Install" button.
+6. If necessary, log in to your Shopify store.
+7. On your admin page, select Install app.
+6. Under **Settings**:
+ - **MultiSafepay API Key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
+ - **Test mode**: Turn on if you are using a Test API key. Turn off for a Live API key.
+5. Click **Save**.
+6. Under **Payment configuration** click on the button **Payment configuration**
+ - Enable Test Mode if you are using a Test API key. Turn off for a Live API key.
+ - Enable or disable payment icons according to your preferences.
✅ **Tip!** We recommend first testing each payment method before setting your **live** API key.
@@ -59,12 +54,6 @@ If a customer cancels a payment to use another payment method instead, they must
To send an order request with as much information as possible, we recommend setting up the checkout by using the email as the primary customer contact method and, if required, adding the phone number in the customer information. This can be set up in Settings > Checkout Page.
-## Countries
-
-The app is unavailable in Norway and Finland.
-
-For more information, email
-
## Currencies
Payments are processed in the webshop's default currency only.
@@ -77,28 +66,7 @@ The `pendingExpiresAt` value matches the date and time when the order expires an
For more information, see Shopify.dev – Pend a payment .
-**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
-
-
-## Payment methods
-
-
-Supported payment methods
-
-
-- Banking methods:
- - [Bancontact](/docs/bancontact/)
- - [Bank transfer](/docs/bank-transfer/)
- - [Belfius](/docs/belfius/)
- - [Direct debit](/docs/direct-debit/)
- - [EPS](/docs/eps/)
- - [iDEAL](/docs/ideal/)
- - [Trustly](/docs/trustly/)
-- Cards: [All](/docs/card-payments/)
-- Prepaid cards: [Paysafecard](/docs/paysafecard/), Fashioncheque
-- Wallets: [WeChat Pay](/docs/wechat-pay/)
-
-
+**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
## Reconciliation
diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md
index f88571aee..3a0d29659 100755
--- a/content/integrations/shopify.md
+++ b/content/integrations/shopify.md
@@ -9,35 +9,28 @@ slug: 'shopify'
---
-> ❗️ Urgent action required!
->
-> As of January, 2025, the deprecated version of the app will no longer be supported.
-> [Migrate to our updated app](/docs/shopify#how-to-install) as soon as possible.
-> The new Shopify app allows you to list each payment method individually within your checkout. After selection, the customer is redirected to the payment page.
-
# Prerequisites
You will need a [MultiSafepay account](/docs/getting-started-guide/).
# Installation
-To install or migrate, follow these steps:
+To install, follow these steps:
-1. Ensure that your Shopify user has the permissions to install new apps.
+1. For increased security and stability, wait for off-peak hours and temporarily enable password protection for your webshop.
2. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods).
-3. Select the desired payment methods, installing their apps using one or more of the following links:
- - Card Payment
- - iDEAL
-5. Click on "Install" button.
-6. If necessary, log in to your Shopify store.
-7. On your admin page, select Install app.
-6. Under **Settings**:
- - **MultiSafepay API Key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
- - **Test mode**: Turn on if you are using a Test API key. Turn off for a Live API key.
-5. Click **Save**.
-6. Under **Payment configuration** click on the button **Payment configuration**
- - Enable Test Mode if you are using a Test API key. Turn off for a Live API key.
- - Enable or disable payment icons according to your preferences.
+3. From the Shopify app store, install the MultiSafepay payments app .
+4. Under **Settings**:
+ - **Website API key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code).
+ - **Environment**: Set whether it is a **live** or **test** API key.
+5. Click **Save and continue** (this process might take a few seconds).
+ You are redirected to **Settings** > **Payments**.
+6. For each payment method you wish to activate, follow the below steps on the **app** page:
+ - Select the payment method checkbox.
+ - Under **Test mode**, select the **Enable test mode** checkbox.
+ - Click **Activate **.
+ If the payment method is **not** activated for your MultiSafepay account, then in Shopify an error appears.
+7. [Activate the method for your MultiSafepay account](/docs/payment-methods), and then in Shopify, click **Retry**.
✅ **Tip!** We recommend first testing each payment method before setting your **live** API key.
@@ -78,7 +71,28 @@ The `pendingExpiresAt` value matches the date and time when the order expires an
For more information, see Shopify.dev – Pend a payment .
-**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
+**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
+
+
+## Payment methods
+
+
+Supported payment methods
+
+
+- Banking methods:
+ - [Bancontact](/docs/bancontact/)
+ - [Bank transfer](/docs/bank-transfer/)
+ - [Belfius](/docs/belfius/)
+ - [Direct debit](/docs/direct-debit/)
+ - [EPS](/docs/eps/)
+ - [iDEAL](/docs/ideal/)
+ - [Trustly](/docs/trustly/)
+- Cards: [All](/docs/card-payments/)
+- Prepaid cards: [Paysafecard](/docs/paysafecard/), Fashioncheque
+- Wallets: [WeChat Pay](/docs/wechat-pay/)
+
+
## Reconciliation
From e40fb0c61ed7f040265185164932529b9eb71f7f Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Wed, 18 Sep 2024 13:43:36 +0200
Subject: [PATCH 145/319] testing duplicate
---
.../card-payment-pricing-models - Copy.md | 60 +++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 content/payment-methods/card-payment-pricing-models - Copy.md
diff --git a/content/payment-methods/card-payment-pricing-models - Copy.md b/content/payment-methods/card-payment-pricing-models - Copy.md
new file mode 100644
index 000000000..ecae3c773
--- /dev/null
+++ b/content/payment-methods/card-payment-pricing-models - Copy.md
@@ -0,0 +1,60 @@
+---
+title: 'Card payment pricing models'
+category: 6298bd782d1cf4006032e765
+order: 30
+hidden: false
+parentDoc: 62a727569e389a012f577acd
+excerpt: 'Distinction between Blended and Interchange ++ pricing'
+slug: Card-payment-pricing-models
+---
+
+Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
+
+There are three cost components that determine the final card pricing:
+
+- The **Interchange** fee that is paid to the issuing bank
+- The **Scheme fee** charged by the scheme, like Visa or Mastercard
+- The **<>** fee, in this case applied by MultiSafepay
+
+## Pricing models
+
+When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
+
+The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
+
+- Issuer country
+- Issuing bank
+- Type of card, business or consumer
+- Type of card funding, debit or credit
+- Type of transaction, Point-of-Sale or Card-not-Present
+- Merchant segment
+- Monthly transaction volume
+
+We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
+
+### Blended pricing
+
+In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
+
+Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
+
+### Interchange ++ pricing
+
+The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
+
+Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
+
+This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
+
+### How to choose
+
+If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
+If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
+
+---
+
+[block:html]
+{
+ "html": "
\n"
+}
+[/block]
From 7d9950685b4c90ad1efbe7f7541980ad92ab1aba Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Wed, 18 Sep 2024 13:56:46 +0200
Subject: [PATCH 146/319] test
---
.../card-payment-pricing-models - Copy.md | 60 -------------------
1 file changed, 60 deletions(-)
delete mode 100644 content/payment-methods/card-payment-pricing-models - Copy.md
diff --git a/content/payment-methods/card-payment-pricing-models - Copy.md b/content/payment-methods/card-payment-pricing-models - Copy.md
deleted file mode 100644
index ecae3c773..000000000
--- a/content/payment-methods/card-payment-pricing-models - Copy.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: 'Card payment pricing models'
-category: 6298bd782d1cf4006032e765
-order: 30
-hidden: false
-parentDoc: 62a727569e389a012f577acd
-excerpt: 'Distinction between Blended and Interchange ++ pricing'
-slug: Card-payment-pricing-models
----
-
-Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
-
-There are three cost components that determine the final card pricing:
-
-- The **Interchange** fee that is paid to the issuing bank
-- The **Scheme fee** charged by the scheme, like Visa or Mastercard
-- The **<>** fee, in this case applied by MultiSafepay
-
-## Pricing models
-
-When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
-
-The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
-
-- Issuer country
-- Issuing bank
-- Type of card, business or consumer
-- Type of card funding, debit or credit
-- Type of transaction, Point-of-Sale or Card-not-Present
-- Merchant segment
-- Monthly transaction volume
-
-We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
-
-### Blended pricing
-
-In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
-
-Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
-
-### Interchange ++ pricing
-
-The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
-
-Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
-
-This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
-
-### How to choose
-
-If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
-If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
-
----
-
-[block:html]
-{
- "html": "
\n"
-}
-[/block]
From 44406a63c68f97f63c12c243383ba102778d9bc5 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Wed, 18 Sep 2024 14:22:06 +0200
Subject: [PATCH 147/319] DOCS-TEST (#3060)
---
.../card-payment-pricing-models-test.md | 60 +++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 content/payment-methods/card-payment-pricing-models-test.md
diff --git a/content/payment-methods/card-payment-pricing-models-test.md b/content/payment-methods/card-payment-pricing-models-test.md
new file mode 100644
index 000000000..ecae3c773
--- /dev/null
+++ b/content/payment-methods/card-payment-pricing-models-test.md
@@ -0,0 +1,60 @@
+---
+title: 'Card payment pricing models'
+category: 6298bd782d1cf4006032e765
+order: 30
+hidden: false
+parentDoc: 62a727569e389a012f577acd
+excerpt: 'Distinction between Blended and Interchange ++ pricing'
+slug: Card-payment-pricing-models
+---
+
+Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
+
+There are three cost components that determine the final card pricing:
+
+- The **Interchange** fee that is paid to the issuing bank
+- The **Scheme fee** charged by the scheme, like Visa or Mastercard
+- The **<>** fee, in this case applied by MultiSafepay
+
+## Pricing models
+
+When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
+
+The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
+
+- Issuer country
+- Issuing bank
+- Type of card, business or consumer
+- Type of card funding, debit or credit
+- Type of transaction, Point-of-Sale or Card-not-Present
+- Merchant segment
+- Monthly transaction volume
+
+We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
+
+### Blended pricing
+
+In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
+
+Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
+
+### Interchange ++ pricing
+
+The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
+
+Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
+
+This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
+
+### How to choose
+
+If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
+If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
+
+---
+
+[block:html]
+{
+ "html": "
\n"
+}
+[/block]
From 920c9a172843aa9618e6dd222725cebb7bccc042 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Wed, 18 Sep 2024 14:27:42 +0200
Subject: [PATCH 148/319] DOCS-TEST2 (#3061)
---
.../card-payment-pricing-models.md | 60 -------------------
1 file changed, 60 deletions(-)
delete mode 100644 content/payment-methods/card-payment-pricing-models.md
diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md
deleted file mode 100644
index ecae3c773..000000000
--- a/content/payment-methods/card-payment-pricing-models.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: 'Card payment pricing models'
-category: 6298bd782d1cf4006032e765
-order: 30
-hidden: false
-parentDoc: 62a727569e389a012f577acd
-excerpt: 'Distinction between Blended and Interchange ++ pricing'
-slug: Card-payment-pricing-models
----
-
-Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments.
-
-There are three cost components that determine the final card pricing:
-
-- The **Interchange** fee that is paid to the issuing bank
-- The **Scheme fee** charged by the scheme, like Visa or Mastercard
-- The **<>** fee, in this case applied by MultiSafepay
-
-## Pricing models
-
-When you create a MultiSafepay account, we provide an offer based on the estimate of these costs.
-
-The actual cost for processing a card transaction vary considerably depending on a range of factors, including:
-
-- Issuer country
-- Issuing bank
-- Type of card, business or consumer
-- Type of card funding, debit or credit
-- Type of transaction, Point-of-Sale or Card-not-Present
-- Merchant segment
-- Monthly transaction volume
-
-We distinguish between two main card pricing models: **Blended** and **Interchange ++**.
-
-### Blended pricing
-
-In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market.
-
-Taking into account the fluctuation of fees between the individual transactions, a **fixed percentage** is agreed and applied to all transactions of the respective card payment method. This means, the charged percentage is stable and predictable. Percentage and quantity of transactions are displayed in the monthly invoice.
-
-### Interchange ++ pricing
-
-The Interchange ++ pricing model breaks down the individual costs for the transactions processed during the month.
-
-Once a card transaction is completed, the agreed pre-charge is applied. At the end of the month, the pre-charged fees are contrasted to the actual costs of the transactions. The only fixed component is the Acquirer fee which covers the costs of transaction processing. Scheme fee and Interchange fee are disclosed and corrected in the monthly invoice, under the section **Interchange details**. The correction appears in one bundled fund or charge transaction.
-
-This type of calculation offers increased transparency. However, the actual cost of a card transaction is difficult to predict upfront but the increased transparency serves businesses of all sizes.
-
-### How to choose
-
-If your business does not heavily rely on card volume, and the volume is based pre-dominantly on consumer cards within the EEA, a blended rate provides clear pricing.
-If your business mostly relies on cross-border and B2B sales, Interchange++ pricing gives you the highest level of transparency.
-
----
-
-[block:html]
-{
- "html": "
\n"
}
-[/block]
\ No newline at end of file
+[/block]
+
+[Top of page](#)
\ No newline at end of file
From 5fa3243480b9e30d4138a8fa36706c4128b9c79b Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Thu, 19 Sep 2024 08:26:11 +0200
Subject: [PATCH 153/319] DOCS-4348: Remove order expiration section in Shopify
page (#3068)
---
content/integrations/shopify-beta.md | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md
index de7fb5ac2..d9e1dfc55 100755
--- a/content/integrations/shopify-beta.md
+++ b/content/integrations/shopify-beta.md
@@ -58,16 +58,6 @@ To send an order request with as much information as possible, we recommend sett
Payments are processed in the webshop's default currency only.
-## Order expiration
-
-Shopify orders expire after **3** days.
-
-The `pendingExpiresAt` value matches the date and time when the order expires and must be within 3 days of calling the `paymentSessionPending` mutation (once only).
-
-For more information, see Shopify.dev – Pend a payment .
-
-**Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**.
-
## Reconciliation
To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID.
From 22fdc0afcb2887c4afb444a5228566bd6a7a30b0 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Thu, 19 Sep 2024 09:48:42 +0200
Subject: [PATCH 154/319] DOCS-4344: Update Drupal card container (#3069)
---
static/logo/Integrations/Drupal_10.svg | 28 ++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 static/logo/Integrations/Drupal_10.svg
diff --git a/static/logo/Integrations/Drupal_10.svg b/static/logo/Integrations/Drupal_10.svg
new file mode 100644
index 000000000..f9c475f8c
--- /dev/null
+++ b/static/logo/Integrations/Drupal_10.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
From 4411d888cfa84253d6fc503abfbf1b2cfc57469d Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Thu, 19 Sep 2024 09:57:24 +0200
Subject: [PATCH 155/319] Docs 4344 (#3070)
* DOCS-4344: Update Drupal card container
* DOCS-4344 Drupal new icon
---
static/logo/Plugins/Drupal_10.svg | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 static/logo/Plugins/Drupal_10.svg
diff --git a/static/logo/Plugins/Drupal_10.svg b/static/logo/Plugins/Drupal_10.svg
new file mode 100644
index 000000000..f9c475f8c
--- /dev/null
+++ b/static/logo/Plugins/Drupal_10.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
From ec9b5b619acd0b672a54d9da2bd182c23fb3d7ca Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Thu, 19 Sep 2024 10:18:20 +0200
Subject: [PATCH 156/319] Docs 4344.1 (#3072)
* DOCS-4344: Update Drupal card container
* DOCS-4344 Drupal new icon
* DOCS-4344: new drupal icon + small format change pay-after-delivery
* DOCS-4344.1: new drupal icon + small format change pay-after-delivery
---
content/integrations/drupal.md | 2 +-
content/integrations/our-integrations.md | 2 +-
content/payment-methods/pay-after-delivery.md | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md
index ce821f1cc..82fc94ece 100755
--- a/content/integrations/drupal.md
+++ b/content/integrations/drupal.md
@@ -9,7 +9,7 @@ slug: 'drupal'
---
# Drupal 8, 9 & 10
-
+
diff --git a/content/integrations/our-integrations.md b/content/integrations/our-integrations.md
index 197cc7c84..0808a5813 100644
--- a/content/integrations/our-integrations.md
+++ b/content/integrations/our-integrations.md
@@ -23,7 +23,7 @@ We also offer integrations for the following:
[block:html]
{
- "html": "
\n\n"
}
[/block]
diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md
index 9ddc8fa8c..8765ef802 100644
--- a/content/integrations/prestashop.md
+++ b/content/integrations/prestashop.md
@@ -32,16 +32,16 @@ slug: 'prestashop'
# Installation
-✅ **Tip!** We recommend first installing the plugin in a test environment, following the PrestaShop 1.7 installation procedure. Always make a backup.
+✅ **Tip!** We recommend first installing the plugin in a test environment, following the PrestaShop installation procedure. Always make a backup.
-1. Sign in to your PrestaShop 1.7 <>.
+1. Sign in to your PrestaShop Back Office.
2. Go to **Modules** > **Module Manager** > **Upload a module**.
3. Select the Plugin_PrestaShop.zip file, and then click **Configure**.
4. Clear your cache.
# Configuration
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay**, and enter your [site API key](/docs/sites/#site-id-api-key-and-security-code).
3. On the **Payment methods** tab, enable the relevant payment methods.
4. Click **Save**.
@@ -65,7 +65,7 @@ After completing the configuration, enable specific countries to make the paymen
## Backend orders
-In the previous release, PrestaShop backend orders were only created for MultiSafepay orders with **Completed** status.
+In the previous release, PrestaShop Back Office orders were only created for MultiSafepay orders with **Completed** status.
In the current release, a backend order is created for **every** order attempt, that is for MultiSafepay orders with **Initialized** status.
## Checkouts
@@ -95,7 +95,7 @@ Supported since release: 5.0.0-RC-1, Oct 27th 2021.
How to configure generic gateways
-1. Sign in to your Prestashop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **Payment methods** > **Generic gateway**.
3. Set the relevant [payment method gateway IDs](/reference/gateway-ids/) and the gateway icon.
@@ -138,7 +138,7 @@ If the notification hasn't been processed yet, a waiting page with a loader disp
To change the flow you are using, follow these steps:
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **General settings** tab.
3. In the **Create order before payment** field, select the flow.
4. Click **Save**.
@@ -166,7 +166,7 @@ The plugin supports [payment components](/docs/payment-components/), which:
How to activate payment components
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **Payment methods** tab.
3. Select the relevant payment methods.
4. Set **Enable payment component** toggle to **Enabled**.
@@ -240,7 +240,7 @@ The plugin supports [recurring payments](/docs/recurring-payments).
How to enable recurring payments
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **Payment methods** tab.
3. Select either the bundled card payments <>, **or** select specific card.
4. Set the **Enable tokenization** toggle to **Enabled**.
@@ -250,7 +250,7 @@ The plugin supports [recurring payments](/docs/recurring-payments).
## Refunds
-- [Full and partial refunds](/docs/refund-payments/) are supported in your MultiSafepay dashboard and <>.
+- [Full and partial refunds](/docs/refund-payments/) are supported in your MultiSafepay dashboard and PrestaShop <>.
- [BNPL refunds](/docs/refund-payments#bnpl-refunds) are supported in the dashboard only.
- Refunds for orders that include shopping cart rule discounts are supported in the dashboard only.
@@ -262,12 +262,14 @@ By default, refunds initiated in your backend are automatically processed via ou
To disable this, follow these steps:
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **Manage hooks**.
3. Select **Display non-positionable hooks**.
4. For **actionOrderSlipAdd**, select the three dots, and then click **Unhook**.
+
+For more information, see PrestaShop – Creating returns and refunds .
## Shopping carts
@@ -281,7 +283,7 @@ As a temporary solution, you can disable sending the shopping cart with the paym
How to disable the shopping cart
-1. Sign in to your PrestaShop 1.7 backend.
+1. Sign in to your PrestaShop Back Office.
2. Go to **MultiSafepay** > **General settings** tab.
3. Set the **Disable Shopping Cart** toggle to **Enabled**.
4. Click **Save**.
@@ -311,7 +313,7 @@ There are several Card Payment
- - iDEAL
+ - Direct debit
+ - iDEAL
5. Click on "Install" button.
6. If necessary, log in to your Shopify store.
7. On your admin page, select Install app.
From 0f0bd04044a7df4292e095024ceb69ebbe604de5 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Mon, 23 Sep 2024 08:37:00 +0200
Subject: [PATCH 169/319] DOCS-4356: Add the Bancontact app to Shopify page
(#3084)
---
content/integrations/shopify-beta.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md
index 808d4818e..336bf9d0d 100755
--- a/content/integrations/shopify-beta.md
+++ b/content/integrations/shopify-beta.md
@@ -20,6 +20,7 @@ To install or migrate, follow these steps:
1. Ensure that your Shopify user has the permissions to install new apps.
2. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods).
3. Select the desired payment methods, installing their apps using one or more of the following links:
+ - Bancontact
- Card Payment
- Direct debit
- iDEAL
From 45a25d2d41a485a6348b887fb5419c25421c9c37 Mon Sep 17 00:00:00 2001
From: Daniel Civit
Date: Mon, 23 Sep 2024 09:05:48 +0200
Subject: [PATCH 170/319] DOCS-4357: Add uninstall instructions in the Shopify
integration page (#3085)
---
content/integrations/shopify-beta.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md
index 336bf9d0d..af1fbdaf1 100755
--- a/content/integrations/shopify-beta.md
+++ b/content/integrations/shopify-beta.md
@@ -40,6 +40,19 @@ To install or migrate, follow these steps:
---
+# Uninstallation
+
+To uninstall, follow these steps:
+
+1. Ensure that your Shopify user has the permissions to uninstall apps.
+2. On your admin page, go to **Settings** > **Apps and sales channels**.
+3. Select the MultiSafepay payment app you want to uninstall, and clicking on the three dots icon, select the option **Uninstall**.
+4. On the dialog window, select a reason and confirm the action by clicking in the **Uninstall** button.
+
+
+
+---
+
# User guide
## Abandoned checkouts
From e97e77209b83c6cdb181a1ff6540c512d6c4b362 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Mon, 23 Sep 2024 10:44:53 +0200
Subject: [PATCH 171/319] DOCS-4353: fix order (#3086)
---
content/payment-management/chargebacks.md | 1 -
content/payment-methods/3ds2.md | 2 +-
content/payment-methods/card-payment-errors.md | 2 +-
content/payment-methods/card-payment-pricing-models.md | 2 +-
content/payment-methods/card-payments.md | 2 +-
content/payment-methods/card-refunds.md | 2 +-
content/payment-methods/cardholder-data.md | 2 +-
content/payment-methods/giropay.md | 2 +-
content/payment-methods/manual-capture.md | 2 +-
content/payment-methods/mbway.md | 2 +-
content/payment-methods/moto.md | 2 +-
content/payment-methods/multibanco.md | 2 +-
content/payment-methods/mybank.md | 2 +-
content/payment-methods/request-to-pay.md | 2 +-
content/payment-methods/sofort.md | 2 +-
content/payment-methods/trustly.md | 2 +-
content/payment-methods/trustpay.md | 2 +-
content/payment-methods/uncleared.md | 2 +-
content/payment-methods/zero-authorization.md | 2 +-
19 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/content/payment-management/chargebacks.md b/content/payment-management/chargebacks.md
index ded6239f6..c962adf9b 100644
--- a/content/payment-management/chargebacks.md
+++ b/content/payment-management/chargebacks.md
@@ -3,7 +3,6 @@ title: 'Chargebacks'
category: 6278c92bf4ad4a00361431b0
order: 0
hidden: false
-parentDoc: 62a727569e389a012f577acd
slug: 'chargebacks'
---
diff --git a/content/payment-methods/3ds2.md b/content/payment-methods/3ds2.md
index 723dc7f6a..0783d6e6c 100644
--- a/content/payment-methods/3ds2.md
+++ b/content/payment-methods/3ds2.md
@@ -1,7 +1,7 @@
---
title: '3D Secure 2.0'
category: 6298bd782d1cf4006032e765
-order: 25
+order: 0
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: '3ds2'
diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md
index 2bb9007dd..b95a7dbc4 100644
--- a/content/payment-methods/card-payment-errors.md
+++ b/content/payment-methods/card-payment-errors.md
@@ -1,7 +1,7 @@
---
title: "Card payment errors"
category: 6298bd782d1cf4006032e765
-order: 26
+order: 1
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: "card-payment-errors"
diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md
index 0c64f5f71..7b2b9a42e 100644
--- a/content/payment-methods/card-payment-pricing-models.md
+++ b/content/payment-methods/card-payment-pricing-models.md
@@ -1,7 +1,7 @@
---
title: "Card payment pricing models"
category: 6298bd782d1cf4006032e765
-order: 30
+order: 2
hidden: false
parentDoc: 62a727569e389a012f577acd
excerpt: Distintion between Blended and Interchange ++ pricing
diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md
index f52c1703c..9754509f9 100644
--- a/content/payment-methods/card-payments.md
+++ b/content/payment-methods/card-payments.md
@@ -1,7 +1,7 @@
---
title: 'Card payments'
category: 6298bd782d1cf4006032e765
-order: 24
+order: 3
hidden: false
slug: 'card-payments'
parentDoc: 62a727569e389a012f577acd
diff --git a/content/payment-methods/card-refunds.md b/content/payment-methods/card-refunds.md
index 16060dfad..e587d8181 100644
--- a/content/payment-methods/card-refunds.md
+++ b/content/payment-methods/card-refunds.md
@@ -1,7 +1,7 @@
---
title: 'Card refunds'
category: 6298bd782d1cf4006032e765
-order: 27
+order: 4
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: 'card-refunds'
diff --git a/content/payment-methods/cardholder-data.md b/content/payment-methods/cardholder-data.md
index be80d78d4..038c1f90b 100755
--- a/content/payment-methods/cardholder-data.md
+++ b/content/payment-methods/cardholder-data.md
@@ -1,7 +1,7 @@
---
title: 'Cardholder data'
category: 6298bd782d1cf4006032e765
-order: 28
+order: 5
hidden: false
parentDoc: 62a727569e389a012f577acd
excerpt: Handle sensitive cardholder data on your PCI DSS compliant server.
diff --git a/content/payment-methods/giropay.md b/content/payment-methods/giropay.md
index 95e43a66a..c82106287 100644
--- a/content/payment-methods/giropay.md
+++ b/content/payment-methods/giropay.md
@@ -1,7 +1,7 @@
---
title: 'Giropay (Deprecated)'
category: 6298bd782d1cf4006032e765
-order: 9
+order: 11
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'giropay'
diff --git a/content/payment-methods/manual-capture.md b/content/payment-methods/manual-capture.md
index d8c8bf107..10555bec1 100644
--- a/content/payment-methods/manual-capture.md
+++ b/content/payment-methods/manual-capture.md
@@ -1,7 +1,7 @@
---
title: 'Manual Capture'
category: 6298bd782d1cf4006032e765
-order: 31
+order: 6
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: 'manual-capture'
diff --git a/content/payment-methods/mbway.md b/content/payment-methods/mbway.md
index 146191a3e..95ca1604b 100644
--- a/content/payment-methods/mbway.md
+++ b/content/payment-methods/mbway.md
@@ -1,7 +1,7 @@
---
title: 'MB WAY'
category: 6298bd782d1cf4006032e765
-order: 10
+order: 9
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'mb-way'
diff --git a/content/payment-methods/moto.md b/content/payment-methods/moto.md
index ab0e38ec5..224bece34 100644
--- a/content/payment-methods/moto.md
+++ b/content/payment-methods/moto.md
@@ -1,7 +1,7 @@
---
title: 'MOTO'
category: 6298bd782d1cf4006032e765
-order: 32
+order: 7
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: 'moto'
diff --git a/content/payment-methods/multibanco.md b/content/payment-methods/multibanco.md
index 2672a4d9f..ebd837900 100644
--- a/content/payment-methods/multibanco.md
+++ b/content/payment-methods/multibanco.md
@@ -1,7 +1,7 @@
---
title: 'Multibanco'
category: 6298bd782d1cf4006032e765
-order: 11
+order: 13
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'multibanco'
diff --git a/content/payment-methods/mybank.md b/content/payment-methods/mybank.md
index 7d4283e7e..b4b71ad2b 100644
--- a/content/payment-methods/mybank.md
+++ b/content/payment-methods/mybank.md
@@ -1,7 +1,7 @@
---
title: 'MyBank'
category: 6298bd782d1cf4006032e765
-order: 11
+order: 12
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'mybank'
diff --git a/content/payment-methods/request-to-pay.md b/content/payment-methods/request-to-pay.md
index 6b6a4a654..97e462630 100644
--- a/content/payment-methods/request-to-pay.md
+++ b/content/payment-methods/request-to-pay.md
@@ -1,7 +1,7 @@
---
title: 'Request to Pay (Deprecated)'
category: 6298bd782d1cf4006032e765
-order: 12
+order: 14
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'request-to-pay'
diff --git a/content/payment-methods/sofort.md b/content/payment-methods/sofort.md
index 16202e396..d9c6661c5 100755
--- a/content/payment-methods/sofort.md
+++ b/content/payment-methods/sofort.md
@@ -1,7 +1,7 @@
---
title: 'Sofort (Deprecated)'
category: 6298bd782d1cf4006032e765
-order: 13
+order: 15
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'sofort'
diff --git a/content/payment-methods/trustly.md b/content/payment-methods/trustly.md
index 068e39eaf..a077b669a 100644
--- a/content/payment-methods/trustly.md
+++ b/content/payment-methods/trustly.md
@@ -1,7 +1,7 @@
---
title: 'Trustly'
category: 6298bd782d1cf4006032e765
-order: 14
+order: 16
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'trustly'
diff --git a/content/payment-methods/trustpay.md b/content/payment-methods/trustpay.md
index 53d34f207..394765c5e 100644
--- a/content/payment-methods/trustpay.md
+++ b/content/payment-methods/trustpay.md
@@ -1,7 +1,7 @@
---
title: 'TrustPay'
category: 6298bd782d1cf4006032e765
-order: 15
+order: 17
hidden: false
parentDoc: 62a728d48b97080046c1d220
slug: 'trustpay'
diff --git a/content/payment-methods/uncleared.md b/content/payment-methods/uncleared.md
index f84d0e74d..87d2fb5cb 100644
--- a/content/payment-methods/uncleared.md
+++ b/content/payment-methods/uncleared.md
@@ -1,7 +1,7 @@
---
title: 'Uncleared card payments'
category: 6298bd782d1cf4006032e765
-order: 33
+order: 8
hidden: false
parentDoc: 62a727569e389a012f577acd
excerpt: Capture or decline potentially fraudulent card payments.
diff --git a/content/payment-methods/zero-authorization.md b/content/payment-methods/zero-authorization.md
index 22ebc08e7..6abc33067 100644
--- a/content/payment-methods/zero-authorization.md
+++ b/content/payment-methods/zero-authorization.md
@@ -1,7 +1,7 @@
---
title: 'Zero Authorization'
category: 6298bd782d1cf4006032e765
-order: 34
+order: 9
hidden: false
parentDoc: 62a727569e389a012f577acd
slug: 'zero-authorization'
From 557974ef45346308e7dac8664167596428f04c37 Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Mon, 23 Sep 2024 16:16:34 +0200
Subject: [PATCH 172/319] DOCS-4360: Remove surcharges are no longer supported,
but you can request a patch. In OpenCart page.
---
content/integrations/opencart-3.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/content/integrations/opencart-3.md b/content/integrations/opencart-3.md
index 704a3c17c..eb6488f33 100755
--- a/content/integrations/opencart-3.md
+++ b/content/integrations/opencart-3.md
@@ -242,8 +242,7 @@ As a temporary solution, you can disable payments with shopping carts.
## Surcharges
-[Surcharges](/docs/surcharges/) are no longer supported, but you can request a patch.
-Email
+[Surcharges](/docs/surcharges/) are not supported by default.
> ⚠️ Attention Dutch merchants
>
From 64a67adb26fc5316e5440758df1db9b78fa6bc50 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Mon, 23 Sep 2024 16:32:10 +0200
Subject: [PATCH 173/319] test (#3088)
---
content/integrations/opencart-3.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/integrations/opencart-3.md b/content/integrations/opencart-3.md
index eb6488f33..00efe7f70 100755
--- a/content/integrations/opencart-3.md
+++ b/content/integrations/opencart-3.md
@@ -242,7 +242,7 @@ As a temporary solution, you can disable payments with shopping carts.
## Surcharges
-[Surcharges](/docs/surcharges/) are not supported by default.
+[Surcharges](/docs/surcharges/) are not supported by default.
> ⚠️ Attention Dutch merchants
>
From 3b8272cf51eb4347d02722182dcc98c5b1b946aa Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 24 Sep 2024 10:46:27 +0200
Subject: [PATCH 174/319] DOCS-4362: ideal qr change broken link (#3089)
---
content/payment-methods/ideal.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/payment-methods/ideal.md b/content/payment-methods/ideal.md
index c7a091c28..c68f3dc5e 100755
--- a/content/payment-methods/ideal.md
+++ b/content/payment-methods/ideal.md
@@ -97,7 +97,7 @@ The table below sets out the <> and <iDEAL QR has a wide range of applications. Customers can scan QR codes off screens or paper (e.g. invoices, receipts), and change the amount to pay. This makes it particularly suitable for hospitality, charity collectors, and home deliveries. You can specify whether the same QR code can be used more than once.
+iDEAL QR has a wide range of applications. Customers can scan QR codes off screens or paper (e.g. invoices, receipts), and change the amount to pay. This makes it particularly suitable for hospitality, charity collectors, and home deliveries. You can specify whether the same QR code can be used more than once.
Not all Dutch banking apps support iDEAL QR yet, so we recommend that customers scan QR codes with their camera or a general QR reader. This redirects to the ideal.nl payment page, which works for all banks.
From 07d0dde2ffb8291725d977cdeebf600dbda5a431 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 24 Sep 2024 11:06:54 +0200
Subject: [PATCH 175/319] DOCS-4365: in3 to iDEAL in3 (#3090)
---
content/payment-methods/in3.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md
index 6d433d3e4..eee5745df 100644
--- a/content/payment-methods/in3.md
+++ b/content/payment-methods/in3.md
@@ -9,13 +9,13 @@ slug: 'in3'
-in3 is a Dutch <> method where customers pay in 3 installments, at no extra cost and without having to register with the Bureau Krediet Registratie (BKR). in3 guarantees <> after receiving the first installment.
+iDEAL in3 is a Dutch <> method where customers pay in 3 installments, at no extra cost and without having to register with the Bureau Krediet Registratie (BKR). iDEAL in3 guarantees <> after receiving the first installment.
-Read how in3 can benefit your business on multisafepay.com
+Read how iDEAL in3 can benefit your business on multisafepay.com
| Supports | Details |
|---|---|
-| [Countries](/docs/payment-methods#payment-methods-by-country) | Netherlands – in3 checks the customer's country, and billing/shipping address to confirm. |
+| [Countries](/docs/payment-methods#payment-methods-by-country) | Netherlands – iDEAL in3 checks the customer's country, and billing/shipping address to confirm. |
| [Currencies](/docs/currencies/) | EUR |
| [Chargebacks](/docs/chargebacks/) | No |
| [Discounts](/docs/discounts/) | Yes You can request in3 to process a full or partial refund, either before <> or up to 1 year afterwards. |
@@ -39,12 +39,12 @@ The table below sets out the <> and < You can no longer cancel. You can only refund. | Completed | Uncleared |
| You can [manually change the order status to shipped](#shipment) for your records, but this is not required to trigger invoicing. | Shipped | Uncleared |
| MultiSafepay has collected payment. | Completed | Completed |
-| in3 declined the transaction. | Declined | Declined |
+| iDEAL in3 declined the transaction. | Declined | Declined |
| The customer cancelled the transaction or abandoned the first installment. | Void | Void |
| The customer didn't pay the first installment. | Expired | Expired |
| **Refunds:** in3 has successfully processed a full or partial refund. | Completed | Completed |
@@ -82,11 +82,11 @@ The table below sets out the <> and <> orders, you must display your terms and conditions in your checkout.
### Ready-made integrations
-in3 (direct) is supported in:
+iDEAL in3 (direct) is supported in:
- [Craft Commerce](/docs/craft-commerce/)
- [Magento 1](/docs/magento-1/) and [Magento 2](/docs/magento-2/)
- [OpenCart](/docs/opencart/)
-- [PrestaShop 1.7](/docs/prestashop-1-7/)
+- [PrestaShop](/docs/prestashop/)
- [VirtueMart 3](/docs/virtuemart-3/)
- [VirtueMart 4](/docs/virtuemart-4/)
- [WooCommerce](/docs/woocommerce/)
@@ -108,7 +108,7 @@ Different billing and shipping addresses are supported.
- Minimum amount: 50 EUR
- Maximum amount: 5000 EUR
-You can adjust these limits in the <> of our [ready-made integrations](/docs/our-integrations/) to show or hide in3 on your checkout page depending on the order value.
+You can adjust these limits in the <> of our [ready-made integrations](/docs/our-integrations/) to show or hide iDEAL in3 on your checkout page depending on the order value.
## Gift cards
From 9cac316771a052cced11124efb5b7452a7cde1f4 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 24 Sep 2024 12:10:22 +0200
Subject: [PATCH 176/319] DOCS-4366: Fix broken URL's for PrestaShop (#3091)
---
content/integrations/prestashop.md | 2 +-
content/payment-methods/amazon-pay.md | 19 +++++++------------
content/payment-methods/cbc-kbc.md | 2 +-
content/payment-methods/edenred.md | 2 +-
content/payment-methods/in3.md | 10 +++++-----
content/payment-methods/monizze.md | 2 +-
content/payment-methods/paypal.md | 3 +--
content/payment-methods/paysafecard.md | 5 ++---
content/payment-methods/riverty.md | 2 +-
content/payment-methods/sodexo.md | 2 +-
content/payment-methods/wechatpay.md | 2 +-
11 files changed, 22 insertions(+), 29 deletions(-)
diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md
index 8765ef802..6eda6c9b9 100644
--- a/content/integrations/prestashop.md
+++ b/content/integrations/prestashop.md
@@ -268,7 +268,7 @@ To disable this, follow these steps:
4. For **actionOrderSlipAdd**, select the three dots, and then click **Unhook**.
-
+
For more information, see PrestaShop – Creating returns and refunds .
## Shopping carts
diff --git a/content/payment-methods/amazon-pay.md b/content/payment-methods/amazon-pay.md
index d095abe8b..4be2e0482 100755
--- a/content/payment-methods/amazon-pay.md
+++ b/content/payment-methods/amazon-pay.md
@@ -87,18 +87,13 @@ For more information, see Amazon Pay – You can request in3 to process a full or partial refund, either before <> or up to 1 year afterwards. |
+| [Discounts](/docs/discounts/) | Yes You can request iDEAL in3 to process a full or partial refund, either before <> or up to 1 year afterwards. |
| [Payment pages](/docs/payment-pages/) | Yes (current version only) |
| [Refunds](/docs/refund-payments/) | Yes: Full, partial, and API refunds |
| [Second Chance](/docs/second-chance/) | Yes |
@@ -40,14 +40,14 @@ The table below sets out the <> and < You can no longer cancel. You can only refund. | Completed | Uncleared |
| You can [manually change the order status to shipped](#shipment) for your records, but this is not required to trigger invoicing. | Shipped | Uncleared |
| MultiSafepay has collected payment. | Completed | Completed |
| iDEAL in3 declined the transaction. | Declined | Declined |
| The customer cancelled the transaction or abandoned the first installment. | Void | Void |
| The customer didn't pay the first installment. | Expired | Expired |
-| **Refunds:** in3 has successfully processed a full or partial refund. | Completed | Completed |
+| **Refunds:** iDEAL in3 has successfully processed a full or partial refund. | Completed | Completed |
| **Refunds:** The refund was declined. | Declined | Declined |
# Activation
@@ -92,7 +92,7 @@ iDEAL in3 (direct) is supported in:
- [WooCommerce](/docs/woocommerce/)
### Testing
-To test in3 payments, see Testing payment methods – [BNPL methods](/docs/testing#bnpl-methods).
+To test iDEAL in3 payments, see Testing payment methods – [BNPL methods](/docs/testing#bnpl-methods).
---
@@ -112,7 +112,7 @@ You can adjust these limits in the <> of our [ready-made integ
## Gift cards
-When paying with a gift card and in, customers must enter the gift card details **before** placing their order, i.e. on your checkout page. This is because in3 collects and require precise order specifications. Our platform would interpret the gift card as a discount and generate incorrect order information, e.g. tax calculations.
+When paying with a gift card and in, customers must enter the gift card details **before** placing their order, i.e. on your checkout page. This is because iDEAL in3 collects and require precise order specifications. Our platform would interpret the gift card as a discount and generate incorrect order information, e.g. tax calculations.
You are solely responsible for this in your integration.
diff --git a/content/payment-methods/monizze.md b/content/payment-methods/monizze.md
index 2e501420e..592dfd49b 100644
--- a/content/payment-methods/monizze.md
+++ b/content/payment-methods/monizze.md
@@ -80,7 +80,7 @@ The table below sets out the <> and <
diff --git a/content/payment-methods/paysafecard.md b/content/payment-methods/paysafecard.md
index 2dad2bfb1..1d7aea68f 100644
--- a/content/payment-methods/paysafecard.md
+++ b/content/payment-methods/paysafecard.md
@@ -81,15 +81,14 @@ For any questions, email
Supported in:
- [CS-Cart](/docs/cs-cart/)
-- [Drupal 7](/docs/drupal/)
-- [Drupal 8 & 9](/docs/drupal/)
+- [Drupal](/docs/drupal/)
- [OsCommerce](/docs/oscommerce/)
- [Magento 1](/docs/magento-1/)
- [Magento 2](/docs/magento-2/)
- [OpenCart 3](/docs/opencart/)
- [OpenCart 4](/docs/opencart-4/)
- [PrestaShop 1.6](/docs/prestashop-1-6/)
-- [PrestaShop 1.7](/docs/prestashop-1-7/)
+- [PrestaShop](/docs/prestashop/)
- [Shopware 5](/docs/shopware/)
- [Shopware 6](/docs/shopware/)
- [VirtueMart 3](/docs/virtuemart/)
diff --git a/content/payment-methods/riverty.md b/content/payment-methods/riverty.md
index 0613fd950..2140dc9fc 100755
--- a/content/payment-methods/riverty.md
+++ b/content/payment-methods/riverty.md
@@ -89,7 +89,7 @@ Riverty is supported in many of our ready-made integrations.
- [Magento 1](/docs/magento-1/) & [Magento 2](/docs/magento-2/)
- [Odoo](/docs/odoo/)
- [OpenCart](/docs/opencart/)
-- [PrestaShop 1.6 and 1.7](/docs/prestashop-1-7/)
+- [PrestaShop](/docs/prestashop/)
- [Shopware 5 and 6](/docs/shopware/)
- [WooCommerce](/docs/woocommerce/)
- [X-Cart](/docs/x-cart/)
diff --git a/content/payment-methods/sodexo.md b/content/payment-methods/sodexo.md
index 2973901c5..4fb7f8e2c 100644
--- a/content/payment-methods/sodexo.md
+++ b/content/payment-methods/sodexo.md
@@ -77,7 +77,7 @@ The table below sets out the <> and <> and <> orders, the QR code displays on the [payment page](/docs/payment-pages/) under **Payment methods**.
### Ready-made integrations
-Supported in our [PrestaShop 1.7 plugin](/docs/prestashop-1-7/).
+Supported in our [PrestaShop plugin](/docs/prestashop/).
### Testing
To test WeChat Pay payments, see Testing payment methods - [Wallets](/docs/testing#wallets).
From ca059df128121c2c2a5c3134f4f9f4103a3a5dc0 Mon Sep 17 00:00:00 2001
From: JesseSnnt
Date: Tue, 24 Sep 2024 13:07:50 +0200
Subject: [PATCH 177/319] DOCS-4367: Update supported payment methods logic4
(#3092)
---
content/integrations/partner-integrations.md | 6 +++++-
content/payment-methods/in3.md | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md
index 5c34534d2..a3592f02d 100644
--- a/content/integrations/partner-integrations.md
+++ b/content/integrations/partner-integrations.md
@@ -207,7 +207,11 @@ For any technical queries about the plugin, see Logic4 – Apple Pay's domain & IP addresses
-- When using a protected environment during testing, ensure you have **whitelisted **our IP ranges. You can mention this need to our support team via [info@multisafepay.com](mailto:info@multisafepay.com) who will send the information to you.
-- Check if the issue occurs via the** redirect solution** as well. This result is valuable information when contacting [info@multisafepay.com](mailto:info@multisafepay.com).
+- Check if Apple Pay's domain & IP addresses are whitelisted.
+- When testing in a protected environment, ensure our IP ranges are **whitelisted**. You can request this information by contacting our support team at [info@multisafepay.com](mailto:info@multisafepay.com).
+- Verify if the issue also occurs with the **redirect solution**. This information will be valuable when contacting [info@multisafepay.com](mailto:info@multisafepay.com).
## Google Pay direct integration
- Ensure you follow our step by step guide.
-- Ensure you have validated the URL correctly.
-- Check if the issue occurs via the redirect solution as well. This result is valuable information when contacting [info@multisafepay.com](mailto:info@multisafepay.com).
+- Ensure the URL has been validated.
+- Verify if the issue also occurs with the **redirect solution**. This information will be valuable when contacting [info@multisafepay.com](mailto:info@multisafepay.com).
-# Integration contact rules
+# Guidelines for contacting Integration Support
-If all the steps within your topic did not solve the issue, we are always available to help you investigate further.
-When creating a ticket to [integration@multisafepay.com](mailto:integration@multisafepay.com), please **always** indicate the following:
+**Ensure that you have completed each of the steps mentioned above.** If the issue persists, please reach out to us for further assistance.
+When creating a ticket with [integration@multisafepay.com](mailto:integration@multisafepay.com), please **ensure** to include the following information:
-- **Confirm you have executed all the steps we recommend for self-troubleshooting**
-- Your **merchant ID **(MID) to identify your account.
-- Indicate if you are integrating via our API, or which plugin version you are using.
-- Send any examples (transactions, order IDs) and if possible, screenshots.
-- When did the issue start occurring?
-- Have you done any changes from your side shortly before the issue occurred for the first time?
-- We conduct our investigations in a staging or test environment of your ecommerce platform. Create a temporary username and a strong password to give us access. Always delete the temporary account after we finish the investigation.
+- Your **merchant ID** (MID).
+- Specify whether you are using our API or a plugin. In case of the latter, kindly indicate the version.
+- Please share any examples, such as transactions or order IDs, and attach screenshots if possible.
+- When did you first experience the issue?
+- Did you make any changes before the issue first occured?
+- We will conduct our investigation in a staging environment of your ecommerce platform. Please create a temporary username and a strong password to grant us access. Remember to delete the temporary account once the investigation is complete.
> ⚠️ **Note:**
>
-> MultiSafepay assumes **no** responsibility for mistakes in your live environment.
-> We only ask for the credentials for your live ecommerce platform account in extraordinary circumstances. In such cases, we recommended making a backup beforehand, just in case.
+> MultiSafepay **is not responsible** for any errors that occur in your live environment.
+> We request credentials for your live ecommerce platform account only in extraordinary circumstances. We recommended making a backup beforehand.
>
-> - If we require server access, we work exclusively with SFTP and SSH, using Port 22. For security reasons, we no longer support the FTP protocol.
+> - If server access is required, we exclusively use SFTP and SSH through Port 22. For security reasons, we no longer support the FTP protocol.
>
-> - If we cannot reproduce an issue in a standard staging or test environment, we consider it a _time-boxed project_. This means we allocate a limited period of time to work on it further. We cannot guarantee a solution.
\ No newline at end of file
+> - If we cannot reproduce an issue in a standard staging or test environment, we classify it as a _time-boxed project_. This means we allocate a limited amount of time to investigate the issue further. Please keep in mind that a solution is not guaranteed.
\ No newline at end of file
From ecb36b6ba3579a386ed7d3cc55a9bed79f6e391b Mon Sep 17 00:00:00 2001
From: Jesse Sinnathamby
Date: Tue, 24 Sep 2024 17:10:12 +0200
Subject: [PATCH 179/319] Revert "DOCS-4368: corrections on Integration
Troubleshooting Guide page (#3094)"
This reverts commit 41bb8fa3c211734484e342fe914562d4e08a4ad9.
---
content/integrations/webshop-access.md | 70 +++++++++++++-------------
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md
index bd5bfde8c..8647a4880 100644
--- a/content/integrations/webshop-access.md
+++ b/content/integrations/webshop-access.md
@@ -22,7 +22,7 @@ Seek assistance from your developer to make sure the basic configurations are in
Check the **changelog **for your plugin to read about any recently added features, and bugfixes.
-**Tip**: Before conducting updates, always test via a **staging **environment.
+Tip: Before conducting updates, always test via a **staging **environment.
## Third party solutions
@@ -35,14 +35,15 @@ If you encounter an issue with payments while using one of our plugin integratio
If you encounter issues that affect payments, valuable first checks are:
- Log into your Merchant Dashboard and check for any alerts: You see alerts on your main page if we have recently requested information, or your account needs extra configuration.
-- Create a [payment link](/docs/payment-links/) and verify if the issue occurs as well.This helps narrow down if the cause lies in a payment configuration, or rather within the plugin/API integration.
- **Tip**: Always indicate the result of this step when reaching out to us, best with a screenshot.
+- Create a [payment link]\(payment link) and verify if the issue occurs as well. (!)
+ This helps narrow down if the cause lies in a payment configuration, or rather within the plugin /API integration.
+ **Tip: Always indicate the result of this step when reaching out to us, best with a screenshot. **
- Check if the payment method is available for the country and currency selected.
- Check if a transaction is created (and declined) or if no transaction arrives to the system in the first place.
With the results of these checks, reach out to us via [info@multisafepay.com](mailto:info@multisafepay.com).
-**Tip**: Check our status page for general updates or notifications.
+Tip: Check our status page for general updates or notifications.
Further checks for plugin integrations:
@@ -56,14 +57,14 @@ Further checks for custom integrations:
# Payment Component not displayed correctly
-Possible errors you may encounter in case of misconfigurations are:
+Possible errors you may encounter incase of misconfigurations are:
- Payment component displayed empty
- _Temporarily not available_
- - If you use our API
- - If you use one of our ready-made solutions, contact [integration@multisafepay.com](mailto:integration@multisafepay.com)
+ If you use our API
+ If you use one of our ready-made solutions, contact [integration@multisafepay.com](mailto:integration@multisafepay.com)
-**Checks** we recommend for our **plugins**:
+**Checks **we recommend for our **plugins**:
- **Always** ensure that the setting Payment component is set to "enabled" within the payment method.
- Review which themes you are using and indicate these to us.
@@ -72,7 +73,7 @@ Possible errors you may encounter in case of misconfigurations are:
-**Checks** we recommend for **API** solutions:
+**Checks **we recommend for **API **solutions:
- Ensure you have followed all instructions in the Payment component guide.
- Reach out to us via [integration@multisafepay.com](mailto:integration@multisafepay.com)
@@ -82,11 +83,9 @@ As a temporary fix, while we investigate the issue, you can use our payments via
# Amounts differ between shopping cart and payment page
- Check if the issue occurs also when deactivating any 3rd party solutions
-**Tip**: you can do this best via a staging environment.
-- Contact us for support.
-
+Tip: you can do this best via a staging environment.
+- Contact us for support.
Alternative solutions in the meantime:
-
- Activate payment components to avoid confusion with your customers.
- Disable the shopping cart via your settings for the payment page in your Merchant Dashboard.
@@ -94,7 +93,7 @@ Alternative solutions in the meantime:
If you encounter one of the following issues:
-- **Transaction status** in your backoffice differs from the status on your MultiSafepay Dashboard.
+- **Transaction status** in your backoffice differs from the status on your MultiSafepay Dashboard
You can try the following:
@@ -105,44 +104,45 @@ With the results of these checks, reach out to us via [integration@multisafepay.
# Direct payment button issues
-If you encounter any issues while integrating direct payment buttons for Apple Pay or Google Pay, please follow these recommendations:
+If you notice any troubles during the integration of direct buttons for Apple Pay or Google Pay, we recommend:
## Apple Pay direct integration
-- Ensure that card payments, as well as Apple Pay are enabled for your website.
+- Ensure that card payments, as well as Apple Pay are enabled for your website / account.
- Ensure you follow our step by step guide.
- When validating your domain, double check to have associated the **correct URL**.
-- Ensure that you correctly distinguish between the **TEST** and **LIVE** environments, as well as the corresponding domain validation files for each.
+- Distinguish correctly between **TEST **and **LIVE **environments, and the respective domain validation files.
- Place the correct validation file, and do NOT copy-paste.
-- Check if