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 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": "\n \n \n \n \n \t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n
Manage accountAPI reference
Access affiliated accountsList affiliates
Get affiliate
Create login URL
Update affiliate
List affiliate's balances
Charge fees to affiliatesCharge affiliate
Fund affiliatesFund affiliate
Payout affiliatesPayout affiliate
Auto payouts
Access requests made to affiliates List inquiries
Get inquiry
Access messages sent to affiliates List message
Get message
List all UBOsList UBOs
Get closing balancesList affiliate's closing balances
Adjust feesAdjust fees for an affiliate account
Get site categoriesList site categories
\n\n" + "html": "\n \n \n \n \n \t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n
Manage accountAPI reference
Access affiliated accountsList affiliates
Get affiliate
Create login URL
Update affiliate
List affiliate's balances
Charge fees to affiliatesCharge affiliate
Fund affiliatesFund affiliate
Payout affiliatesPayout affiliate
Auto payouts
Access requests made to affiliates List inquiries
Get inquiry
Access messages sent to affiliates List message
Get message
List all UBOsList UBOs
Get closing balancesList affiliate's closing balances
Adjust feesAdjust fees for an affiliate account
Get site categoriesList site categories
\n\n" } [/block] --- From 0fea376a32f520c503131ef9c39d5219d2bb3756 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Tue, 6 Feb 2024 16:36:08 +0100 Subject: [PATCH 012/319] DOCS-4160: Release of the 5.12.0 of the PrestaShop 1.7 plugin (#2927) --- 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 959eb5ad8..111ee58a7 100644 --- a/content/integrations/prestashop-1-7.md +++ b/content/integrations/prestashop-1-7.md @@ -12,7 +12,7 @@ slug: 'prestashop-1-7'
-Download +Download Source code From ede8df346daad55f0b17bb6b25749a8ecd1626e6 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Tue, 6 Feb 2024 16:37:32 +0100 Subject: [PATCH 013/319] DOCS-4159: Fix supported versions of OpenCart 4 plugin (#2926) --- content/integrations/opencart-4.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/integrations/opencart-4.md b/content/integrations/opencart-4.md index b2f5fb45b..56eb5e4ac 100644 --- a/content/integrations/opencart-4.md +++ b/content/integrations/opencart-4.md @@ -26,8 +26,8 @@ slug: 'opencart-4' # Prerequisites - [MultiSafepay account](/docs/getting-started-guide/) -- OpenCart 4.0.1.x -- PHP version 8.0, 8.1 +- OpenCart 4.0.1.1 or lower +- PHP versions supported: 8.0, 8.1 # Installation @@ -220,4 +220,4 @@ The Integration Team will do their best to support you with installing surcharge } [/block] -[Top of page](#) \ No newline at end of file +[Top of page](#) From cd55593f75ac844fa71a2644f3bc035202d954de Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Tue, 6 Feb 2024 16:38:21 +0100 Subject: [PATCH 014/319] DOCS-4155: Fix error in section "Order requests" of the WooCommerce page (#2925) --- content/integrations/woocommerce.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md index 96071575b..38d840e71 100755 --- a/content/integrations/woocommerce.md +++ b/content/integrations/woocommerce.md @@ -134,8 +134,8 @@ First, read the following: Example of how to implement and overwrite the shopping cart: ``` javascript -add_filter('multisafepay_order_request', 'return_my_multisafepay_order_request'); -function return_my_own_locale( \MultiSafepay\Api\Transactions\OrderRequest $order_request) { +add_filter( 'multisafepay_order_request', 'return_my_multisafepay_order_request' ); +function return_my_multisafepay_order_request( \MultiSafepay\Api\Transactions\OrderRequest $order_request ) { // Your conditions and logic to return a valid order request // Register a CartItem $shopping_cart_items = array(); From 38cb1bc020a0f37677edd80dc36b94d2f7bd8ba0 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 6 Mar 2024 17:34:02 +0100 Subject: [PATCH 015/319] DOCS-4176: CCV Shop (#2930) --- content/integrations/ccv-shop-partner.md | 62 +++++++++++++++++ content/integrations/ccv-shop.md | 87 ++++++++++++++++++------ content/integrations/coppermine.md | 2 +- content/integrations/craft-commerce.md | 2 +- content/integrations/drupal.md | 2 +- content/integrations/ecwid.md | 2 +- content/integrations/lightspeed.md | 2 +- content/integrations/magento-1.md | 2 +- content/integrations/magento-2.md | 2 +- content/integrations/mijnwebwinkel.md | 2 +- content/integrations/myshop.md | 2 +- content/integrations/odoo.md | 2 +- content/integrations/opencart-3.md | 2 +- content/integrations/opencart-4.md | 2 +- content/integrations/oscommerce.md | 2 +- content/integrations/prestashop-1-6.md | 2 +- content/integrations/prestashop-1-7.md | 2 +- content/integrations/pwa-studio.md | 2 +- content/integrations/scandipwa.md | 2 +- content/integrations/shopify.md | 2 +- 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 +- static/logo/Integrations/ccv-shop.svg | 55 +++++++++++++++ 29 files changed, 210 insertions(+), 46 deletions(-) create mode 100644 content/integrations/ccv-shop-partner.md mode change 100755 => 100644 content/integrations/ccv-shop.md create mode 100644 static/logo/Integrations/ccv-shop.svg diff --git a/content/integrations/ccv-shop-partner.md b/content/integrations/ccv-shop-partner.md new file mode 100644 index 000000000..6d1025db4 --- /dev/null +++ b/content/integrations/ccv-shop-partner.md @@ -0,0 +1,62 @@ +--- +title: "CCV Shop" +category: 62962dd7e272a6002ebbbbc5 +order: 100 +hidden: true +parentDoc: 62a9a54aba9800011a8bda88 +slug: 'ccv-shop-partner' +excerpt: "Technical manual for MultiSafepay's free app." +--- + + +# Prerequisites + +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 <> 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**. +
+ +___ + +# User guide + +## Payment methods + +
+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/) + +
+ +## Refunds + +You can process refunds from your MultiSafepay dashboard, but not in your <>. +
+ +--- + +[block:html] +{ +"html": "
\n

\n 💬\n

Support

\n

\n \n
" +} +[/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
" +"html": "
\n

\n 💬\n

Support

\n

\n \n
" } [/block] diff --git a/content/integrations/coppermine.md b/content/integrations/coppermine.md index 24eb0282d..e5e90d0ce 100644 --- a/content/integrations/coppermine.md +++ b/content/integrations/coppermine.md @@ -1,7 +1,7 @@ --- title: "Coppermine" category: 62962dd7e272a6002ebbbbc5 -order: 1 +order: 0 hidden: false parentDoc: 62a9a54aba9800011a8bda88 slug: 'coppermine' diff --git a/content/integrations/craft-commerce.md b/content/integrations/craft-commerce.md index 5dff23226..2afe8eddf 100755 --- a/content/integrations/craft-commerce.md +++ b/content/integrations/craft-commerce.md @@ -1,7 +1,7 @@ --- title: "Craft Commerce" category: 62962dd7e272a6002ebbbbc5 -order: 0 +order: 2 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index dd1223898..315b0f1d0 100755 --- a/content/integrations/drupal.md +++ b/content/integrations/drupal.md @@ -1,7 +1,7 @@ --- title: "Drupal" category: 62962dd7e272a6002ebbbbc5 -order: 2 +order: 3 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/ecwid.md b/content/integrations/ecwid.md index ec6990a77..951dc9700 100644 --- a/content/integrations/ecwid.md +++ b/content/integrations/ecwid.md @@ -1,7 +1,7 @@ --- title: "Ecwid" category: 62962dd7e272a6002ebbbbc5 -order: 2 +order: 1 hidden: false parentDoc: 62a9a54aba9800011a8bda88 slug: 'ecwid' diff --git a/content/integrations/lightspeed.md b/content/integrations/lightspeed.md index 522f165f4..be4a6b6ab 100755 --- a/content/integrations/lightspeed.md +++ b/content/integrations/lightspeed.md @@ -1,7 +1,7 @@ --- title: "Lightspeed" category: 62962dd7e272a6002ebbbbc5 -order: 3 +order: 4 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free app." diff --git a/content/integrations/magento-1.md b/content/integrations/magento-1.md index 5c5555b72..c1dcbb2df 100755 --- a/content/integrations/magento-1.md +++ b/content/integrations/magento-1.md @@ -1,7 +1,7 @@ --- title: "Magento 1" category: 62962dd7e272a6002ebbbbc5 -order: 4 +order: 5 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md index f3ba5605d..2d36fc8ea 100755 --- a/content/integrations/magento-2.md +++ b/content/integrations/magento-2.md @@ -1,7 +1,7 @@ --- title: "Magento 2" category: 62962dd7e272a6002ebbbbc5 -order: 5 +order: 6 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/mijnwebwinkel.md b/content/integrations/mijnwebwinkel.md index 815601b28..ef8e12bd2 100644 --- a/content/integrations/mijnwebwinkel.md +++ b/content/integrations/mijnwebwinkel.md @@ -1,7 +1,7 @@ --- title: "Mijnwebwinkel" category: 62962dd7e272a6002ebbbbc5 -order: 3 +order: 2 hidden: false parentDoc: 62a9a54aba9800011a8bda88 excerpt: "Technical manual for Mijnwebwinkel's free app." diff --git a/content/integrations/myshop.md b/content/integrations/myshop.md index d6ee54d1c..ef8cf7fe1 100644 --- a/content/integrations/myshop.md +++ b/content/integrations/myshop.md @@ -1,7 +1,7 @@ --- title: "myShop" category: 62962dd7e272a6002ebbbbc5 -order: 4 +order: 3 hidden: false parentDoc: 62a9a54aba9800011a8bda88 slug: 'myshop' diff --git a/content/integrations/odoo.md b/content/integrations/odoo.md index e83acca7f..d95509a38 100644 --- a/content/integrations/odoo.md +++ b/content/integrations/odoo.md @@ -1,7 +1,7 @@ --- title: "Odoo" category: 62962dd7e272a6002ebbbbc5 -order: 6 +order: 7 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/opencart-3.md b/content/integrations/opencart-3.md index 09a72f06c..a505525d1 100755 --- a/content/integrations/opencart-3.md +++ b/content/integrations/opencart-3.md @@ -1,7 +1,7 @@ --- title: "OpenCart 3" category: 62962dd7e272a6002ebbbbc5 -order: 7 +order: 8 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/opencart-4.md b/content/integrations/opencart-4.md index 56eb5e4ac..94c3f2873 100644 --- a/content/integrations/opencart-4.md +++ b/content/integrations/opencart-4.md @@ -1,7 +1,7 @@ --- title: "OpenCart 4" category: 62962dd7e272a6002ebbbbc5 -order: 8 +order: 9 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/oscommerce.md b/content/integrations/oscommerce.md index ffe7efe43..b49560c4c 100755 --- a/content/integrations/oscommerce.md +++ b/content/integrations/oscommerce.md @@ -1,7 +1,7 @@ --- title: "OsCommerce" category: 62962dd7e272a6002ebbbbc5 -order: 9 +order: 10 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/prestashop-1-6.md b/content/integrations/prestashop-1-6.md index 158e0a766..2385ede16 100644 --- a/content/integrations/prestashop-1-6.md +++ b/content/integrations/prestashop-1-6.md @@ -1,7 +1,7 @@ --- title: "PrestaShop 1.6" category: 62962dd7e272a6002ebbbbc5 -order: 10 +order: 12 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop-1-7.md index 111ee58a7..fc028b8ba 100644 --- a/content/integrations/prestashop-1-7.md +++ b/content/integrations/prestashop-1-7.md @@ -1,7 +1,7 @@ --- title: "PrestaShop 1.7" category: 62962dd7e272a6002ebbbbc5 -order: 11 +order: 13 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/pwa-studio.md b/content/integrations/pwa-studio.md index 0f8eea4e3..611a25c9f 100644 --- a/content/integrations/pwa-studio.md +++ b/content/integrations/pwa-studio.md @@ -1,7 +1,7 @@ --- title: "PWA Studio (Venia)" category: 62962dd7e272a6002ebbbbc5 -order: 12 +order: 11 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's plugin." diff --git a/content/integrations/scandipwa.md b/content/integrations/scandipwa.md index b582fd10d..39db53f52 100644 --- a/content/integrations/scandipwa.md +++ b/content/integrations/scandipwa.md @@ -1,7 +1,7 @@ --- title: "ScandiPWA" category: 62962dd7e272a6002ebbbbc5 -order: 13 +order: 14 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md index da86a81ce..f4e9a265e 100755 --- a/content/integrations/shopify.md +++ b/content/integrations/shopify.md @@ -1,7 +1,7 @@ --- title: "Shopify" category: 62962dd7e272a6002ebbbbc5 -order: 14 +order: 15 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free app." diff --git a/content/integrations/shopware-5.md b/content/integrations/shopware-5.md index 9fc44bd04..76202970c 100644 --- a/content/integrations/shopware-5.md +++ b/content/integrations/shopware-5.md @@ -1,7 +1,7 @@ --- title: "Shopware 5" category: 62962dd7e272a6002ebbbbc5 -order: 15 +order: 16 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 5e39bbf21..e93c960ae 100644 --- a/content/integrations/shopware-6.md +++ b/content/integrations/shopware-6.md @@ -1,7 +1,7 @@ --- title: "Shopware 6" category: 62962dd7e272a6002ebbbbc5 -order: 16 +order: 17 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 499bc08ae..1618a102a 100755 --- a/content/integrations/virtuemart-3.md +++ b/content/integrations/virtuemart-3.md @@ -1,7 +1,7 @@ --- title: "VirtueMart 3" category: 62962dd7e272a6002ebbbbc5 -order: 17 +order: 18 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 39ce9a4d9..60b95b4b8 100755 --- a/content/integrations/virtuemart-4.md +++ b/content/integrations/virtuemart-4.md @@ -1,7 +1,7 @@ --- title: "VirtueMart 4" category: 62962dd7e272a6002ebbbbc5 -order: 18 +order: 19 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 5a53ea2aa..5f3e8943c 100644 --- a/content/integrations/vue-storefront.md +++ b/content/integrations/vue-storefront.md @@ -1,7 +1,7 @@ --- title: "Vue Storefront" category: 62962dd7e272a6002ebbbbc5 -order: 19 +order: 20 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Free plugin for MultiSafepay payment solutions." diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md index 38d840e71..69b933028 100755 --- a/content/integrations/woocommerce.md +++ b/content/integrations/woocommerce.md @@ -1,7 +1,7 @@ --- title: "WooCommerce" category: 62962dd7e272a6002ebbbbc5 -order: 20 +order: 21 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 aef268904..1af8d68b5 100755 --- a/content/integrations/x-cart.md +++ b/content/integrations/x-cart.md @@ -1,7 +1,7 @@ --- title: "X-Cart" category: 62962dd7e272a6002ebbbbc5 -order: 21 +order: 22 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 9970d58d9..177e42e8b 100755 --- a/content/integrations/zen-cart.md +++ b/content/integrations/zen-cart.md @@ -1,7 +1,7 @@ --- title: "Zen Cart" category: 62962dd7e272a6002ebbbbc5 -order: 22 +order: 23 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/static/logo/Integrations/ccv-shop.svg b/static/logo/Integrations/ccv-shop.svg new file mode 100644 index 000000000..9d842d150 --- /dev/null +++ b/static/logo/Integrations/ccv-shop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + From 0d4004155fd8c398b36df341e48875ab4809bb3f Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 6 Mar 2024 17:37:27 +0100 Subject: [PATCH 016/319] DOCS-4176: CCV Shop --- content/integrations/ccv-shop.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index d73e5d3a1..45764e165 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -78,7 +78,8 @@ You can process full refunds for all payment methods, from your MultiSafepay das
Refund rules
-- **Automatic refunds** needs to be enabled in the configuration of the MultiSafepay app. +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. - The refund amount cannot exceed the available funds in your MultiSafepay account. From f27185c7194aef9201477128eb3fe7d51b20e10b Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 6 Mar 2024 17:39:14 +0100 Subject: [PATCH 017/319] DOCS-4172: Add missing update instructions in OpenCart 3 (#2929) --- content/integrations/opencart-3.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/integrations/opencart-3.md b/content/integrations/opencart-3.md index a505525d1..704a3c17c 100755 --- a/content/integrations/opencart-3.md +++ b/content/integrations/opencart-3.md @@ -253,6 +253,15 @@ Email You can update the plugin using the extension installer tool in your OpenCart backend. +
+How to update from version 3.0.0 or higher +
+ +1. For security, create a backup of your OpenCart application. +2. Follow the [installation](/docs/opencart#installation) instructions above. + +
+
How to update from version 2.2.0 to 3.x.x
@@ -277,7 +286,7 @@ You can update the plugin using the extension installer tool in your OpenCart ba 1. For security, create a backup of your OpenCart application. 2. Manually remove all files from the MultiSafepay extension using an FTP program or server file administration program. -3. Follow the [installation](/docs/opencart#how-to-install) instructions above. +3. Follow the [installation](/docs/opencart#installation) instructions above.

From 53c5a30c1b11c3d150cbda4432e32ca6f0b59b48 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 6 Mar 2024 17:44:13 +0100 Subject: [PATCH 018/319] DOCS-4176: Fix support section in CCV Shop page (#2931) --- content/integrations/ccv-shop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index 45764e165..0b5871e03 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -103,7 +103,7 @@ To process backend refunds: [block:html] { -"html": "
\n

\n 💬\n

Support

\n

\n \n
" +"html": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" } [/block] From 98eb9db134a4ea9cf780a81616f216a8d5c15e5b Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 6 Mar 2024 17:52:36 +0100 Subject: [PATCH 019/319] DOCS-4176: Fix support section in CCV Shop page (#2932) --- content/integrations/ccv-shop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index 0b5871e03..75b01b1f5 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -103,7 +103,7 @@ To process backend refunds: [block:html] { -"html": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" +"html": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" } [/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 +Download Source code From d6abf6d6c00e80d7af9bfdf3b6f498b0af480be4 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:37:56 +0100 Subject: [PATCH 022/319] DOCS-4178: Release of 3.0.0 for Shopware 5 plugin (#2935) --- content/integrations/shopware-5.md | 37 ++++++++---------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/content/integrations/shopware-5.md b/content/integrations/shopware-5.md index 76202970c..00aa530b5 100644 --- a/content/integrations/shopware-5.md +++ b/content/integrations/shopware-5.md @@ -23,8 +23,8 @@ slug: 'shopware-5' ## Prerequisites - [MultiSafepay account](/docs/getting-started-guide/) -- Shopware 5.6.x or 5.5.7 and above. -- Tested on PHP 7.0 +- Shopware 5.6.x and 5.7.x. +- Tested on Shopware 5.7.11 and PHP 8.0 ## Installation and configuration @@ -39,11 +39,16 @@ slug: 'shopware-5' 7. Fill out the other fields as required. 8. Go to **Configuration** and select the required payment methods.
- --- ## User guide +### Enabling and disabling payment methods + +Once the plugin is initially installed, reinstalling becomes necessary to manage the listing or delisting of enabled and disabled payment methods. + +Please follow the first four steps described in the installation and configuration process, then proceed to the fifth one, where you will find the **Reinstall** icon for clicking. + ### Backend orders To create backend orders in the MultiSafepay Shopware 5 plugin, Shopware uses a third-party plugin. @@ -52,30 +57,6 @@ See shopwareLabs GitHub – -How to configure generic gateways -
- -1. Sign in to your Shopware 5 backend. -2. Go to **MultiSafepay settings**. -3. Set the relevant [payment method gateway IDs](/reference/gateway-ids/). -4. Upload a custom gateway image, if relevant. -5. For <> orders, specify whether to include a shopping cart. - -For support, email - -You can filter generic gateways by country, and minimum and maximum amount. - -
- ## Order flows The plugin supports two flows for creating orders: **before** or **after** the transaction is completed. @@ -116,6 +97,8 @@ To change the flow you are using, follow these steps: ### Payment methods +By default, activated payment methods from your MultiSafepay account appear on the payment method list. +
Supported payment methods
From 9d875312e8ccfeb34a7eab1c2549e16176b6bdee Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Thu, 14 Mar 2024 21:52:11 +0100 Subject: [PATCH 023/319] DOCS-4180: Onboarding info ID --- content/getting-started/onboarding.md | 1 - .../{interchange.md => card-payment-pricing-models.md} | 0 2 files changed, 1 deletion(-) rename content/payment-methods/{interchange.md => card-payment-pricing-models.md} (100%) diff --git a/content/getting-started/onboarding.md b/content/getting-started/onboarding.md index 4bac74979..205e211d9 100644 --- a/content/getting-started/onboarding.md +++ b/content/getting-started/onboarding.md @@ -106,7 +106,6 @@ It was based on the Disclosure of Unusual Transactions or Financial Services Act 4. Select the UBO form, and then click **Open**. 5. Upload color copies of the identity documents of all UBOs. -✅   **Tip!** We recommend using the
KopieID app to hide personal information on passports or IDs.
# 5. Display required information diff --git a/content/payment-methods/interchange.md b/content/payment-methods/card-payment-pricing-models.md similarity index 100% rename from content/payment-methods/interchange.md rename to content/payment-methods/card-payment-pricing-models.md From 7066ac46dcc96fdde143793f0f37c9c9838472d5 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Fri, 22 Mar 2024 11:58:56 +0100 Subject: [PATCH 024/319] DOCS-4166 Amazonpay plugins --- content/payment-methods/amazon-pay.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/content/payment-methods/amazon-pay.md b/content/payment-methods/amazon-pay.md index 1c86bcbf8..9771240de 100755 --- a/content/payment-methods/amazon-pay.md +++ b/content/payment-methods/amazon-pay.md @@ -84,18 +84,20 @@ For more information, see Amazon Pay – + ### Testing To test Amazon Pay payments, see Testing – [Wallets](/docs/testing#wallets). From f6aa1ee0102aac46ab9a29f9020b4e1173fd42e6 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Fri, 22 Mar 2024 13:51:30 +0100 Subject: [PATCH 026/319] DOCS-4166 Amazonpay plugins --- content/payment-methods/amazon-pay.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/payment-methods/amazon-pay.md b/content/payment-methods/amazon-pay.md index 2f6e07e96..d095abe8b 100755 --- a/content/payment-methods/amazon-pay.md +++ b/content/payment-methods/amazon-pay.md @@ -100,7 +100,6 @@ Supported in: -Lightspeed - ### Testing To test Amazon Pay payments, see Testing – [Wallets](/docs/testing#wallets).
From 06149625299a712452c448ed7a0f7e191ab08ef5 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 27 Mar 2024 11:45:05 +0100 Subject: [PATCH 027/319] DOCS-4198: Integration Troubleshooting guide --- content/integrations/webshop-access.md | 129 +++++++++++++++++++++---- 1 file changed, 111 insertions(+), 18 deletions(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 9a39cc75e..0df12f263 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -1,37 +1,130 @@ --- -title : "Integration Team: Help us help you" +title : "Integration Troubleshooting Guide" category: 62962dd7e272a6002ebbbbc5 order: 500 hidden: true slug: 'help-us-help-you' --- -We test all our ready-made integrations before release, but your integration may still encounter configuration issues or a bug - especially if you have created your own [API integration](/docs/api-integration/). +We test all our ready-made integrations before release, but due to external factors or incompatibility with third party solutions, your integration may still encounter configuration issues or a bug. -We are best able to support issues that are reproducible in a standard website environment. But we always try to offer support, even for issues outside our scope. +Here are some common checks that we recommend doing before investigating together with our technical support team. -# Basics -When we start trying to reproduce an issue, we always begin with the basics. +# Basics + +Via our ready-made plugins, we offer solutions that require minimal manual configuration from your side. +We strive for correct functionality, and support you best as possible with any configuration. + +## Plugin versions + +Always ensure your **plugin version is up to date**. Only then, we can guarantee correct functioning of our solutions. +Seek assistance from your developer to make sure the basic configurations are in place. + +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. + +## Third party solutions + +**Note: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. ** + +If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. + +# Payments failing + +When 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]\(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 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. + +Further checks for for plugin integrations: + +- Set your backoffice to debug mode. +- Send us the system report / error logs. + +# Payment Component not displayed correctly + +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) + +**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. +- Set your backoffice to debug mode. +- Send us the system report / error logs. -Help us by answering the following questions: -- Does the issue occur in the plugin core? -- Does it occur in the payment method core? -- When did the issue start occurring? -- Has there been a recent plugin or system update? -- Can you reproduce the issue? -- Do you have any examples? -# Integration Team rules +**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) + +As a temporary fix, while we investigate the issue, you can use our payments via redirect. + +# Webhook issues + +If you encounter one of the following issues: + +- **Transaction status** in your backoffice differs from the status on your MultiSafepay Dashboard + +You can try the following: + +- Relaunch the notification +- Verify that you have indicated the correct notification URL + +With the results of these checks, reach out to us via [integration@multisafepay.com](mailto:info@multisafepay.com). + +# Direct payment button issues + +If you notice any troubles during the integration of direct buttons for Apple Pay or Google Pay, we recommend: + +## Apple Pay direct integration + +- Ensure you follow our step by step guide. +- When validating your domain, double check to have associated the **correct URL**. +- Distinguish correctly between **TEST **and **LIVE **environments, and the respective domain validation files. +- 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). + +## 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). + +# Integration contact rules + +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: + +- **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. -- 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. -> ⚠️ **Note:** -> -> MultiSafepay assumes **no** responsibility for mistakes in your live environment. -> + +> ⚠️ **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. +> > - 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 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 From c7dd63f1e7b60e14f8fd963dfdf776fad1b91ff7 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 27 Mar 2024 11:55:58 +0100 Subject: [PATCH 028/319] DOCS-4198: Integration Troubleshooting guide --- content/integrations/webshop-access.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 0df12f263..e483a6a12 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -32,7 +32,7 @@ If you encounter an issue with payments while using one of our plugin integratio # Payments failing -When you encounter issues that affect payments, valuable first checks are: +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]\(payment link) and verify if the issue occurs as well. (!) From f398c007765ad79ce2cef73373fe3f8908f87929 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Tue, 9 Apr 2024 15:19:56 +0200 Subject: [PATCH 029/319] DOCS-4209: POS modifications pilot and webhook --- content/point-of-sale/event-notifications.md | 9 +++++---- content/point-of-sale/hardware-setup.md | 10 +++++----- content/point-of-sale/pos-overview.md | 11 +++++------ content/point-of-sale/pos-troubleshooting.md | 9 ++++----- content/point-of-sale/smartPOS-features.md | 9 ++++----- content/point-of-sale/smartpos-activation.md | 9 ++++----- content/point-of-sale/smartpos-overview.md | 9 ++++----- content/point-of-sale/smartpos-solutions.md | 9 ++++----- content/point-of-sale/traditional-ctap.md | 9 ++++----- 9 files changed, 39 insertions(+), 45 deletions(-) diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index 63ad45fe9..a8adea938 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -9,13 +9,12 @@ slug: 'event-notifications' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> +> If you are interested in our Point of Sale solutions, email > Subscribe to event notifications to receive order payments updates when, e.g., @@ -28,6 +27,8 @@ Subscribe to event notifications to receive order payments updates when, e.g., - SmartPOS terminal must be [activated in your MultiSafepay account](/docs/getting-started-guide/). - Payments must be initiated via [cloud <> payment](/docs/solutions). +In other scenarios, you can make use of our [webhook ](https://docs.multisafepay.com/docs/webhook)notifications. + # 1. Initiate payments 1. [Create an order](/reference/createorder/), and set`terminal_id` in your request. See Recipe - Cloud POS payment . diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index 34b000fbf..3a983c94c 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -6,15 +6,15 @@ hidden: false slug: 'hardware-setup' --- +> > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email > This page outlines the configuration of the hardware. diff --git a/content/point-of-sale/pos-overview.md b/content/point-of-sale/pos-overview.md index 2461faad7..b434974fe 100644 --- a/content/point-of-sale/pos-overview.md +++ b/content/point-of-sale/pos-overview.md @@ -8,13 +8,12 @@ slug: 'overview' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: -> +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index 81425190c..2c8acddd3 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -9,13 +9,12 @@ slug: 'pos-troubleshooting' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email This page provides troubleshooting steps to resolve common issues. diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index 9bd58edfc..db4a9dc9d 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -10,13 +10,12 @@ slug: 'smartpos-features' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email After activating your SmartPOS terminal, you can add features from your SmartPOS payment app. SmartPOS features let you: diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 0f467d8c4..296a1303a 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -9,13 +9,12 @@ slug: 'smartpos-activation' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email > SmartPOS is an advanced <> terminal with Android applications, providing added functionality. It enables you to make payments through various options, such as manual input flow, cloud POS payment, or third-party on-device applications. diff --git a/content/point-of-sale/smartpos-overview.md b/content/point-of-sale/smartpos-overview.md index 996cdbad2..5ab879483 100644 --- a/content/point-of-sale/smartpos-overview.md +++ b/content/point-of-sale/smartpos-overview.md @@ -8,13 +8,12 @@ slug: 'smartpos-terminal' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email > This section provides an overview of our SmartPOS terminal. diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md index f3d71f1b7..3beccc86d 100644 --- a/content/point-of-sale/smartpos-solutions.md +++ b/content/point-of-sale/smartpos-solutions.md @@ -9,13 +9,12 @@ slug: 'smartpos-solutions' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email > Our SmartPOS solutions let you initiate payments through: diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md index e916a9c66..57e2a38d4 100644 --- a/content/point-of-sale/traditional-ctap.md +++ b/content/point-of-sale/traditional-ctap.md @@ -9,13 +9,12 @@ slug: 'traditional-ctap-terminal' > ⚠️ Note: > -> We are currently in the pilot phase for this product in the following countries: +> We currently offer 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 +> - Belgium +> +> If you are interested in our Point of Sale solutions, email Traditional (CTAP) is a terminal that has passed Acquiris certification and can be connected to acquirers with a C-TAP host. From b89fd6a0f87b41c594ddb905a1d24aff626ee901 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 9 Apr 2024 13:21:05 +0000 Subject: [PATCH 030/319] Automated external URL lint. --- content/point-of-sale/event-notifications.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index a8adea938..da8670fca 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -27,7 +27,7 @@ Subscribe to event notifications to receive order payments updates when, e.g., - SmartPOS terminal must be [activated in your MultiSafepay account](/docs/getting-started-guide/). - Payments must be initiated via [cloud <> payment](/docs/solutions). -In other scenarios, you can make use of our [webhook ](https://docs.multisafepay.com/docs/webhook)notifications. +In other scenarios, you can make use of our webhook notifications. # 1. Initiate payments From a7e62d55289c172cec510581a0d0b8f7e4f5fa3e Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Tue, 9 Apr 2024 17:11:47 +0200 Subject: [PATCH 031/319] DOCS-4210: Lightspeed troubleshooting guide --- content/integrations/lightspeed.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/content/integrations/lightspeed.md b/content/integrations/lightspeed.md index be4a6b6ab..b7ada689d 100755 --- a/content/integrations/lightspeed.md +++ b/content/integrations/lightspeed.md @@ -448,6 +448,18 @@ To access the MultiSafepay Payments app **Settings** page:
+ +# Troubleshooting + +## Payment methods not displayed correctly + +Checks you can do: + +- are you using the correct API key and environment combination? +- are the payment methods activated for your account? +- in **Payment method settings**, check that you have modified your preferences for the correct / all store languages. Check also: current setting is set to **enabled**. + + --- [block:html] From 1567422316727ea139cff93334ca7c11c596238b Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 10 Apr 2024 09:05:43 +0200 Subject: [PATCH 032/319] DOCS-4187: Add Pronamic Pay --- content/integrations/partner-integrations.md | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md index b33d7684e..a88c85ee2 100644 --- a/content/integrations/partner-integrations.md +++ b/content/integrations/partner-integrations.md @@ -248,6 +248,58 @@ To install and configure, see LogiVert – " target="_blank">Pronamic Pay ,provides a free plugin to integrate WooCommerce WordPress stores with MultiSafepay. + +
+Prerequisites +
+ +You will need a [MultiSafepay account](/docs/getting-started-guide/). + +
+ +
+Support +
+ +For any technical queries, see – Pronamic support . + +
+ +
+Supported payment methods +
+ +- Cards:[All](/docs/card-payments/) +- Banking methods: + - [Bancontact](/docs/bancontact/) + - [Bank transfer](/docs/bank-transfer/) + - [Belfius](/docs/belfius/) + - [iDEAL](/docs/ideal/) + - [KBC](/docs/kbc/) + - [Direct Debit](/docs/direct-debit/) + - [Giropay](/docs/giropay/) + - [Sofort](/docs/sofort/) +- BNPL: + - [in3](//docs/in3) +- Wallets: + - [Alipay +](/docs/alipay-plus/) + - [Apple](/docs/apple-pay/) + - [Google](/docs/google-pay/) + - [PayPal](/docs/paypal/) + +
+ +
+Installation and configuration +
+ +To install and configure the plugin, see Pronamic Pay – Installation guide . +
+ ___ ## Sana Commerce From c1f89a3e698fc59f6b758201f0bacf2cfab4ae6b Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 10 Apr 2024 10:31:18 +0200 Subject: [PATCH 033/319] DOCS-4211: event notifications --- content/point-of-sale/event-notifications.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index da8670fca..5d8f4d509 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -49,11 +49,23 @@ curl -H 'Authorization: events_token' 'https://api.multisafepay.com/events/strea ``` curl -H 'Authorization: eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTQwNzEyMDcsImdydtdfI6WyJtYnVzOnNlc3Npb24ub3JkZXIiLCJtYnVzOnNlc3Npb24ucXIiXSwicGlkIjoiNTk5TWM0VWhOWDhYczNmNU55b3JnaVZZMlhab1BsVVkxa28iLCJzdWIiOiJwciJ9.p1txKa0wlR6Pn-DvQW8oYmYcesU49GgZsPebME_EvYs' \ -'https://testapi.multisafepay.com/events/stream/' +'https://api.multisafepay.com/events/stream/' ``` +
+ Example response +
+ +event: session.order +data: {"financial_status":"initialized","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvRPN","status":"initialized","transaction_id":"893068351"} +event: session.order +data: {"financial_status":"completed","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvRPN","status":"completed","transaction_id":"893068351"} + + +
+ # 3. Payment statuses The table below sets out possible payment statuses and what they commonly mean. From 5a24238ddee439513bbb3d796b369847f38fee10 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 10 Apr 2024 10:36:00 +0200 Subject: [PATCH 034/319] DOCS-4211: event notifications --- content/point-of-sale/event-notifications.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index 5d8f4d509..e23364a9f 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -58,13 +58,13 @@ curl -H 'Authorization: eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTQwNzEyMDcsImdydtdfI6W Example response
+``` event: session.order -data: {"financial_status":"initialized","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvRPN","status":"initialized","transaction_id":"893068351"} +data: {"financial_status":"initialized","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvZZZ","status":"initialized","transaction_id":"89000000"} event: session.order -data: {"financial_status":"completed","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvRPN","status":"completed","transaction_id":"893068351"} - - - +data: {"financial_status":"completed","order_id":"ExampleOrderID1234567","session_id":"1025J8hXqtM9dLcilPp3gqkXi8Res3tvZZZ","status":"completed","transaction_id":"890000000"} +``` + # 3. Payment statuses From c268a6f30aa391105c7a6f035a6793ff54f13820 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Wed, 10 Apr 2024 15:34:02 +0200 Subject: [PATCH 035/319] DOCS-4164: Sofort --- content/payment-methods/sofort.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content/payment-methods/sofort.md b/content/payment-methods/sofort.md index 3ab9ad9c7..f20c6d538 100755 --- a/content/payment-methods/sofort.md +++ b/content/payment-methods/sofort.md @@ -9,6 +9,13 @@ slug: 'sofort' +> ⚠️ Note: +> +> Sofort is no longer available as a standalone payment method due to its acquisition by Klarna. +> Existing integrations will be kept intact, yet it is not possible to activate Sofort for new merchants. +> +> For alternatives in banking methods, see also [our overview](https://docs.multisafepay.com/docs/banking-methods). + Sofort is a banking payment method by Klarna. It integrates with the customer's bank like a <> bank transfer. The customer verifies the payment, which reduces the risks associated with traditional transfers. Once payment is completed, the customer cannot reverse it and Sofort guarantees <>. From dd6d7a4216ded2dcc49c0ff11d3bca113288c6b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 10 Apr 2024 13:34:49 +0000 Subject: [PATCH 036/319] Automated external URL lint. --- content/payment-methods/sofort.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/sofort.md b/content/payment-methods/sofort.md index f20c6d538..d45c77ee8 100755 --- a/content/payment-methods/sofort.md +++ b/content/payment-methods/sofort.md @@ -14,7 +14,7 @@ slug: 'sofort' > Sofort is no longer available as a standalone payment method due to its acquisition by Klarna. > Existing integrations will be kept intact, yet it is not possible to activate Sofort for new merchants. > -> For alternatives in banking methods, see also [our overview](https://docs.multisafepay.com/docs/banking-methods). +> For alternatives in banking methods, see also our overview . Sofort is a banking payment method by Klarna. It integrates with the customer's bank like a <> bank transfer. The customer verifies the payment, which reduces the risks associated with traditional transfers. Once payment is completed, the customer cannot reverse it and Sofort guarantees <>. From d12ddd1708021131e6297cf701fa86c0f8995198 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 17 Apr 2024 10:41:13 +0200 Subject: [PATCH 037/319] DOCS-4216: Remove CHANGELOG in CCV Shop integration page (#2948) --- content/integrations/ccv-shop.md | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index 9232e90d8..6be010edc 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -9,33 +9,6 @@ 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 You will need a [MultiSafepay account](/docs/getting-started-guide/). From 29116cc9f6501dac29dd99a1ec38ea812748f0ca Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 18 Apr 2024 16:31:02 +0200 Subject: [PATCH 038/319] DOCS-4217: Release of 5.14.0 of the PrestaShop plugin (#2949) --- 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 70a9e0dcd..31ce6cde0 100644 --- a/content/integrations/prestashop-1-7.md +++ b/content/integrations/prestashop-1-7.md @@ -12,7 +12,7 @@ slug: 'prestashop-1-7'
-Download +Download Source code From ecc9454be242bbd101fd7969d6bc0eceb84b3cdb Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 18 Apr 2024 17:09:09 +0200 Subject: [PATCH 039/319] DOCS-4218: Release of 3.13.0 of the PrestaShop 1.6 plugin (#2950) --- 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 2385ede16..20d4290d9 100644 --- a/content/integrations/prestashop-1-6.md +++ b/content/integrations/prestashop-1-6.md @@ -11,7 +11,7 @@ slug: 'prestashop-1-6'
-Download +Download Source code From 5d4f32773bd57df88dce708e58cef7e35bc1cad4 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:43:10 +0200 Subject: [PATCH 040/319] DOCS-4219: [Shopware 6] - Changes in the documentation: link, update info and versions (#2951) --- content/integrations/shopware-6.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/content/integrations/shopware-6.md b/content/integrations/shopware-6.md index e93c960ae..8e15ff333 100644 --- a/content/integrations/shopware-6.md +++ b/content/integrations/shopware-6.md @@ -12,8 +12,6 @@ slug: 'shopware-6'
-Download - Source code Changelog @@ -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": "
\n

\n 💬\n

Support

\n

\n

Email integration@multisafepay.com

\n
\n" -} -[/block] - -[Top of page](#) + ``` +https://api.multisafepay.com/v1/json/orders + ``` \ No newline at end of file diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md index 2ade996fc..4324663ef 100644 --- a/content/payment-methods/card-payment-pricing-models.md +++ b/content/payment-methods/card-payment-pricing-models.md @@ -1,5 +1,5 @@ --- -title: 'Card payment pricing models' +title: 'Card payment pricing' category: 6298bd782d1cf4006032e765 order: 30 hidden: false From 1c89764059e7bc892755d0d7a7066d19b44f40a0 Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Mon, 22 Apr 2024 16:28:51 +0200 Subject: [PATCH 042/319] DOCS-4221 Component --- content/checkout/multiple.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 252646455..12560d611 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -173,7 +173,7 @@ Initialize the component using: ```javascript PaymentComponent.init('dropin', { - container: '#MSPPayment', + container: '#MultiSafepayPayment', onGetQR: function (state) { console.log('onGetQR', state); }, @@ -184,7 +184,25 @@ PaymentComponent.init('dropin', { console.log('onEvent', state); }, onSubmit: function (state) { - console.log('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 + + } + }); }, onValidation: function (state) { console.log('onValidation', state); From 9fac719c6175aafbeea865703b1d449e3c09897f Mon Sep 17 00:00:00 2001 From: Ines MultiSafepay <“ines.mayer@multisafepay.com”> Date: Mon, 22 Apr 2024 16:36:52 +0200 Subject: [PATCH 043/319] DOCS-4222 add example files comp --- content/checkout/multiple.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 12560d611..8c93e0b2c 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -9,6 +9,9 @@ parentDoc: 62a848399bb3eb004023f291 This technical manual is for integrating a payment component using multiple payment methods. + + +Component examples From c5880b3d0ab6226e8e3b95ba402be05b3c376100 Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:04:45 +0200 Subject: [PATCH 044/319] DOCS-4221: Component (#2954) --- content/checkout/multiple.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 8c93e0b2c..b0903218b 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -6,13 +6,13 @@ hidden: false slug: 'payment-component-multiple' parentDoc: 62a848399bb3eb004023f291 --- - This technical manual is for integrating a payment component using multiple payment methods. + -Component examples - # 1\. Add the HTML elements @@ -44,7 +44,7 @@ Decide if you want to: ``` -# 2\. Initialize the component +# 2. Initialize the component ## Generate an API token From 6ae4aa9a1058919921f6539890445f690afcdb76 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Tue, 23 Apr 2024 18:15:34 +0200 Subject: [PATCH 045/319] DOCS-4221: Component (#2955) --- content/checkout/multiple.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index b0903218b..43ec189bc 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -9,10 +9,14 @@ parentDoc: 62a848399bb3eb004023f291 This technical manual is for integrating a payment component using multiple payment methods. + + # 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

\n 💬\n

Support

\n

\n

Email integration@multisafepay.com

\n
\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": "
\n

\n 💬\n

Support

\n

\n

Email integration@multisafepay.com

\n
\n" -} -[/block] - -[Top of page](#) \ No newline at end of file +--- \ No newline at end of file From f762aa46f0f38edc9e12cfb55c677b47e52b2c85 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 24 Apr 2024 09:41:58 +0200 Subject: [PATCH 053/319] DOCS-4221: Component (#2963) --- content/checkout/multiple.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 6085af0ac..9094446a2 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -4,5 +4,7 @@ category: 62bd999547298d001abc714c order: 2 hidden: false slug: 'payment-component-multiple' -parentDoc: 62a848399bb3eb004023f291 ---- \ No newline at end of file +parentDoc: 62a848399bb3eb004023f291 +--- + +This technical manual is for integrating a payment component using multiple payment methods. From f6c5bbe704554ec92445a353bc1ce79d2c00b3b2 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 09:30:39 +0200 Subject: [PATCH 054/319] DOCS-4221: Component (#2965) --- content/checkout/multiple.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 content/checkout/multiple.md diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md deleted file mode 100644 index 9094446a2..000000000 --- a/content/checkout/multiple.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Multiple payment methods" -category: 62bd999547298d001abc714c -order: 2 -hidden: false -slug: 'payment-component-multiple' -parentDoc: 62a848399bb3eb004023f291 ---- - -This technical manual is for integrating a payment component using multiple payment methods. From 332cee7ffb058e8c189da61b3eb4fc8d848ffaf5 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 10:14:51 +0200 Subject: [PATCH 055/319] DOCS-4221: Component (#2966) --- content/checkout/multiple.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 content/checkout/multiple.md diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md new file mode 100644 index 000000000..53824e95b --- /dev/null +++ b/content/checkout/multiple.md @@ -0,0 +1,10 @@ +--- +title: "Multiple payment methods" +category: 62bd999547298d001abc714c +order: 2 +hidden: false +slug: 'payment-component-multiple' +parentDoc: 62a848399bb3eb004023f291 +--- + +This technical manual is for integrating a payment component using multiple payment methods. \ No newline at end of file From e106a195d571ef0a641332b3853a755e0b064041 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 10:35:30 +0200 Subject: [PATCH 056/319] DOCS-4221: Component (#2967) --- content/checkout/multiple.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 53824e95b..24349a72b 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -1,5 +1,5 @@ --- -title: "Multiple payment methods" +title: 'Multiple payment methods' category: 62bd999547298d001abc714c order: 2 hidden: false From acce4ede2b01963fd30da4489b03d5262b2862ef Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 10:45:10 +0200 Subject: [PATCH 057/319] DOCS-4221: Component (#2968) --- content/checkout/{multiple.md => payment-components-multiple.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/checkout/{multiple.md => payment-components-multiple.md} (100%) diff --git a/content/checkout/multiple.md b/content/checkout/payment-components-multiple.md similarity index 100% rename from content/checkout/multiple.md rename to content/checkout/payment-components-multiple.md From 7676a50ddd9d2440cd7e8eaf495a6f69fc18d456 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 10:54:10 +0200 Subject: [PATCH 058/319] DOCS-4221: Component (#2969) --- content/checkout/payment-components-multiple.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 content/checkout/payment-components-multiple.md diff --git a/content/checkout/payment-components-multiple.md b/content/checkout/payment-components-multiple.md deleted file mode 100644 index 24349a72b..000000000 --- a/content/checkout/payment-components-multiple.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: 'Multiple payment methods' -category: 62bd999547298d001abc714c -order: 2 -hidden: false -slug: 'payment-component-multiple' -parentDoc: 62a848399bb3eb004023f291 ---- - -This technical manual is for integrating a payment component using multiple payment methods. \ No newline at end of file From ce271dab423d834b8c121f4fffd47ee70c290688 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 11:12:15 +0200 Subject: [PATCH 059/319] DOCS-4221: Component (#2970) --- content/checkout/multiple.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 content/checkout/multiple.md diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md new file mode 100644 index 000000000..24349a72b --- /dev/null +++ b/content/checkout/multiple.md @@ -0,0 +1,10 @@ +--- +title: 'Multiple payment methods' +category: 62bd999547298d001abc714c +order: 2 +hidden: false +slug: 'payment-component-multiple' +parentDoc: 62a848399bb3eb004023f291 +--- + +This technical manual is for integrating a payment component using multiple payment methods. \ No newline at end of file From 2d3282bfc59bed1626c07120435a0fcc5b638d03 Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Thu, 25 Apr 2024 11:28:35 +0200 Subject: [PATCH 060/319] DOCS-4203: Woocommerce blocks (#2964) --- content/integrations/woocommerce.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md index 69b933028..3f461e08e 100755 --- a/content/integrations/woocommerce.md +++ b/content/integrations/woocommerce.md @@ -272,6 +272,15 @@ For <> orders, after shipment, you must change the order status f If you change the <> to **Shipped** in your backend, the updated status is passed to your MultiSafepay dashboard automatically. +## Checkouts + +The plugin supports the WooCommerce checkout and is compatible with most premium themes, unless you have a custom checkout. + +### WooCommerce Checkout Blocks + +You can use the Checkout Blocks for WooCommerce to customize your checkout. +Note: Only redirect payment methods are supported with this checkout at the moment. + ## Surcharges You can apply [surcharges](/docs/surcharges/) in the plugin when combined with a relevant third-party package. From f3d28fccebec1f3f412cf3511e794889d0c66728 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 25 Apr 2024 11:41:40 +0200 Subject: [PATCH 061/319] DOCS-4221: Components (#2971) --- content/checkout/multiple.md | 420 ++++++++++++++++++++++++++++++++++- 1 file changed, 419 insertions(+), 1 deletion(-) diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 24349a72b..d91e6e31c 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -7,4 +7,422 @@ slug: 'payment-component-multiple' parentDoc: 62a848399bb3eb004023f291 --- -This technical manual is for integrating a payment component using multiple payment methods. \ No newline at end of file +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. \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

\n 💬\n

Support

\n

\n

Email integration@multisafepay.com

\n
\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 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 +Download Source 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. + +
+ ***
+## 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 +Download Source 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. + +
+ *** +
+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**. +
+
+ POS-display +
-
- 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. ---- +*** - ---- -
+*** + + 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 smartPOS_print
- *** -
-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 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 smartPOS_print
+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 smartPOS_print
+## 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. - Hyvä Megawire checkout - Megawire checkout module + Hyvä Checkout + Hyvä Checkout module OneStepCheckout.com @@ -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'
-Download +Download Source code @@ -26,7 +26,7 @@ slug: 'opencart-4' # Prerequisites - [MultiSafepay account](/docs/getting-started-guide/) -- OpenCart 4.0.1.1 or lower +- OpenCart 4.0.2.0 up to 4.0.2.3 - PHP versions supported: 8.0, 8.1 # Installation From 9becc0d3e3b9c1ccb94a2996f9d99c4c88b4096d Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 12 Sep 2024 17:26:43 +0200 Subject: [PATCH 120/319] DOCS-4328: Release of 3.14.0 of the PrestaShop 1.6 plugin (#3036) [PrestaShop 1.6] Release of 3.14.0 --- 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 f49ec9bf1..22936c61e 100644 --- a/content/integrations/prestashop-1-6.md +++ b/content/integrations/prestashop-1-6.md @@ -11,7 +11,7 @@ slug: 'prestashop-1-6'
-Download +Download Source code From 27a1fca3ea8bff75b76998c43b227fe50aee3b76 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 13 Sep 2024 14:43:25 +0200 Subject: [PATCH 121/319] DOCS-4329: test substitute broken img ideal (#3037) --- content/payment-methods/buy-now-pay-later.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/payment-methods/buy-now-pay-later.md b/content/payment-methods/buy-now-pay-later.md index bf4889b5f..98d53e927 100644 --- a/content/payment-methods/buy-now-pay-later.md +++ b/content/payment-methods/buy-now-pay-later.md @@ -7,9 +7,9 @@ slug: 'bnpl' --- ## Europe-wide -[block:html] +[block:html] { - "html": "" + "html": "" } [/block]
From e9b8249cd7e81a3093b821b0f5daf9ae53e9aedb Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 13 Sep 2024 16:32:18 +0200 Subject: [PATCH 122/319] DOCS-4330: Broken image fixes (#3038) --- 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 d0de025bc..6d433d3e4 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 992f0da6458584a234d47acafef5f59401add5ec Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:00:24 +0200 Subject: [PATCH 123/319] DOCS-4331: Release of 4.0.0 of the Drupal 10 plugin (#3039) Release of 4.0.0 of the Drupal 10 plugin --- content/integrations/drupal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index 315b0f1d0..07cc3f9aa 100755 --- a/content/integrations/drupal.md +++ b/content/integrations/drupal.md @@ -7,13 +7,13 @@ parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." slug: 'drupal' --- -# Drupal 8 & 9 +# Drupal 8 & 9 & 10
-Download +Download Source code From f3238301341e8ffc02da8bca09120ea1505946bd Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:10:17 +0200 Subject: [PATCH 124/319] DOCS-4332: Release of 4.0.0 of the Drupal 10 plugin (#3040) --- content/integrations/drupal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index 07cc3f9aa..ce821f1cc 100755 --- a/content/integrations/drupal.md +++ b/content/integrations/drupal.md @@ -7,7 +7,7 @@ parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." slug: 'drupal' --- -# Drupal 8 & 9 & 10 +# Drupal 8, 9 & 10 @@ -24,7 +24,7 @@ slug: 'drupal' ## Prerequisites - [MultiSafepay account](/docs/getting-started-guide/) -- Drupal 8.9 and above or Drupal 9.x +- Drupal 8.9 and above, Drupal 9.x and 10.x - Tested on PHP 7.2 - Drupal Commerce 2.x From 7ea9fa02a80f4a4b210e9c104a4d861d2b549f57 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:11:41 +0200 Subject: [PATCH 125/319] DOCS-4277: Refunds can now be processed both ways (#2993) --- 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 78869d5bc..e7b8c1f1c 100755 --- a/content/integrations/virtuemart-4.md +++ b/content/integrations/virtuemart-4.md @@ -95,7 +95,7 @@ If a customer selects Apple Pay at checkout but isn't on an Apple device, they r ## Refunds -[Full refunds](/docs/refund-payments/) are supported in your MultiSafepay dashboard. +[Full refunds](/docs/refund-payments/) are supported in both MultiSafepay and VirtueMart dashboards. You cannot refund more than the original amount in your dashboard. ## Updates From c0d84f0bcb6195f16389fa337811ab951a6eb9e4 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 17 Sep 2024 11:38:06 +0200 Subject: [PATCH 126/319] DOCS-4179: Trustly allowed countries (#3045) --- content/payment-methods/trustly.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/trustly.md b/content/payment-methods/trustly.md index f1217bbec..068e39eaf 100644 --- a/content/payment-methods/trustly.md +++ b/content/payment-methods/trustly.md @@ -16,7 +16,7 @@ Read how Trustly can benefit your business on \n \n \n \n \n
" + "html": "" } [/block]
@@ -39,7 +39,7 @@ slug: 'banking-methods' [block:html] { - "html": "\n\n\n" + "html": "\n\n\n" } [/block]
diff --git a/content/payment-methods/request-to-pay.md b/content/payment-methods/request-to-pay.md index 79b9d09bb..6b6a4a654 100644 --- a/content/payment-methods/request-to-pay.md +++ b/content/payment-methods/request-to-pay.md @@ -1,5 +1,5 @@ --- -title: 'Request to Pay' +title: 'Request to Pay (Deprecated)' category: 6298bd782d1cf4006032e765 order: 12 hidden: false From 79cdef116995d1b2d8935d598eb873ed5681e6ec Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 17 Sep 2024 13:03:08 +0200 Subject: [PATCH 129/319] DOCS-4333: Remove Betaal per Maand (#3043) * DOCS-4333: Remove Betaal per Maand * DOCS-4333: Remove Betaal per Maand --- content/payment-methods/buy-now-pay-later.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/payment-methods/buy-now-pay-later.md b/content/payment-methods/buy-now-pay-later.md index 98d53e927..6b371bd08 100644 --- a/content/payment-methods/buy-now-pay-later.md +++ b/content/payment-methods/buy-now-pay-later.md @@ -9,7 +9,7 @@ slug: 'bnpl' [block:html] { - "html": "" + "html": "" } [/block]
@@ -19,7 +19,7 @@ slug: 'bnpl' [block:html] { - "html": "\n\n" + "html": "\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": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" +} +[/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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\n" -} -[/block] From 19640a46d1ad5ad8f6f63c11438e91b7f8a95b25 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 18 Sep 2024 14:34:36 +0200 Subject: [PATCH 149/319] DOCS-TEST3 (#3062) --- content/payment-methods/card-payment-pricing-models-test.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/card-payment-pricing-models-test.md b/content/payment-methods/card-payment-pricing-models-test.md index ecae3c773..ccf5218d1 100644 --- a/content/payment-methods/card-payment-pricing-models-test.md +++ b/content/payment-methods/card-payment-pricing-models-test.md @@ -32,7 +32,7 @@ The actual cost for processing a card transaction vary considerably depending on We distinguish between two main card pricing models: **Blended** and **Interchange ++**. -### Blended pricing +### Blended pricing In the Blended pricing model, a fixed percentage is charged based on an initial projection of the card volume and market. From 83ee0412d931167f397c436cd88702270e40d11b Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 18 Sep 2024 16:26:51 +0200 Subject: [PATCH 150/319] DOCS-TEST5 (#3064) --- ...nt-pricing-models-test.md => card-payment-pricing-models.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename content/payment-methods/{card-payment-pricing-models-test.md => card-payment-pricing-models.md} (99%) diff --git a/content/payment-methods/card-payment-pricing-models-test.md b/content/payment-methods/card-payment-pricing-models.md similarity index 99% rename from content/payment-methods/card-payment-pricing-models-test.md rename to content/payment-methods/card-payment-pricing-models.md index ccf5218d1..fb90632de 100644 --- a/content/payment-methods/card-payment-pricing-models-test.md +++ b/content/payment-methods/card-payment-pricing-models.md @@ -57,4 +57,4 @@ If your business mostly relies on cross-border and B2B sales, Interchange++ pric { "html": "
\n

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\n" } -[/block] +[/block] \ No newline at end of file From c25dad89a4cf8538e470f45204f527afb488bb54 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 18 Sep 2024 16:45:17 +0200 Subject: [PATCH 151/319] DOCS-TEST7 (#3066) --- content/payment-methods/card-payment-pricing-models.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models.md index fb90632de..4ea38b8ed 100644 --- a/content/payment-methods/card-payment-pricing-models.md +++ b/content/payment-methods/card-payment-pricing-models.md @@ -5,7 +5,7 @@ order: 30 hidden: false parentDoc: 62a727569e389a012f577acd excerpt: 'Distinction between Blended and Interchange ++ pricing' -slug: Card-payment-pricing-models +slug: 'card-payment-pricing-models' --- Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments. From 07fb0d79a6379441ca02f66d4b0bfe564d1c67ef Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 18 Sep 2024 17:01:06 +0200 Subject: [PATCH 152/319] Docs test8 (#3067) * DOCS-TEST8 * DOCS-TEST8 --- ...ng-models.md => card-payment-pricing-models-2.md} | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) rename content/payment-methods/{card-payment-pricing-models.md => card-payment-pricing-models-2.md} (94%) diff --git a/content/payment-methods/card-payment-pricing-models.md b/content/payment-methods/card-payment-pricing-models-2.md similarity index 94% rename from content/payment-methods/card-payment-pricing-models.md rename to content/payment-methods/card-payment-pricing-models-2.md index 4ea38b8ed..d81b7eadc 100644 --- a/content/payment-methods/card-payment-pricing-models.md +++ b/content/payment-methods/card-payment-pricing-models-2.md @@ -1,12 +1,12 @@ --- -title: 'Card payment pricing models' +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' ---- +excerpt: Distintion 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. @@ -57,4 +57,6 @@ If your business mostly relies on cross-border and B2B sales, Interchange++ pric { "html": "
\n

\n 💬\n

Support

\n

\n

Email sales@multisafepay.com

\n
\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" + "html": "\n\n" } [/block] [block:html] diff --git a/content/payment-methods/pay-after-delivery.md b/content/payment-methods/pay-after-delivery.md index cd8116dcf..056617131 100755 --- a/content/payment-methods/pay-after-delivery.md +++ b/content/payment-methods/pay-after-delivery.md @@ -35,7 +35,7 @@ The old gateway "PAYAFTER" is deprecated in favor of the new gateway "BNPL_MF" ( ### API integrations - Switch the gateway code in either redirect or direct transactions to "BNPL_MF". + 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 From 424a0402c7d8d8324829484487c4f5e755f1c826 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 10:45:31 +0200 Subject: [PATCH 157/319] DOCS-4349: Issue with italics at pay with delivery page (#3073) --- content/integrations/drupal.md | 2 +- content/integrations/our-integrations.md | 2 +- content/payment-methods/pay-after-delivery.md | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index 82fc94ece..508f609a1 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 0808a5813..317ee56cf 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" + "html": "\n\n" } [/block] [block:html] diff --git a/content/payment-methods/pay-after-delivery.md b/content/payment-methods/pay-after-delivery.md index 056617131..3c3a83f3c 100755 --- a/content/payment-methods/pay-after-delivery.md +++ b/content/payment-methods/pay-after-delivery.md @@ -35,7 +35,8 @@ The old gateway "PAYAFTER" is deprecated in favor of the new gateway "BNPL_MF" ( ### API integrations - Switch the gateway code in either redirect or direct transactions to "BNPL_MF". + 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 From 352c622ecbdaf4afa2c1888440047d674cc5fb71 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 12:26:04 +0200 Subject: [PATCH 158/319] DOCS-4350: modification to our integrations page (#3074) --- content/integrations/magento-1.md | 2 +- content/integrations/magento-2.md | 2 +- content/integrations/prestashop-1-7.md | 6 +++--- content/integrations/shopware-5.md | 2 +- content/integrations/shopware-6.md | 2 +- content/integrations/virtuemart-3.md | 2 +- content/integrations/virtuemart-4.md | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/integrations/magento-1.md b/content/integrations/magento-1.md index c1dcbb2df..2f288ad19 100755 --- a/content/integrations/magento-1.md +++ b/content/integrations/magento-1.md @@ -1,7 +1,7 @@ --- title: "Magento 1" category: 62962dd7e272a6002ebbbbc5 -order: 5 +order: 6 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md index edc219fa4..b0c287a7e 100755 --- a/content/integrations/magento-2.md +++ b/content/integrations/magento-2.md @@ -1,7 +1,7 @@ --- title: "Magento 2" category: 62962dd7e272a6002ebbbbc5 -order: 6 +order: 5 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop-1-7.md index 55ad4bcd6..9ddc8fa8c 100644 --- a/content/integrations/prestashop-1-7.md +++ b/content/integrations/prestashop-1-7.md @@ -1,11 +1,11 @@ --- -title: "PrestaShop 1.7" +title: "PrestaShop" category: 62962dd7e272a6002ebbbbc5 -order: 13 +order: 12 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." -slug: 'prestashop-1-7' +slug: 'prestashop' --- diff --git a/content/integrations/shopware-5.md b/content/integrations/shopware-5.md index 1b503e1dd..cde4d7caa 100644 --- a/content/integrations/shopware-5.md +++ b/content/integrations/shopware-5.md @@ -1,7 +1,7 @@ --- title: "Shopware 5" category: 62962dd7e272a6002ebbbbc5 -order: 17 +order: 18 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 0ab98a50b..1fc61b388 100644 --- a/content/integrations/shopware-6.md +++ b/content/integrations/shopware-6.md @@ -1,7 +1,7 @@ --- title: "Shopware 6" category: 62962dd7e272a6002ebbbbc5 -order: 18 +order: 17 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 cb84a08eb..0854190da 100755 --- a/content/integrations/virtuemart-3.md +++ b/content/integrations/virtuemart-3.md @@ -1,7 +1,7 @@ --- title: "VirtueMart 3" category: 62962dd7e272a6002ebbbbc5 -order: 19 +order: 20 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 37c89c64e..e7b8c1f1c 100755 --- a/content/integrations/virtuemart-4.md +++ b/content/integrations/virtuemart-4.md @@ -1,7 +1,7 @@ --- title: "VirtueMart 4" category: 62962dd7e272a6002ebbbbc5 -order: 20 +order: 19 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." From c42438ca38505fe70a5198b37b340433cf14e250 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Thu, 19 Sep 2024 12:33:27 +0200 Subject: [PATCH 159/319] DOCS-TESTC --- content/integrations/{prestashop-1-7.md => prestashop.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/integrations/{prestashop-1-7.md => prestashop.md} (100%) diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop.md similarity index 100% rename from content/integrations/prestashop-1-7.md rename to content/integrations/prestashop.md From 99f8e3bb6fd3240b08044f9dc3adfd8431368a7e Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 12:42:25 +0200 Subject: [PATCH 160/319] DOCS-TESTC (#3076) From 0d367af86a0db6ef2887e8be288d55af19114ba9 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 13:06:39 +0200 Subject: [PATCH 161/319] Docs testx (#3077) * DOCS-TESTC * DOCS-TESTX * DOCS-TESTX --- content/integrations/prestashop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md index 9ddc8fa8c..e8f41a798 100644 --- a/content/integrations/prestashop.md +++ b/content/integrations/prestashop.md @@ -5,7 +5,7 @@ order: 12 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." -slug: 'prestashop' +slug: 'prestashop-1-7' --- From 636ce28500267bb97818e639cddad2783aaf8685 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 13:13:00 +0200 Subject: [PATCH 162/319] DOCS-TESTZ (#3078) --- content/integrations/{prestashop.md => prestashop-1-7.md} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename content/integrations/{prestashop.md => prestashop-1-7.md} (99%) diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop-1-7.md similarity index 99% rename from content/integrations/prestashop.md rename to content/integrations/prestashop-1-7.md index e8f41a798..55ad4bcd6 100644 --- a/content/integrations/prestashop.md +++ b/content/integrations/prestashop-1-7.md @@ -1,7 +1,7 @@ --- -title: "PrestaShop" +title: "PrestaShop 1.7" category: 62962dd7e272a6002ebbbbc5 -order: 12 +order: 13 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." From 263ff2014b701e88848f554166f1688a6f0321e8 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 13:19:38 +0200 Subject: [PATCH 163/319] DOCS-4352: remove php version info in Drupal page (#3079) --- content/integrations/drupal.md | 1 - content/integrations/prestashop-1-6.md | 2 +- content/integrations/{prestashop-1-7.md => prestashop.md} | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) rename content/integrations/{prestashop-1-7.md => prestashop.md} (99%) diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index 508f609a1..6cba55d87 100755 --- a/content/integrations/drupal.md +++ b/content/integrations/drupal.md @@ -25,7 +25,6 @@ slug: 'drupal' - [MultiSafepay account](/docs/getting-started-guide/) - Drupal 8.9 and above, Drupal 9.x and 10.x -- Tested on PHP 7.2 - Drupal Commerce 2.x ## Installation diff --git a/content/integrations/prestashop-1-6.md b/content/integrations/prestashop-1-6.md index 22936c61e..659be4b2b 100644 --- a/content/integrations/prestashop-1-6.md +++ b/content/integrations/prestashop-1-6.md @@ -1,7 +1,7 @@ --- title: "PrestaShop 1.6" category: 62962dd7e272a6002ebbbbc5 -order: 12 +order: 13 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." diff --git a/content/integrations/prestashop-1-7.md b/content/integrations/prestashop.md similarity index 99% rename from content/integrations/prestashop-1-7.md rename to content/integrations/prestashop.md index 55ad4bcd6..9ddc8fa8c 100644 --- a/content/integrations/prestashop-1-7.md +++ b/content/integrations/prestashop.md @@ -1,11 +1,11 @@ --- -title: "PrestaShop 1.7" +title: "PrestaShop" category: 62962dd7e272a6002ebbbbc5 -order: 13 +order: 12 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's free plugin." -slug: 'prestashop-1-7' +slug: 'prestashop' --- From 32c6616f870d7abc1bc52009d9e82cea87333444 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 19 Sep 2024 16:51:21 +0200 Subject: [PATCH 164/319] DOCS-TESTV (#3081) --- content/payment-methods/card-payment-pricing-models-2.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/payment-methods/card-payment-pricing-models-2.md b/content/payment-methods/card-payment-pricing-models-2.md index d81b7eadc..0c64f5f71 100644 --- a/content/payment-methods/card-payment-pricing-models-2.md +++ b/content/payment-methods/card-payment-pricing-models-2.md @@ -5,7 +5,7 @@ order: 30 hidden: false parentDoc: 62a727569e389a012f577acd excerpt: Distintion between Blended and Interchange ++ pricing -slug: "card-payment-pricing-models" +slug: "card-payment-pricing-models" --- Banks and <> charge different fees to cover the operational costs of managing their network and processing card payments. @@ -32,6 +32,7 @@ The actual cost for processing a card transaction vary considerably depending on 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. From 1e150abd500ecd1dde85d83ac9b12522d2e3fb7b Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 20 Sep 2024 09:03:35 +0200 Subject: [PATCH 165/319] DOCS-TESTQ (#3082) --- ...payment-pricing-models-2.md => card-payment-pricing-models.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/payment-methods/{card-payment-pricing-models-2.md => card-payment-pricing-models.md} (100%) diff --git a/content/payment-methods/card-payment-pricing-models-2.md b/content/payment-methods/card-payment-pricing-models.md similarity index 100% rename from content/payment-methods/card-payment-pricing-models-2.md rename to content/payment-methods/card-payment-pricing-models.md From 4efcc922d9d5d33cd9210727c77574db8ae456de Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 20 Sep 2024 09:27:58 +0200 Subject: [PATCH 166/319] DOCS-4351: info closing balance (#3080) * DOCS-4351: info closing balance * DOCS-4351: info closing balance --- content/point-of-sale/smartPOS-features.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index 20228c632..c048bac1b 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -152,6 +152,8 @@ Via Settings > **Closing balance**, can set the following parameters: +**Tip**: You can print your closing balance report using either the device printer, or the [external printer](docs/test-page#external-printer). + *** From 2796732fd17b63fa6865bba53fe92666d50ca3e6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 20 Sep 2024 13:59:41 +0200 Subject: [PATCH 167/319] Docs-4334: Change in wording PrestaShop 1.7 (#3042) * DOCS-4334: Change in wording PrestaShop 1.7 * DOCS-4334: Change in wording PrestaShop 1.7 * DOCS-4334: Change in wording PrestaShop 1.7 --- content/integrations/our-integrations.md | 2 +- content/integrations/prestashop.md | 26 +++++++++++++----------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/content/integrations/our-integrations.md b/content/integrations/our-integrations.md index 317ee56cf..dc447a0f6 100644 --- a/content/integrations/our-integrations.md +++ b/content/integrations/our-integrations.md @@ -10,7 +10,7 @@ This section contains our ready-made integrations for ecommerce platforms. Check out our most popular integrations: [block:html] { - "html": "\n\n" + "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 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). +- Check if you whitelisted 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). ## Google Pay direct integration - Ensure you follow our step by step guide. -- 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). +- 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). -# Guidelines for contacting Integration Support +# Integration contact rules -**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: +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: -- 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. +- **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. > ⚠️ **Note:** > -> 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. +> 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. > -> - 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 require server access, we work exclusively with SFTP and SSH, using 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 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 +> - 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 From 15e4fad01e9ef900a56d9ba9d5add082d001e09e Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Wed, 25 Sep 2024 09:18:15 +0200 Subject: [PATCH 180/319] DOCS-4364: Add POS guides (#3093) --- content/point-of-sale/hardware-setup.md | 52 +++++++++++++++++--- content/point-of-sale/pos-overview.md | 1 + content/point-of-sale/pos-troubleshooting.md | 34 +++++++++++-- content/point-of-sale/smartpos-solutions.md | 2 + 4 files changed, 77 insertions(+), 12 deletions(-) diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index 1264b892e..54513b1c4 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -19,7 +19,7 @@ slug: 'hardware-setup' This page outlines the configuration of the hardware. -### Security check upon delivery +# 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. @@ -29,7 +29,7 @@ Steps to follow: 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 +## Connect to a Wi-Fi network To connect to a Wi-Fi network: @@ -40,7 +40,7 @@ For more information about Wi-Fi connection, refer to the manual provided with t *** -### Connect to the Smartpad +# Connect to the Smartpad Smartpad is a cable-powered terminal that must be connected to a power cable. @@ -48,19 +48,27 @@ To enhance network stability, we recommend that you connect the Smartpad to a ne *** -### Manage battery +# Manage battery If your battery is not charging, ensure that you are using a USB-C cable that is properly connected to the power source. *** -### Print receipts +# Print receipts To print your receipt, you need a thermal printer roll of either 57mm or 58mm. *** -### Turn on the terminal +# Serial number + +You can find your serial number (for SmartPOS / Sunmi) + +- on the device: some models display the serial number on the back of the terminal. +- in the MultiSafepay app: go to **Settings** > Menu > **About** > scroll to the bottom +- in the Sunmi settings app: location depends on the Android version, for example under **Model and hardware** / **About device** + +# Turn on the terminal - Charge the terminal for at least 30 minutes. - Press and hold the power button for a few seconds to switch it on. @@ -69,7 +77,9 @@ For more information, see the manual provided with the terminal. *** -## Update firmware + + +# Update firmware An outdated version of the firmware can cause miscellaneous issues. Always ensure to run your device on the latest available version. @@ -102,7 +112,33 @@ Steps on the device: *** -### Sunmi contact +# Sunmi portal + +Functionalities you can access as a partner through your Sunmi portal: + +- remotely reboot a terminal +- whitelist apps to be displayed +- remotely switch off a terminal +- check installed Android version +- check last wifi connection time of a device +- push new software +- access terminal settings (automatic upgrades & installation; update message prompt etc.) + + +## Automatic installation and updates + +- Sign in to partner.sunmi.com. +- Configure the app to automatically update or choose a specific version. +- Set the app to install automatically when the POS terminal connects to a network. +- Choose the terminal models you want to apply these settings to + +## Add your app to the Sunmi App Store + +- Sign in to your Sunmi Partner Account via partner.sunmi.com. +- Go to **Development** > App Publishing, and upload your APK file. + + +# Sunmi contact As a partner you can contact Sunmi support for any issues with the terminal. diff --git a/content/point-of-sale/pos-overview.md b/content/point-of-sale/pos-overview.md index b434974fe..59cdb10b8 100644 --- a/content/point-of-sale/pos-overview.md +++ b/content/point-of-sale/pos-overview.md @@ -49,6 +49,7 @@ Read how our POS solutions can benefit your business on \n \n \n \n \n
" + "html": "" } [/block]
From 2e11a27ddd3a0ed7c43da4b764f75e1f60999007 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 25 Sep 2024 09:50:44 +0200 Subject: [PATCH 182/319] DOCS-4369: Move hardware under SmartPOS (#3096) --- content/integrations/webshop-access.md | 16 ++++++++-------- content/point-of-sale/hardware-setup.md | 3 ++- content/point-of-sale/pos-troubleshooting.md | 2 +- content/point-of-sale/smartpos-overview.md | 2 +- content/point-of-sale/traditional-ctap.md | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 8647a4880..347dbd3b0 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -20,13 +20,13 @@ We strive for correct functionality, and support you best as possible with any c Always ensure your **plugin version is up to date**. Only then, we can guarantee correct functioning of our solutions. Seek assistance from your developer to make sure the basic configurations are in place. -Check the **changelog **for your plugin to read about any recently added features, and bugfixes. +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 -**Note: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. ** +**Note**: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. @@ -37,7 +37,7 @@ 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]\(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. ** + **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. @@ -73,7 +73,7 @@ Possible errors you may encounter incase 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) @@ -83,7 +83,7 @@ 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. +**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. @@ -111,7 +111,7 @@ If you notice any troubles during the integration of direct buttons for Apple Pa - 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**. -- Distinguish correctly between **TEST **and **LIVE **environments, and the respective domain validation files. +- 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 you whitelisted 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. @@ -129,7 +129,7 @@ If all the steps within your topic did not solve the issue, we are always availa When creating a ticket to [integration@multisafepay.com](mailto:integration@multisafepay.com), please **always** indicate the following: - **Confirm you have executed all the steps we recommend for self-troubleshooting** -- Your **merchant ID **(MID) to identify your account. +- 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? diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index 54513b1c4..e5ca24420 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -1,7 +1,8 @@ --- title: 'Hardware setup' +parentDoc: 64674fbc74bc4007521ebbcb category: 6477597e0e2961004638cd5d -order: 1 +order: 4 hidden: false slug: 'hardware-setup' --- diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index 2b5495ba8..a09e9c586 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -1,7 +1,7 @@ --- title: 'POS troubleshooting' category: 6477597e0e2961004638cd5d -order: 4 +order: 3 hidden: false slug: 'pos-troubleshooting' diff --git a/content/point-of-sale/smartpos-overview.md b/content/point-of-sale/smartpos-overview.md index 5ab879483..ece5e67f3 100644 --- a/content/point-of-sale/smartpos-overview.md +++ b/content/point-of-sale/smartpos-overview.md @@ -1,7 +1,7 @@ --- title: 'SmartPOS terminal' category: 6477597e0e2961004638cd5d -order: 3 +order: 2 hidden: false slug: 'smartpos-terminal' --- diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md index 2bedab55b..9e940d2eb 100644 --- a/content/point-of-sale/traditional-ctap.md +++ b/content/point-of-sale/traditional-ctap.md @@ -1,7 +1,7 @@ --- title: 'Traditional (CTAP) terminal' category: 6477597e0e2961004638cd5d -order: 2 +order: 1 hidden: false slug: 'traditional-ctap-terminal' From d90859c144e83afc83bb816e70178f4dbf423065 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 25 Sep 2024 14:01:05 +0200 Subject: [PATCH 183/319] DOCS-4368A: small corrections integration troubleshooting (#3097) --- content/integrations/webshop-access.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 347dbd3b0..89aca7944 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -22,11 +22,11 @@ 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 -**Note**: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. +**⚠️ Note**: We cannot guarantee correct behavior with any third party solutions which are not explicitly mentioned as compatible in our documentation. If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. @@ -35,15 +35,16 @@ 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]\(payment link) and verify if the issue occurs as well. (!) +- 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. + + **💡 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: @@ -57,14 +58,14 @@ Further checks for custom integrations: # Payment Component not displayed correctly -Possible errors you may encounter incase of misconfigurations are: +Possible errors you may encounter in case 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) -**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. @@ -83,7 +84,8 @@ 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. + + **💡 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. @@ -91,9 +93,9 @@ Alternative solutions in the meantime: # Webhook issues -If you encounter one of the following issues: +If you encounter the following issue: -- **Transaction status** in your backoffice differs from the status on your MultiSafepay Dashboard +- **Transaction status** in your Back Office differs from the status on your MultiSafepay Dashboard You can try the following: From 8e80f2b009b0039309e3b81733f6782d7f6a7cc9 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 25 Sep 2024 14:14:49 +0200 Subject: [PATCH 184/319] DOCS-4371: icon addition, changes (Tip/Note/Success) (#3098) --- .github/archive/integration-team/connectjs.md | 2 +- api/general/transaction-expiration.md | 2 +- content/accounting/accounting-integrations.md | 4 ++-- content/accounting/reports.md | 2 +- content/checkout/multiple.md | 12 ++++++------ content/checkout/payment-links.md | 6 +++--- content/checkout/payment-pages.md | 2 +- content/checkout/previous-release.md | 4 ++-- content/checkout/single.md | 12 ++++++------ content/developer/email-authentication.md | 2 +- content/developer/fastcheckout-android-sdk.md | 4 ++-- content/developer/fastcheckout-ios-sdk.md | 4 ++-- content/developer/rounding-rule.md | 2 +- content/getting-started/api-onboarding.md | 2 +- content/getting-started/currencies.md | 6 +++--- content/getting-started/email-styling.md | 4 ++-- content/getting-started/invoices.md | 2 +- content/getting-started/onboarding.md | 2 +- content/getting-started/payment-methods.md | 2 +- content/getting-started/payouts.md | 4 ++-- content/getting-started/sites.md | 2 +- content/integrations/api-integration.md | 4 ++-- content/integrations/ccv-shop-partner.md | 2 +- content/integrations/ccv-shop.md | 2 +- content/integrations/drupal.md | 10 +++++----- content/integrations/lightspeed.md | 2 +- content/integrations/magento-1.md | 6 +++--- content/integrations/magento-2.md | 11 ++++++----- content/integrations/mijnwebwinkel.md | 2 +- content/integrations/myshop.md | 2 +- content/integrations/odoo.md | 4 ++-- content/integrations/opencart-3.md | 6 +++--- content/integrations/opencart-4.md | 6 +++--- content/integrations/oscommerce.md | 6 +++--- content/integrations/partner-integrations.md | 2 +- content/integrations/prestashop-1-6.md | 6 +++--- content/integrations/prestashop.md | 10 +++++----- content/integrations/shopify-beta.md | 2 +- content/integrations/shopify.md | 4 ++-- content/integrations/shopware-5.md | 4 ++-- content/integrations/shopware-6.md | 6 +++--- content/integrations/virtuemart-3.md | 4 ++-- content/integrations/virtuemart-4.md | 4 ++-- content/integrations/webshop-access.md | 16 +++++++++++----- content/integrations/woocommerce.md | 12 ++++++------ content/integrations/zen-cart.md | 4 ++-- content/payment-management/chargebacks.md | 2 +- content/payment-management/recurring-payments.md | 6 +++--- content/payment-management/second-chance.md | 4 ++-- content/payment-management/success-pages.md | 2 +- content/payment-management/webhook.md | 8 ++++---- content/payment-methods/3ds2.md | 2 +- .../payment-methods/amazon-pay-integration.md | 2 +- content/payment-methods/apple-pay-direct.md | 14 +++++++------- content/payment-methods/bank-transfer.md | 4 ++-- content/payment-methods/belfius.md | 4 ++-- content/payment-methods/betaalpermaand.md | 6 +++--- content/payment-methods/card-payments.md | 4 ++-- content/payment-methods/cardholder-data.md | 2 +- content/payment-methods/cbc-kbc.md | 4 ++-- content/payment-methods/direct-debit.md | 4 ++-- content/payment-methods/e-invoicing.md | 4 ++-- content/payment-methods/google-pay-direct.md | 6 +++--- content/payment-methods/in3.md | 2 +- content/payment-methods/klarna.md | 6 +++--- content/payment-methods/mybank.md | 2 +- .../pay-after-delivery-installments.md | 4 ++-- content/payment-methods/pay-after-delivery.md | 6 +++--- content/payment-methods/paypal-direct.md | 2 +- content/payment-methods/paypal.md | 2 +- content/payment-methods/riverty.md | 4 ++-- content/payment-methods/testing.md | 12 ++++++------ content/payment-methods/uncleared.md | 2 +- content/payment-methods/zinia.md | 2 +- content/point-of-sale/event-notifications.md | 2 +- content/point-of-sale/hardware-setup.md | 2 +- content/point-of-sale/pos-troubleshooting.md | 2 +- content/point-of-sale/smartPOS-features.md | 8 ++++---- content/point-of-sale/smartpos-activation.md | 4 ++-- content/point-of-sale/smartpos-solutions.md | 2 +- content/point-of-sale/traditional-ctap.md | 4 ++-- docs/archive/google-analytics.md | 8 ++++---- 82 files changed, 190 insertions(+), 183 deletions(-) diff --git a/.github/archive/integration-team/connectjs.md b/.github/archive/integration-team/connectjs.md index cb08e6831..bff66f0a5 100644 --- a/.github/archive/integration-team/connectjs.md +++ b/.github/archive/integration-team/connectjs.md @@ -34,7 +34,7 @@ MultiSafepay = { } } ``` -📘 **Note:** The `containerId` uses `multisafepayContainer` as an example class name. You can enter your own container name. +**⚠️ Note:** The `containerId` uses `multisafepayContainer` as an example class name. You can enter your own container name. 4. Add the ConnectJS library: ``` diff --git a/api/general/transaction-expiration.md b/api/general/transaction-expiration.md index 7acbc8439..a21069d8d 100644 --- a/api/general/transaction-expiration.md +++ b/api/general/transaction-expiration.md @@ -13,7 +13,7 @@ Different payment methods set different expiration times for transactions. The t The expiration time is set by the payment method and cannot be changed. -📘 **Note:** Transaction expiration times are different to session lifetimes of payment pages. +**⚠️ Note:** Transaction expiration times are different to session lifetimes of payment pages. The table below sets out the expiration time per payment method: diff --git a/content/accounting/accounting-integrations.md b/content/accounting/accounting-integrations.md index 5c70a006d..c1752d126 100644 --- a/content/accounting/accounting-integrations.md +++ b/content/accounting/accounting-integrations.md @@ -460,7 +460,7 @@ You must first provide Twinfield with an additional international bank account n -✅   **Tip!** For a free 30-day trial including all accounting functions, see Twinfield – Proef abonnement aanvragen . +  **💡 Tip!** For a free 30-day trial including all accounting functions, see Twinfield – Proef abonnement aanvragen .
@@ -551,7 +551,7 @@ Provide Duopact with your MultiSafepay [site API key](/docs/sites#site-id-api-ke 3. Go to **Bankmutaties** > **MultiSafepay**. 4. Click the green button under the **Status** tab. -📘 **Note:** Manually importing transactions doesn't affect automatic imports. +**⚠️ Note:** Manually importing transactions doesn't affect automatic imports. diff --git a/content/accounting/reports.md b/content/accounting/reports.md index c01af14a4..7afaa1e2b 100644 --- a/content/accounting/reports.md +++ b/content/accounting/reports.md @@ -257,7 +257,7 @@ This report provides an overview (in Excel format) of the specific transactions 2. Go to **Reports** > **Daily balance**. 3. Under **Payout ID** for the relevant date, click the green **Export** icon. -✅   **Tip!** You must have completed at least one payout to generate a payout report. +  **💡 Tip!** You must have completed at least one payout to generate a payout report. diff --git a/content/checkout/multiple.md b/content/checkout/multiple.md index 6bf143dc8..c3801d83a 100644 --- a/content/checkout/multiple.md +++ b/content/checkout/multiple.md @@ -54,7 +54,7 @@ Decide if you want to: 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 @@ -166,13 +166,13 @@ Payment components require a MultiSafepay API token. See API reference – [Gene 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). + **⚠️ 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. + **⚠️ 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: @@ -308,7 +308,7 @@ The `PaymentComponent` has the following methods: ## 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: @@ -334,10 +334,10 @@ The `payment_data` includes the following 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. | +| `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. +**⚠️ Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data. diff --git a/content/checkout/payment-links.md b/content/checkout/payment-links.md index e78deb59d..a5f5ef00e 100644 --- a/content/checkout/payment-links.md +++ b/content/checkout/payment-links.md @@ -39,7 +39,7 @@ Or via your dashboard: 4. From the **Site** list, select the relevant site. 5. Under **Amount**, select the currency from the list, and then enter the whole value and cents. 6. In the **Order ID** field, enter the order ID from your webshop. - **Note:** The order ID for every payment link must be unique. + **⚠️ Note:** The order ID for every payment link must be unique. 7. In the **Description** field, enter a description of the order. 8. In the **Link expiry** field, enter the number of days for the link to remain active. Default: 30 days. 9. To send [Second Chance emails](/docs/second-chance/), select the **Second chance email** checkbox. @@ -69,7 +69,7 @@ Or via your dashboard: 2. Go to **Transactions** > **Transaction overview**, and then click the relevant transaction. 4. On the **Transaction details** page, under **Order summary**, click **Generate payment link** > **Duplicate this order**. -✅   **Tip!** The order ID must be unique. +  **💡 Tip!** The order ID must be unique.
@@ -123,7 +123,7 @@ The lifetime of a payment link is how long it remains active for the customer to To set or adjust the lifetime of a payment link, see API reference – [Create order](/reference/createorder/): `days_active` parameter. -📘 **Note:** This is different to [transaction expiration times per payment method](/reference/transaction-expiration/). +**⚠️ Note:** This is different to [transaction expiration times per payment method](/reference/transaction-expiration/). This only applies to certain payment methods: diff --git a/content/checkout/payment-pages.md b/content/checkout/payment-pages.md index 856382264..f18df9cb3 100755 --- a/content/checkout/payment-pages.md +++ b/content/checkout/payment-pages.md @@ -184,7 +184,7 @@ To display all payment methods on the payment page, follow these steps: 2. Add `&methods=all` at the end of the payment link, e.g. `https://testpayv2.multisafepay.com/connect/822LtiM8RjN313Yo5C46E2cjqmuL5qVfc7w/?lang=en_NL&methods=all` 3. Redirect the customer to the adapted link. -📘 **Note:** This is not a standard option in our [ready-made integrations](/docs/our-integrations/). +**⚠️ Note:** This is not a standard option in our [ready-made integrations](/docs/our-integrations/). diff --git a/content/checkout/previous-release.md b/content/checkout/previous-release.md index fafc3d76f..13d491757 100644 --- a/content/checkout/previous-release.md +++ b/content/checkout/previous-release.md @@ -31,7 +31,7 @@ This technical manual is for integrating the previous release of the payment com ## 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 @@ -68,7 +68,7 @@ Payment Components require a MultiSafepay API token. See API reference – [Gene - 📘 **Note:** We use the `orderData` object to ensure the payment method is enabled and the currency, country, and order amount are supported. + **⚠️ Note:** We use the `orderData` object to ensure the payment method is enabled and the currency, country, and order amount are supported. 2. Construct a `PaymentComponent` object in the `test` environment using the `orderData` object and your API token: diff --git a/content/checkout/single.md b/content/checkout/single.md index 0c72a6fc3..5ef7fbbce 100644 --- a/content/checkout/single.md +++ b/content/checkout/single.md @@ -36,7 +36,7 @@ Add the following elements to your checkout page: 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 @@ -129,7 +129,7 @@ Add the following elements to your checkout page: 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). + **⚠️ 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) @@ -137,7 +137,7 @@ Add the following elements to your checkout page: -📘 **Note:** We use the `orderData` object to ensure the payment method is enabled, and the currency, country, and order amount are supported. +**⚠️ Note:** We use the `orderData` object to ensure the payment method is enabled, and the currency, country, and order amount are supported. 2. Construct a `PaymentComponent` object in the `test` environment using the `order` object and your API token: @@ -148,7 +148,7 @@ const PaymentComponent = new MultiSafepay({ }); ``` -📘 **Note:** To use recurring payments in your payment components, initialize the component using the `recurring` object. +**⚠️ Note:** To use recurring payments in your payment components, initialize the component using the `recurring` object. ## Initialize the component @@ -202,7 +202,7 @@ const PaymentComponent = new MultiSafepay({ - **Note:** The `PaymentComponent` uses the following methods: + **⚠️ Note:** The `PaymentComponent` uses the following methods:
Methods @@ -250,7 +250,7 @@ The `payment_data` includes the following parameters:
-**Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data. +**⚠️ Note:** When `payment_data.tokenize` is set to `true`you need to append `customer.reference` to the order data.
diff --git a/content/developer/email-authentication.md b/content/developer/email-authentication.md index add63b246..6efa58777 100644 --- a/content/developer/email-authentication.md +++ b/content/developer/email-authentication.md @@ -11,7 +11,7 @@ Sender Policy Framework (SPF) records let you specify who is authorized to send 1. Through your hosting provider, domain registrar, or DNS provider, create a DNS TXT record that is named after your domain, e.g. `example.com`. 2. Add the following string your TXT record containing `v=spf1`: `include:spf.multisafepay.com` -📘 **Note:** SPF records may contain a total of 10 DNS lookups (`include` and `mx`). If you have reached this limit, add our IP addresses instead: `ip4:213.189.0.0/23 ip4:185.99.128.0/22`. +**⚠️ Note:** SPF records may contain a total of 10 DNS lookups (`include` and `mx`). If you have reached this limit, add our IP addresses instead: `ip4:213.189.0.0/23 ip4:185.99.128.0/22`. ✅ **Success!** You have created an SPF record. diff --git a/content/developer/fastcheckout-android-sdk.md b/content/developer/fastcheckout-android-sdk.md index 788bdab69..6cd2659d5 100644 --- a/content/developer/fastcheckout-android-sdk.md +++ b/content/developer/fastcheckout-android-sdk.md @@ -131,7 +131,7 @@ The customer is automatically redirected to the **Register** screen: 4. Sync Gradle. -> ✅ Success +> **✅ Success!** > You can now start using the Android SDK in your app. # How to integrate @@ -160,7 +160,7 @@ The SDK is thread safe, but you cannot access the main UI elements from backgrou #### Update the UI from a background thread in Android -📘 **Note:** For integration based on JAVA/Android versioning, see the official Android developers site – Threads . +**⚠️ Note:** For integration based on JAVA/Android versioning, see the official Android developers site – Threads . ```java … diff --git a/content/developer/fastcheckout-ios-sdk.md b/content/developer/fastcheckout-ios-sdk.md index b3a5b8f9b..bba31079a 100644 --- a/content/developer/fastcheckout-ios-sdk.md +++ b/content/developer/fastcheckout-ios-sdk.md @@ -118,7 +118,7 @@ The customer is automatically redirected to the **Register** screen: 7. Under **Embedded binaries**,click **+**. 8. Select **FastCheckoutKit.xcframework**. -> ✅ Success +> **✅ Success!** > You can now start using the FastCheckoutKit SDK in your app. # How to integrate @@ -145,7 +145,7 @@ manager.startCheckout(transactionId: "ID", host: self, onCompletion: { status, e }) ``` -> ✅ Success +> **✅ Success!** > You can now initiate a checkout and retrieve the <>. # Example diff --git a/content/developer/rounding-rule.md b/content/developer/rounding-rule.md index 163e40544..3056e52ba 100644 --- a/content/developer/rounding-rule.md +++ b/content/developer/rounding-rule.md @@ -12,7 +12,7 @@ MultiSafepay applies the following rounding rule when calculating the total cost 2. Calculate the total VAT for all items in the cart (if applicable): Multiply the total cost of each item by the VAT rate, then add the results together, rounding to 2 decimal places= VAT total. 3. Add the items total to the VAT total= Cart total. -✅   **Tip!** When rounding to 2 decimal places, always round half up . +  **💡 Tip!** When rounding to 2 decimal places, always round half up . Apply the same rounding rule in your integration to ensure: diff --git a/content/getting-started/api-onboarding.md b/content/getting-started/api-onboarding.md index d7302f50f..128995fb5 100644 --- a/content/getting-started/api-onboarding.md +++ b/content/getting-started/api-onboarding.md @@ -40,7 +40,7 @@ MultiSafepay verifies all bank accounts added to merchant accounts. This can be - We send the merchant a payment link for a test transaction of 1 EUR. - You send us a bank statement for the merchant's bank account via our API. -✅   **Tip!** The trade name associated with the bank account must exactly match one of the trade names listed in the chamber of commerce extract. +  **💡 Tip!** The trade name associated with the bank account must exactly match one of the trade names listed in the chamber of commerce extract. # 3. Add UBO details See API reference – [Add UBO](/reference/addaffiliateubo/) for how to submit details about the ultimate beneficial owner(s) (UBOs) of each merchant's company, including: diff --git a/content/getting-started/currencies.md b/content/getting-started/currencies.md index c919a9b04..feee5b483 100644 --- a/content/getting-started/currencies.md +++ b/content/getting-started/currencies.md @@ -20,7 +20,7 @@ To accept payments in a currency other than the default (EUR), the currency must - Supported in your <> - Correctly processed in the [create order](/reference/createorder/) request -❗️ **Note:** If the currency the customer wants to use is **not** supported by a payment method, the payment method does not appear in your checkout. +**⚠️ Note:** If the currency the customer wants to use is **not** supported by a payment method, the payment method does not appear in your checkout. ## Payouts @@ -35,7 +35,7 @@ You can [make payouts](/docs/payouts/) in: If you receive funds in any other currency, you need to convert them to a payout currency to pay them out. -❗️ **Note:** MultiSafepay applies a 4% conversion fee. +**⚠️ Note:** MultiSafepay applies a 4% conversion fee. ## Business bank account @@ -126,7 +126,7 @@ To convert other currencies to Euros (EUR), follow these steps: 5. Click **Convert**. -❗️ **Note:** Take into account the exchange rate and MultiSafepay's 4% conversion fee. +**⚠️ Note:** Take into account the exchange rate and MultiSafepay's 4% conversion fee. ## Payment methods per currency diff --git a/content/getting-started/email-styling.md b/content/getting-started/email-styling.md index f0e9d7809..572f6e20b 100644 --- a/content/getting-started/email-styling.md +++ b/content/getting-started/email-styling.md @@ -79,7 +79,7 @@ Use our pre-formatted and/or pre-written templates and populate them with your c - ❗️ **Note:** The language you set here is overridden by the `customer.locale` parameter in [create order](/reference/createorder/) requests. + **⚠️ Note:** The language you set here is overridden by the `customer.locale` parameter in [create order](/reference/createorder/) requests.
Locale example @@ -144,7 +144,7 @@ Use our pre-formatted and/or pre-written templates and populate them with your c In the **From address** field, enter the email address you want the email sent from, e.g. sales@yourcompany.com. - ❗️ **Note:** If you enter a from address other than noreply@multisafepay.com, to avoid emails being marked as spam, we recommend adding the following DNS record to your domain: + **⚠️ Note:** If you enter a from address other than noreply@multisafepay.com, to avoid emails being marked as spam, we recommend adding the following DNS record to your domain: ``` v=spf1 ip4:213.189.0.0/23 ip4:185.99.128.0/22 mx diff --git a/content/getting-started/invoices.md b/content/getting-started/invoices.md index d983eb095..a207ebbac 100644 --- a/content/getting-started/invoices.md +++ b/content/getting-started/invoices.md @@ -27,7 +27,7 @@ For payment methods where MultiSafepay: - At month end: Bank fees and [Interchange++](/docs/interchange/) fees - During processing: <>, transaction, and (collecting/non-collecting) refund fees -📘 **Note:** The transaction fee total is the sum of all processed and completed transactions within a specified timeframe _plus_ the universal transaction fee agreed when you created an account with MultiSafepay. +**⚠️ Note:** The transaction fee total is the sum of all processed and completed transactions within a specified timeframe _plus_ the universal transaction fee agreed when you created an account with MultiSafepay.
diff --git a/content/getting-started/onboarding.md b/content/getting-started/onboarding.md index 205e211d9..84d194994 100644 --- a/content/getting-started/onboarding.md +++ b/content/getting-started/onboarding.md @@ -34,7 +34,7 @@ MultiSafepay pre-screens your account to check if the products/services you sell We may ask you to provide additional documents, e.g. if you have an unusual company structure. -❗️ **Note:** Requests to process cards may be denied, e.g. if you sell [prohibited products or services](/docs/prohibited-products-services/). +**⚠️ Note:** Requests to process cards may be denied, e.g. if you sell [prohibited products or services](/docs/prohibited-products-services/). # 3. Validate bank account diff --git a/content/getting-started/payment-methods.md b/content/getting-started/payment-methods.md index 24fe61eab..a20d06698 100644 --- a/content/getting-started/payment-methods.md +++ b/content/getting-started/payment-methods.md @@ -31,7 +31,7 @@ Some payment methods, especially Banking methods, can be activated directly via 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.** +**💡 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) diff --git a/content/getting-started/payouts.md b/content/getting-started/payouts.md index c21cd50de..c8871a17f 100644 --- a/content/getting-started/payouts.md +++ b/content/getting-started/payouts.md @@ -30,7 +30,7 @@ To add additional bank accounts to your account (once fully onboarded), follow t 7. To verify the account, on the **Business bank account** page either: - Make a payment of 1 EUR from the business bank account via iDEAL or a bank transfer to your account balance, **or** - Upload a copy of a bank statement. Select the file, and then click **Upload**. - **Note:** The company name on the bank statement must exactly match one of the trade names on your Chamber of Commerce extract. + **⚠️ Note:** The company name on the bank statement must exactly match one of the trade names on your Chamber of Commerce extract. MultiSafepay verifies the bank account within 5 business days. We **only** accept business bank accounts (no private bank accounts) that are registered to your official company name. @@ -61,7 +61,7 @@ You can schedule automated payouts on specific day, or make them manually. - If you want to specify a minimum amount to retain in your balance, in the **Set reserve balance** fields, enter an amount. 4. Click **Schedule payouts**. -✅   **Tip!** +  **💡 Tip!** To schedule payouts for different currencies, you must have a account balance and an active business bank account for each currency. For automated payouts, a report to view all transactions between two payouts will be available. For more information, see [payout report](/docs/reports#payout-report) diff --git a/content/getting-started/sites.md b/content/getting-started/sites.md index 07ea58441..8f4962e87 100644 --- a/content/getting-started/sites.md +++ b/content/getting-started/sites.md @@ -22,7 +22,7 @@ To process payments from a site operated by a separate legal entity, you must si 3. Click **Add new site**. - From the **Category** list, select what type of products or services your site sells. - In the **Description** field, enter the site name. - **Note:** If relevant, this is displayed on MultiSafepay payment pages and the customer’s bank statement. + **⚠️ Note:** If relevant, this is displayed on MultiSafepay payment pages and the customer’s bank statement. - In the **Base URL** field, add the site’s URL. This must be the URL where you receive payments. - If you want to receive [status updates](/docs/payment-statuses/) via webhook, in the **Webhook URL** field, enter a URL for us to send them to. 4. Click **Save**. diff --git a/content/integrations/api-integration.md b/content/integrations/api-integration.md index dc5d2bd8c..0b38d0f96 100644 --- a/content/integrations/api-integration.md +++ b/content/integrations/api-integration.md @@ -20,7 +20,7 @@ You must first: To authenticate requests, you must include your API key as a query parameter in the request URL. -✅  **Tip!** While building your integration we recommend using the [test environment](/reference/environments/): `https://testapi.multisafepay.com/v1/json`. +  **💡 Tip!** While building your integration we recommend using the [test environment](/reference/environments/): `https://testapi.multisafepay.com/v1/json`. Before continuing with this tutorial, see if you can save development time with our range of [wrappers and SDKs](/docs/wrappers-sdks/). @@ -87,7 +87,7 @@ curl -X POST "https://testapi.multisafepay.com/v1/json/orders?api_key={your-test **3.** Open the `payment_url` to complete payment on the payment page. -❗️ **Note:** If you receive an error in the response, see [Troubleshooting](/docs/troubleshooting/). +**⚠️ Note:** If you receive an error in the response, see [Troubleshooting](/docs/troubleshooting/). ✅ **Success!** You have successfully created an order. Now learn how to track orders via our webhook as they progress. diff --git a/content/integrations/ccv-shop-partner.md b/content/integrations/ccv-shop-partner.md index 6d1025db4..6aa84c22e 100644 --- a/content/integrations/ccv-shop-partner.md +++ b/content/integrations/ccv-shop-partner.md @@ -15,7 +15,7 @@ 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. +  **💡 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 <> and install the MultiSafepay app from the App Store. 2. Go to **Mijn webshop** > **Instellingen** > **Bestelproces & voorraad** > **Betaalmethoden**. diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index d1b14abd9..2dd09eb01 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -92,7 +92,7 @@ To sort the payment methods on the checkout page, you can change the order in th 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. +**⚠️ 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.
diff --git a/content/integrations/drupal.md b/content/integrations/drupal.md index 6cba55d87..4c6b0542b 100755 --- a/content/integrations/drupal.md +++ b/content/integrations/drupal.md @@ -29,7 +29,7 @@ slug: 'drupal' ## Installation -✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. These instructions are for Composer. You can also install the plugin in your <>. @@ -111,7 +111,7 @@ You can update the plugin in your backend or the CMS marketplace, or via SFTP. How to update in your backend
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 instructions and the Configuration instructions from step 2. @@ -120,7 +120,7 @@ You can update the plugin in your backend or the CMS marketplace, or via SFTP. ### Upgrades -❗️ **Note:** Drupal no longer provides support for Drupal 8.9.x. +**⚠️ Note:** Drupal no longer provides support for Drupal 8.9.x. For how to upgrade Drupal 8 to Drupal 9, see Drupal - Upgrading from Drupal 8 to Drupal 9 or higher .
@@ -151,7 +151,7 @@ For how to upgrade Drupal 8 to Drupal 9, see Drupal - How to set payment link lifetimes diff --git a/content/integrations/mijnwebwinkel.md b/content/integrations/mijnwebwinkel.md index ef8e12bd2..461ff6259 100644 --- a/content/integrations/mijnwebwinkel.md +++ b/content/integrations/mijnwebwinkel.md @@ -15,7 +15,7 @@ You will need a [MultiSafepay account](/docs/getting-started-guide/). # Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the Mijnwebwinkel installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the Mijnwebwinkel installation procedure. Always make a backup. 1. Sign in to your Mijnwebwinkel <>. 2. Go to **Online orders** > **Payment method** > **MultiSafepay**. diff --git a/content/integrations/myshop.md b/content/integrations/myshop.md index ef8cf7fe1..f4783addb 100644 --- a/content/integrations/myshop.md +++ b/content/integrations/myshop.md @@ -38,7 +38,7 @@ You will need a [MultiSafepay account](/docs/getting-started-guide/). # Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the myShop installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the myShop installation procedure. Always make a backup. 1. Sign in to your myShop <>. 2. Install the MultiSafepay app in the App Store. diff --git a/content/integrations/odoo.md b/content/integrations/odoo.md index d95509a38..de6f9d803 100644 --- a/content/integrations/odoo.md +++ b/content/integrations/odoo.md @@ -28,7 +28,7 @@ slug: 'odoo' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the Odoo installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the Odoo installation procedure. Always make a backup. 1. Download the ZIP archive with module. 2. Unpack the content of the .ZIP file. @@ -171,7 +171,7 @@ For <> orders, the refund request must include a `shopping_cart` - The `item_quantity` must not be more than `quantity` in the original order. - The `item_price` must be equal to the `unit_price` in the original order. -❗️ **Note:** You cannot refund BNPL orders if a gift card or promo code was used for the original order. +**⚠️ Note:** You cannot refund BNPL orders if a gift card or promo code was used for the original order. diff --git a/content/integrations/opencart-3.md b/content/integrations/opencart-3.md index 00efe7f70..694799d9f 100755 --- a/content/integrations/opencart-3.md +++ b/content/integrations/opencart-3.md @@ -31,7 +31,7 @@ slug: 'opencart-3' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the OpenCart installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the OpenCart installation procedure. Always make a backup. 1. Download the `Plugin_OpenCart_3.x.x.ocmod.zip`. 2. Sign in to your OpenCart <>. @@ -138,7 +138,7 @@ If you're new to accepting card payments, email a request to activate them to How to disable shopping carts
-❗️ **Note:** This disables all <> methods. +**⚠️ Note:** This disables all <> methods. 1. Sign in to your OpenCart backend. 2. Go to **Extensions** > **Payments** > **MultiSafepay**. diff --git a/content/integrations/opencart-4.md b/content/integrations/opencart-4.md index b833c92df..f13af1ed9 100644 --- a/content/integrations/opencart-4.md +++ b/content/integrations/opencart-4.md @@ -31,7 +31,7 @@ slug: 'opencart-4' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the OpenCart 4 installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the OpenCart 4 installation procedure. Always make a backup. 1. Download the plugin file: `multisafepay.ocmod.zip`. 2. Sign in to your OpenCart 4 <>. @@ -114,7 +114,7 @@ If you're new to accepting card payments, email a request to activate them to How to disable shopping carts
-❗️ **Note:** This disables all <> methods. +**⚠️ Note:** This disables all <> methods. 1. Sign in to your OpenCart 4 . 2. Go to **Extensions** > **Extensions** > **Payments** > **MultiSafepay** > **Edit Icon**. diff --git a/content/integrations/oscommerce.md b/content/integrations/oscommerce.md index b49560c4c..48aca4e0e 100755 --- a/content/integrations/oscommerce.md +++ b/content/integrations/oscommerce.md @@ -97,11 +97,11 @@ Release date: Mar 28, 2014 - OsCommerce 2.3 - Tested on PHP 7.0 -📘 **Note:** Version 3.0.0 is tested on PHP 5.6. Previous versions are no longer tested for compatibility. For more information, email +**⚠️ Note:** Version 3.0.0 is tested on PHP 5.6. Previous versions are no longer tested for compatibility. For more information, email # Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the OsCommerce installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the OsCommerce installation procedure. Always make a backup. 1. Unpack the content of the .ZIP file in the root of your webshop. 2. Sign in to your OsCommerce <>. @@ -164,7 +164,7 @@ You can update the plugin in your backend or the CMS marketplace, or via SFTP. How to update via SFTP
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/partner-integrations.md b/content/integrations/partner-integrations.md index a3592f02d..c7ce44dd8 100644 --- a/content/integrations/partner-integrations.md +++ b/content/integrations/partner-integrations.md @@ -270,7 +270,7 @@ For technical support, contact LogiVert -
Manual . -✅   **Tip!** We recommend first installing the plugin in a test environment, following the LogiVert installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the LogiVert installation procedure. Always make a backup. ___ diff --git a/content/integrations/prestashop-1-6.md b/content/integrations/prestashop-1-6.md index 659be4b2b..fa87594af 100644 --- a/content/integrations/prestashop-1-6.md +++ b/content/integrations/prestashop-1-6.md @@ -31,12 +31,12 @@ slug: 'prestashop-1-6' # Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the PrestaShop 1.6 installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the PrestaShop 1.6 installation procedure. Always make a backup. 1. Unpack the contents of the .zip archive and upload the **Modules** folder via SFTP to the PrestaShop root directory, merging the two folders. 2. Sign in to your PrestaShop 1.6 <>. 3. Go to **Modules and services** > **Payments and gateways**. - **Note:** You must install and configure the MultiSafepay Core Module (MultiSafepay) because all payment methods require certain settings and/or the API key in the core module. + **⚠️ Note:** You must install and configure the MultiSafepay Core Module (MultiSafepay) because all payment methods require certain settings and/or the API key in the core module. 4. In the next screen, proceed with the installation. 5. Enter your [API key](/docs/sites#site-id-api-key-and-security-code), and then click **Save**. 6. On the **Payments** tab, enable the relevant payment methods. @@ -208,7 +208,7 @@ You can update the plugin in your backend and the CMS marketplace, or via SFTP. How to update via SFTP
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md index 6eda6c9b9..1b516a977 100644 --- a/content/integrations/prestashop.md +++ b/content/integrations/prestashop.md @@ -32,7 +32,7 @@ slug: 'prestashop' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the PrestaShop 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 Back Office. 2. Go to **Modules** > **Module Manager** > **Upload a module**. @@ -174,7 +174,7 @@ The plugin supports [payment components](/docs/payment-components/), which: 💬 Support: If you're new to accepting card payments, email a request to activate them to -📘 **Note:** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases. +**⚠️ Note:** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases. @@ -189,7 +189,7 @@ The plugin supports [payment components](/docs/payment-components/), which: 3. Click on **Add new order** at the top right corner. 4. To add new order, follow all steps in PrestaShop 8 core reference page - see PrestaShop back office page
-> 📘 **Note:** To successfully generate payment links from the back office, ensure that you have followed the steps below: +> **⚠️ Note:** To successfully generate payment links from the back office, ensure that you have followed the steps below: > Under **Summary** section: > - Select **MultiSafepay** as **Payment**. > - Select **MultiSafepay initialized** as **Order status**. @@ -277,7 +277,7 @@ If you notice errors in shopping cart calculations, email > methods do not work if the shopping cart is disabled. +**⚠️ Note:** <> methods do not work if the shopping cart is disabled.
How to disable the shopping cart @@ -333,7 +333,7 @@ To translate the names of payment methods: How to update in your backend
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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](/docs/prestashop-1-7#how-to-install) instructions. diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index af1fbdaf1..738444302 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -35,7 +35,7 @@ To install or migrate, follow these steps: - 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. +  **💡 Tip!** We recommend first testing each payment method before setting your **live** API key.
--- diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md index 3a0d29659..ef4e5333e 100755 --- a/content/integrations/shopify.md +++ b/content/integrations/shopify.md @@ -32,7 +32,7 @@ To install, follow these steps: 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. +  **💡 Tip!** We recommend first testing each payment method before setting your **live** API key.
--- @@ -71,7 +71,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**. +**⚠️ Note:** If an order is not completed within **2** hours, the <> changes from **Pending** to **Expired**. ## Payment methods diff --git a/content/integrations/shopware-5.md b/content/integrations/shopware-5.md index cde4d7caa..2553dcd61 100644 --- a/content/integrations/shopware-5.md +++ b/content/integrations/shopware-5.md @@ -28,7 +28,7 @@ slug: 'shopware-5' ## Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the Shopware 5 installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the Shopware 5 installation procedure. Always make a backup. 1. Sign in to your Shopware 5 backend. 2. Go to **Configuration** > **Plugin manager**. @@ -171,7 +171,7 @@ You can update the plugin in your backend or the CMS marketplace, or via SFTP. How to update in your backend
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/shopware-6.md b/content/integrations/shopware-6.md index 1fc61b388..83b104f6a 100644 --- a/content/integrations/shopware-6.md +++ b/content/integrations/shopware-6.md @@ -26,7 +26,7 @@ slug: 'shopware-6' ## Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the Shopware 6 installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the Shopware 6 installation procedure. Always make a backup. ### Marketplace installation Get the free MultiSafepay plugin from the Shopware 6 marketplace and connect your webshop with your Shopware account. @@ -80,7 +80,7 @@ If you're new to accepting card payments, email a request to activate them to -📘 **Note:** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases. +**⚠️ Note:** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases.
@@ -152,7 +152,7 @@ If you change the <> to **Delivered** in your backend, th ## Updates -✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. ### Marketplace update Following the steps described in the installation process from Shopware 6 marketplace. diff --git a/content/integrations/virtuemart-3.md b/content/integrations/virtuemart-3.md index 0854190da..704621de5 100755 --- a/content/integrations/virtuemart-3.md +++ b/content/integrations/virtuemart-3.md @@ -27,7 +27,7 @@ slug: 'virtuemart-3' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the VirtueMart installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the VirtueMart installation procedure. Always make a backup. 1. Sign in to your VirtueMart <>. 2. Go to **Extensions** > **Extension manager**. @@ -107,7 +107,7 @@ You can update the plugin in your backend and the CMS marketplace, via SFTP. How to update in your backend
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/virtuemart-4.md b/content/integrations/virtuemart-4.md index e7b8c1f1c..19c7a4b4e 100755 --- a/content/integrations/virtuemart-4.md +++ b/content/integrations/virtuemart-4.md @@ -27,7 +27,7 @@ slug: 'virtuemart-4' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the VirtueMart installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the VirtueMart installation procedure. Always make a backup. 1. Sign in to your VirtueMart <>. 2. Go to **System** > **Install** > **Extensions**. @@ -102,7 +102,7 @@ You cannot refund more than the original amount in your dashboard. You can update the plugin in your backend as described below: -✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 89aca7944..d0d379105 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -22,11 +22,13 @@ 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 -**⚠️ Note**: We cannot guarantee correct behavior with any third party solutions which are not explicitly mentioned as compatible in our documentation. +**⚠️ Note:**: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. + If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. @@ -38,13 +40,16 @@ If you encounter issues that affect payments, valuable first checks are: - 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. + **💡 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: @@ -85,7 +90,8 @@ As a temporary fix, while we investigate the issue, you can use our payments via - Check if the issue occurs also when deactivating any 3rd party solutions - **💡 Tip**: You can do this best via a staging environment. +**💡 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. diff --git a/content/integrations/woocommerce.md b/content/integrations/woocommerce.md index 990b0b186..b1f440eb4 100755 --- a/content/integrations/woocommerce.md +++ b/content/integrations/woocommerce.md @@ -27,7 +27,7 @@ slug: 'woocommerce' # Installation -✅   **Tip!** We recommend first installing the plugin in a test environment, following the WooCommerce installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the WooCommerce installation procedure. Always make a backup. There are two ways to install the plugin: @@ -186,7 +186,7 @@ The plugin supports [payment components](/docs/payment-components/), which: 💬 Support: If you're new to accepting card payments, email a request to activate them to -📘 **Note:** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases. +**⚠️ Note:*** If you have a custom checkout and encounter a conflict with the payment component, the Integration Team will do their best to provide support, but we can't guarantee compatibility in all cases. @@ -216,7 +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. +**💡 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/) @@ -259,7 +259,7 @@ You need to [activate recurring payments](/docs/recurring-payments/) and then en 5. In the **Recurring payments** filed, select **Enabled**. 6. Click **Save changes**. -📘 **Note:** To activate recurring payments, ensure that the Payment component is enabled. +**⚠️ Note:** To activate recurring payments, ensure that the Payment component is enabled. @@ -280,7 +280,7 @@ The plugin supports the WooCommerce checkout and is compatible with most premium ### WooCommerce Checkout Blocks You can use the Checkout Blocks for WooCommerce to customize your checkout. -Note: Only redirect payment methods are supported with this checkout at the moment. +**⚠️ Note:** Only redirect payment methods are supported with this checkout at the moment. ## Surcharges @@ -327,7 +327,7 @@ You can update the plugin in your backend and the CMS marketplace, or via SFTP. How to update in your backend
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/integrations/zen-cart.md b/content/integrations/zen-cart.md index 301929c5a..98ffcba67 100755 --- a/content/integrations/zen-cart.md +++ b/content/integrations/zen-cart.md @@ -27,7 +27,7 @@ slug: 'zen-cart' # Installation and configuration -✅   **Tip!** We recommend first installing the plugin in a test environment, following the Zen Cart installation procedure. Always make a backup. +  **💡 Tip!** We recommend first installing the plugin in a test environment, following the Zen Cart installation procedure. Always make a backup. 1. In the root of your webshop, unpack the content of the .ZIP file. 2. Sign in to your Zen Cart <>. @@ -87,7 +87,7 @@ You can update the plugin in your backend and the CMS marketplace, or via SFTP. How to update via SFTP
-✅   **Tip!** Make sure you have a backup of your production environment, and that you test the plugin in a staging environment. +  **💡 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 2. diff --git a/content/payment-management/chargebacks.md b/content/payment-management/chargebacks.md index c962adf9b..eb37d220e 100644 --- a/content/payment-management/chargebacks.md +++ b/content/payment-management/chargebacks.md @@ -57,7 +57,7 @@ You need to upload relevant documentary evidence: 1. Sign in to your MultiSafepay dashboard . 2. Go to **Settings** > **Files**. -3. Under **Upload a new file**, click **Choose file**.
**Note:** You must upload files in PDF format. +3. Under **Upload a new file**, click **Choose file**.
**⚠️ Note:** You must upload files in PDF format. 4. Select the relevant file(s), and then click **Open**. 5. Under **Upload queue**, to upload: - A specific file, click **Upload**. diff --git a/content/payment-management/recurring-payments.md b/content/payment-management/recurring-payments.md index 55ddd0a9b..b9c30d0e7 100755 --- a/content/payment-management/recurring-payments.md +++ b/content/payment-management/recurring-payments.md @@ -31,9 +31,9 @@ For initial payments then subsequent payments via direct debit: - Bancontact - [Bancontact WIP](/docs/bancontact#bancontact-wip-service) - 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. + **💡 Tip!** Test every payment method flow you intend to use. ## Initial payment @@ -142,7 +142,7 @@ We support recurring payments in our plugins for: See API reference – [Create order](/reference/createorder/) > `customer.reference`. -📘 **Note:** Tokens for direct debits are originally received as iDEAL or Sofort transactions. +**⚠️ Note:** Tokens for direct debits are originally received as iDEAL or Sofort transactions.
Additional parameters diff --git a/content/payment-management/second-chance.md b/content/payment-management/second-chance.md index e1dbeb40d..88a118753 100755 --- a/content/payment-management/second-chance.md +++ b/content/payment-management/second-chance.md @@ -64,7 +64,7 @@ To integrate, see Recipes – Locale codes per language and country @@ -137,7 +137,7 @@ Payment links in Second Chance emails have the same lifetime as the original pay To set or adjust the lifetime of a payment link, see API reference – [Create order](/reference/createorder/): `days_active` parameter. -📘 **Note:** This is different to [transaction expiration times per payment method](/reference/transaction-expiration/). +**⚠️ Note:** This is different to [transaction expiration times per payment method](/reference/transaction-expiration/). This only applies to certain payment methods: diff --git a/content/payment-management/success-pages.md b/content/payment-management/success-pages.md index 77c636343..450486340 100644 --- a/content/payment-management/success-pages.md +++ b/content/payment-management/success-pages.md @@ -13,7 +13,7 @@ If `payment_options.redirect_url` in your [create order](/reference/createorder) - 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. +**⚠️ 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 diff --git a/content/payment-management/webhook.md b/content/payment-management/webhook.md index 64a60e6bd..723e49fc5 100644 --- a/content/payment-management/webhook.md +++ b/content/payment-management/webhook.md @@ -30,7 +30,7 @@ Our webhook uses the `POST` method to inform your web server when there is an up max-width: 750px; width: 100%;"> -📘 **Note:** International bank account numbers (IBANs) are sensitive data. For security reasons, we mask them by default in POST webhook notifications so that only the last 4 digits are visible, e.g. *** 1234. +**⚠️ Note:** International bank account numbers (IBANs) are sensitive data. For security reasons, we mask them by default in POST webhook notifications so that only the last 4 digits are visible, e.g. *** 1234. To unmask them, see [IBANs](/docs/ibans/). # Prerequisites @@ -55,7 +55,7 @@ You can configure the webhook endpoint at: 2. Go to **Sites**, and then click the relevant site. 3. On the **Site profile** page, under **Functionality**, in the **Webhook URL** field, set your webhook endpoint. -📘 **Note:** These instructions apply to your `notification_url` for order updates. For [FastCheckout shipping options updates](/docs/fastcheckout-shipping-options), see Order level below. +**⚠️ Note:*** These instructions apply to your `notification_url` for order updates. For [FastCheckout shipping options updates](/docs/fastcheckout-shipping-options), see Order level below.
@@ -75,7 +75,7 @@ You can configure the webhook endpoint at: -📘 **Note:** If you configure your webhook endpoint at site **and** order level, the order level endpoint is used by default. +**⚠️ Note:** If you configure your webhook endpoint at site **and** order level, the order level endpoint is used by default. ### Example request @@ -193,7 +193,7 @@ The updated order details make up the payload of the request. Check the <> in the `status` field. If necessary, update your <>. -📘 **Note:** You can ignore notifications that: +**⚠️ Note:** You can ignore notifications that: - Don't have the `timestamp` parameter in the URL - Have the same <> diff --git a/content/payment-methods/3ds2.md b/content/payment-methods/3ds2.md index 0783d6e6c..523a239a7 100644 --- a/content/payment-methods/3ds2.md +++ b/content/payment-methods/3ds2.md @@ -39,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 example, transactions created with payment method VISA must include the `email` 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 diff --git a/content/payment-methods/amazon-pay-integration.md b/content/payment-methods/amazon-pay-integration.md index 4cd9fb79b..89e5d43db 100644 --- a/content/payment-methods/amazon-pay-integration.md +++ b/content/payment-methods/amazon-pay-integration.md @@ -42,7 +42,7 @@ Create an element in the `` of your checkout page where you want to displa
``` -📘 **Note:** This element is populated in a later step. For more information, see [Display the Amazon Pay button](#3-display-the-amazon-pay-button) below. +**⚠️ Note:** This element is populated in a later step. For more information, see [Display the Amazon Pay button](#3-display-the-amazon-pay-button) below. # 2. Create an order diff --git a/content/payment-methods/apple-pay-direct.md b/content/payment-methods/apple-pay-direct.md index 111cd4baf..f89b0ef0d 100644 --- a/content/payment-methods/apple-pay-direct.md +++ b/content/payment-methods/apple-pay-direct.md @@ -43,7 +43,7 @@ To see which Apple products are compatible with Apple Pay, see Apple Developer https://{your-domain}/.well-known/apple-developer-merchantid-domain-association ``` -📘 **Note:** For testing, download the domain validation in the **test** folder. +**⚠️ Note:** For testing, download the domain validation in the **test** folder. ## 2. Request to register @@ -103,13 +103,13 @@ When the customer clicks or taps the ** Pay** button: You can use `requiredBillingContactFields` to collect the customer's billing and/or shipping details from Apple Pay. If the customer hasn't previously provided their billing address to Apple Pay, they are prompted to do so. - 📘 **Note:** The billing and shipping details are not required to create Apple Pay direct orders with MultiSafepay. However, since the collected details are available to you in unencrypted form, you can use them to reduce checkout friction and manage orders. + **⚠️ Note:** The billing and shipping details are not required to create Apple Pay direct orders with MultiSafepay. However, since the collected details are available to you in unencrypted form, you can use them to reduce checkout friction and manage orders. --- - 📘 **Note:** The `total.amount` is in euros, whereas the `amount` in MultiSafepay order requests is in eurocents. + **⚠️ Note:** The `total.amount` is in euros, whereas the `amount` in MultiSafepay order requests is in eurocents. For more information about the `ApplePayRequest` object, see Apple Developer –
ApplePayRequest . @@ -124,7 +124,7 @@ When the customer clicks or taps the ** Pay** button: For more information about Apple Pay versions, see Apple Developer – Apple Pay on the web version history . - 📘 **Note:** You can only create a session within a user gesture handler. For example, you can create the session when the user taps the ** Pay** button. + **⚠️ Note:** You can only create a session within a user gesture handler. For example, you can create the session when the user taps the ** Pay** button. For more information, see Apple Developer – Creating an Apple Pay session . @@ -165,7 +165,7 @@ When the customer clicks or taps the ** Pay** button: }' ``` - 📘 **Note:** The actual code depends on your server-side framework. + **⚠️ Note:** The actual code depends on your server-side framework. A successful response contains an Apple Pay merchant `session`, which expires after five minutes. @@ -207,13 +207,13 @@ For more information about the `payment` object, see Apple Developer: 1. From your server, [create an order](/reference/createorder/) > Wallet order.
See also Examples > Apple pay direct, using the `payment.token` property.
To use the `payment.token` property in the order request, convert it to an escaped JSON string. -📘 **Note:** The billing and shipping details are **not** required for Apple Pay direct orders. +**⚠️ Note:** The billing and shipping details are **not** required for Apple Pay direct orders. 2. To access the shipping and/or billing details from the `payment` object, use the `payment.billingContact` and `payment.shippingContact` properties. 3. To add the details to the order request, format them in accordance with [create order](/reference/createorder/) requests. -📘 **Note:** Billing and shipping data are **not** encrypted. +**⚠️ Note:** Billing and shipping data are **not** encrypted. For more information about the `payment` object and its properties, see Apple Developer – ApplePayPayment . diff --git a/content/payment-methods/bank-transfer.md b/content/payment-methods/bank-transfer.md index 9235b3bd5..34af7ffbe 100755 --- a/content/payment-methods/bank-transfer.md +++ b/content/payment-methods/bank-transfer.md @@ -119,7 +119,7 @@ MultiSafepay emails the customer the following payment details to include when t
-📘 **Note:** Bank accounts are always displayed in IBAN format. See also [Unmasking IBANs](/docs/ibans/). +**⚠️ Note:** Bank accounts are always displayed in IBAN format. See also [Unmasking IBANs](/docs/ibans/).
How to email payment instructions yourself @@ -216,7 +216,7 @@ To resolve unmatched payments, check if a [transaction](/docs/payment-links#inte 4. Add the customer's bank account number (if known) to help us match the payment. 5. Click **Confirm** to create the transaction in our system. -✅   **Tip!** The order ID must be unique for each payment link. +  **💡 Tip!** The order ID must be unique for each payment link. --- diff --git a/content/payment-methods/belfius.md b/content/payment-methods/belfius.md index 06d1e82bc..342562e15 100755 --- a/content/payment-methods/belfius.md +++ b/content/payment-methods/belfius.md @@ -30,7 +30,7 @@ This diagram shows the flow for a successful transaction. Click to magnify. margin-right: auto; max-width: 750px;width: 100%;"> -📘 **Note:** MultiSafepay doesn’t automatically receive the customer's IBAN when a transaction is completed, but we import our bank statements daily. All incoming payments are then completed. +**⚠️ Note:** MultiSafepay doesn’t automatically receive the customer's IBAN when a transaction is completed, but we import our bank statements daily. All incoming payments are then completed. # Payment statuses @@ -45,7 +45,7 @@ The table below sets out the <> and <> remains **Initialized**. We import our bank statements daily and finalize all incoming payments. +**⚠️ Note:** If the customer doesn’t click the **Return to website** button, MultiSafepay doesn’t receive an update and the <> remains **Initialized**. We import our bank statements daily and finalize all incoming payments. # Activation diff --git a/content/payment-methods/betaalpermaand.md b/content/payment-methods/betaalpermaand.md index b6f6e15a6..5d816664b 100755 --- a/content/payment-methods/betaalpermaand.md +++ b/content/payment-methods/betaalpermaand.md @@ -46,7 +46,7 @@ The table below sets out the <> and < You can no longer cancel. You can only refund. | Completed | Uncleared | -| ❗️ **Note:** To capture the funds, when you ship the <> you must manually [change the order status to Shipped](#shipment) and send us the [track-and-trace code](#track-and-trace-codes). | Shipped | Uncleared | +| **⚠️ Note:** To capture the funds, when you ship the <> you must manually [change the order status to Shipped](#shipment) and send us the [track-and-trace code](#track-and-trace-codes). | Shipped | Uncleared | | MultiSafepay has collected payment. | Shipped | Completed | | Santander declined the transaction.
Only the customer can contact them to find out why (for privacy and compliance reasons). | Declined | Declined | | You cancelled the transaction before capture. | Void | Void | @@ -117,7 +117,7 @@ To cancel an order, email with the following details: - Order ID - Transaction ID (MultiSafepay's transaction reference number) -❗️ **Note:** You cannot cancel a Betaal per Maand order via your MultiSafepay dashboard . +**⚠️ Note:** You cannot cancel a Betaal per Maand order via your MultiSafepay dashboard . ## Collection period @@ -188,7 +188,7 @@ If you change the order status in your <>, the following [read For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:**Some third-party plugins may not support updating the status via our API.
diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md index 9754509f9..f18faff1f 100644 --- a/content/payment-methods/card-payments.md +++ b/content/payment-methods/card-payments.md @@ -31,7 +31,7 @@ MultiSafepay supports the following credit and debit cards: - Postepay - Visa and co-branded cards Cartes Bancaires , Dankort , V Pay (debit card) -📘 **Note:** [Co-branded cards](/docs/card-payments#co-branded-cards) are processed through the VISA <>. +**⚠️ Note:** [Co-branded cards](/docs/card-payments#co-branded-cards) are processed through the VISA <>. | Supports | Details | |---|---| @@ -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 correct details in the `email` or `phone` 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 038c1f90b..8fe53fff8 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 correct information in the `email` or `phone` 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 . diff --git a/content/payment-methods/cbc-kbc.md b/content/payment-methods/cbc-kbc.md index d61df7f57..24f158a18 100644 --- a/content/payment-methods/cbc-kbc.md +++ b/content/payment-methods/cbc-kbc.md @@ -33,7 +33,7 @@ This diagram shows the flow for a successful transaction. Click to magnify. max-width: 750px; width: 100%;"> -📘 **Note:** MultiSafepay doesn’t automatically receive the customer's IBAN when a transaction is completed, but we import our bank statements daily. All incoming payments are then completed. +**⚠️ Note:** MultiSafepay doesn’t automatically receive the customer's IBAN when a transaction is completed, but we import our bank statements daily. All incoming payments are then completed. # Payment statuses @@ -49,7 +49,7 @@ The table below sets out the <> and < -📘 **Note:** If the customer doesn’t click the **Return to website** button, MultiSafepay doesn’t receive an update and the transaction status remains **Initialized**. We import our bank statements daily and match all incoming payments. +**⚠️ Note:** If the customer doesn’t click the **Return to website** button, MultiSafepay doesn’t receive an update and the transaction status remains **Initialized**. We import our bank statements daily and match all incoming payments. # Activation diff --git a/content/payment-methods/direct-debit.md b/content/payment-methods/direct-debit.md index 0958bd923..e365e2614 100644 --- a/content/payment-methods/direct-debit.md +++ b/content/payment-methods/direct-debit.md @@ -15,7 +15,7 @@ Read how direct debits can benefit your business on SEPA region
**Note:** To avoid declined transactions, non-EEA countries must include name and address in the `customer_object`. | +| [Countries](/docs/payment-methods#payment-methods-by-country) | SEPA region
**⚠️ Note:** To avoid declined transactions, non-EEA countries must include name and address in the `customer_object`. | | [Currencies](/docs/currencies/) | EUR | | [Chargebacks](/docs/chargebacks/) | Yes (see below) | | [Payment components](/docs/payment-components/) | Yes | @@ -139,7 +139,7 @@ If the IBAN or BIC is incorrect, our bank informs us the next business day. |MS03|Unspecified reason generated by agent| Contact the debtor. | |RC01|Incorrect bank identifier | Contact the debtor for the correct BIC for a non-EEA collection. Ask your bank to allocate the debtor's bank's correct BIC in the interbank message. | |RR01|Missing debtor account or identification| Repair the collection to complete the debtor's account information. Contact your bank. | -|RR02|Missing debtor name or address| Repair the collection to complete the debtor's name and/or address. Contact your bank.
**Note:** To avoid declined transactions, non-EEA countries must include name and address in the `customer_object`. | +|RR02|Missing debtor name or address| Repair the collection to complete the debtor's name and/or address. Contact your bank.
**⚠️ Note:** To avoid declined transactions, non-EEA countries must include name and address in the `customer_object`. | |RR03|Missing creditor name or address| Repair the collection to complete your name. Contact your bank. | |RR04|Regulatory reason| Contact your bank. | |SL01|Specific service offered by debtor agent| Contact the debtor. | diff --git a/content/payment-methods/e-invoicing.md b/content/payment-methods/e-invoicing.md index 4e822b645..95cd952ed 100755 --- a/content/payment-methods/e-invoicing.md +++ b/content/payment-methods/e-invoicing.md @@ -41,7 +41,7 @@ The table below sets out the <> and < You can no longer cancel. You can only refund. | Completed | Initialized | -| ❗️ **Note:** [Manually change the order status to Shipped](#shipment).
You must ship to receive payment. | Shipped | Initialized | +| **⚠️ Note:** [Manually change the order status to Shipped](#shipment).
You must ship to receive payment. | Shipped | Initialized | | MultiSafepay has collected payment. | Completed | Completed | | MultiFactor declined the transaction. | Declined | Declined | | The transaction has been cancelled. | Void/Cancelled | Void/Cancelled | @@ -396,7 +396,7 @@ If you change the order status in your <>, the following [read For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. --- diff --git a/content/payment-methods/google-pay-direct.md b/content/payment-methods/google-pay-direct.md index 801fb210c..8d0dfdb04 100644 --- a/content/payment-methods/google-pay-direct.md +++ b/content/payment-methods/google-pay-direct.md @@ -52,7 +52,7 @@ Add the Google Pay JavaScript library to the bottom of the `` of your chec onload="onGooglePayLoaded()"> ``` -📘 **Note:** The `onload` event handler is used to display the **Google Pay** button. For more information, see [Display the Google Pay button](#3-display-the-google-pay-button). +**⚠️ Note:** The `onload` event handler is used to display the **Google Pay** button. For more information, see [Display the Google Pay button](#3-display-the-google-pay-button). ## Place the Google Pay button @@ -62,7 +62,7 @@ Create an element in the `` of your checkout page where you want to displa
``` -📘 **Note:** This element is populated in a later step. For more information, see [Display the Google Pay button](#display-the-google-pay-button). +**⚠️ Note:** This element is populated in a later step. For more information, see [Display the Google Pay button](#display-the-google-pay-button). ## Configure Google Pay @@ -79,7 +79,7 @@ Create an element in the `` of your checkout page where you want to displa 2. Configure the Google Pay payment token request. - 📘 **Note:** Google Pay uses payment tokens to encrypt the customer's payment details for secure processing. + **⚠️ Note:** Google Pay uses payment tokens to encrypt the customer's payment details for secure processing. Create a `tokenizationSpecification` object: diff --git a/content/payment-methods/in3.md b/content/payment-methods/in3.md index 72b9eeadd..1b4eebf0e 100644 --- a/content/payment-methods/in3.md +++ b/content/payment-methods/in3.md @@ -141,7 +141,7 @@ If you change the order status in your backend, the following [ready-made integr For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. --- diff --git a/content/payment-methods/klarna.md b/content/payment-methods/klarna.md index 50005df40..6461d00bd 100755 --- a/content/payment-methods/klarna.md +++ b/content/payment-methods/klarna.md @@ -40,7 +40,7 @@ The table below sets out the <> and < See [Expired orders](#expired-orders). | Expired | Expired | | Klarna authorized the transaction, but either you or the customer cancelled it before capture. | Void | Void | @@ -203,7 +203,7 @@ If your link has expired or you haven't received an email, email @@ -313,7 +313,7 @@ If you change the order status in your backend, the following [ready-made integr For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. diff --git a/content/payment-methods/mybank.md b/content/payment-methods/mybank.md index b4b71ad2b..7271c7396 100644 --- a/content/payment-methods/mybank.md +++ b/content/payment-methods/mybank.md @@ -26,7 +26,7 @@ Customers pay in their own online banking environment. <> i The customer's bank may apply their own fee to MyBank transactions (not influenced by MultiSafepay or MyBank). This can have a significant impact on transactions for small amounts, e.g. 1 EUR transaction, but a 1,50 EUR issuer fee. -✅   **Tip!** Consider setting a minimum amount limit for MyBank transactions in your integration. +  **💡 Tip!** Consider setting a minimum amount limit for MyBank transactions in your integration. # Payment flow This diagram shows the flow for a successful transaction. Click to magnify. diff --git a/content/payment-methods/pay-after-delivery-installments.md b/content/payment-methods/pay-after-delivery-installments.md index 504813e68..a77262d34 100755 --- a/content/payment-methods/pay-after-delivery-installments.md +++ b/content/payment-methods/pay-after-delivery-installments.md @@ -296,7 +296,7 @@ You must must refund partial shipments separately, using the specific **shipment See API reference – [Refund order](/reference/refundorder). -❗️ **Note:** To partially ship an order, email a request to +**⚠️ Note:** To partially ship an order, email a request to --- @@ -328,7 +328,7 @@ If you change the order status in your <>, the following [read For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. --- diff --git a/content/payment-methods/pay-after-delivery.md b/content/payment-methods/pay-after-delivery.md index 3c3a83f3c..e81a2dc6f 100755 --- a/content/payment-methods/pay-after-delivery.md +++ b/content/payment-methods/pay-after-delivery.md @@ -71,7 +71,7 @@ The table below sets out the <> and < +**⚠️ Note:** To partially ship an order, email a request to --- @@ -353,7 +353,7 @@ If you change the order status in your <>, the following [read For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. --- diff --git a/content/payment-methods/paypal-direct.md b/content/payment-methods/paypal-direct.md index 6389eec9d..848566d23 100644 --- a/content/payment-methods/paypal-direct.md +++ b/content/payment-methods/paypal-direct.md @@ -131,4 +131,4 @@ PayPal must be [onboarded in your MultiSafepay account](/docs/paypal#activation)
A popup appears containing the PayPal test store. 3. Select **Pay now**, and then click **Save**.
The order is successfully completed. -**Note:** If you select the card payment option from test scenario list, you will receive an `INSTRUMENT_DECLINED` error. +**⚠️ Note:** If you select the card payment option from test scenario list, you will receive an `INSTRUMENT_DECLINED` error. diff --git a/content/payment-methods/paypal.md b/content/payment-methods/paypal.md index 94ebc1f11..b35f7abc8 100755 --- a/content/payment-methods/paypal.md +++ b/content/payment-methods/paypal.md @@ -148,7 +148,7 @@ To be eligible, for specific countries, transaction requests must contain the co - For a list of the countries, see PayPal API – State codes . - For more information, see PayPal – What is Seller Pretection . -**Note**: For disputes and disbursement information, further details appear in a transaction note in your dashboard under **Transaction overview** > **Transaction summary**. +**⚠️ Note:** For disputes and disbursement information, further details appear in a transaction note in your dashboard under **Transaction overview** > **Transaction summary**. ## Refunds diff --git a/content/payment-methods/riverty.md b/content/payment-methods/riverty.md index 2140dc9fc..45207e392 100755 --- a/content/payment-methods/riverty.md +++ b/content/payment-methods/riverty.md @@ -38,7 +38,7 @@ The table below sets out the <> and < ❗️ **Note:** To capture the funds, when you ship the order you must manually [change the order status to Shipped](#shipment). | Completed | Uncleared | +| Riverty has authorized the transaction and the funds are awaiting capture. You can still cancel.
**⚠️ Note:** To capture the funds, when you ship the order you must manually [change the order status to Shipped](#shipment). | Completed | Uncleared | | The funds are captured.
You can no longer cancel. You can only refund. | Shipped | Uncleared | | MultiSafepay has collected payment. | Shipped | Completed | | Riverty has declined the transaction.
Only the customer can contact Riverty to find out why (for privacy and compliance reasons). | Declined | Declined | @@ -154,7 +154,7 @@ If you change the order status in your <>, the following [read For other ready-made integrations, make an [update order](/reference/updateorder/) API request. -❗️ **Note:** Some third-party plugins may not support updating the status via our API. +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. diff --git a/content/payment-methods/testing.md b/content/payment-methods/testing.md index 87aad37b1..340a336e7 100644 --- a/content/payment-methods/testing.md +++ b/content/payment-methods/testing.md @@ -130,7 +130,7 @@ You can see the reason the transaction was declined in your MultiSafepay test ac | Any other IBAN | **Expired** | The transaction is initiated.
After 5 days, this changes to **Expired**. |
-❗️ **Note:** You cannot test making <> API requests with an IBAN to test different <>. +**⚠️ Note:** You cannot test making <> API requests with an IBAN to test different <>. @@ -282,7 +282,7 @@ You can also test the following scenarios: | Visa/co-branded:
4012001038488884 | **Declined** | The transaction was declined (3D authentication was successful, but insufficient funds). |
-✅   **Tip!** You can see the reason a transaction was declined in your MultiSafepay test account under **Notes**. +  **💡 Tip!** You can see the reason a transaction was declined in your MultiSafepay test account under **Notes**. @@ -425,7 +425,7 @@ To refund an order: You can only test invoicing in your MultiSafepay live account. To do this, change the order status to **Shipped**. -**Note** You can't test: +**⚠️ Note:** You can't test: - Receiving successful payment notifications from Klarna - Changing the <> from **Uncleared** to **Completed**, except for refunds @@ -473,7 +473,7 @@ To change the order status, either: - Make an [update order](/reference/updateorder/) request, or - In your MultiSafepay test dashboard, go to **Order summary**, and then click **Order status**. -❗️ **Note:** You can't test: +**⚠️ Note:** You can't test: - Receiving successful payment notifications from Riverty - Changing the <> from **Uncleared** to **Completed** - Processing refunds @@ -599,7 +599,7 @@ Any other card number receives an "Invalid card number" error. 3. Click **Test**. The payment is processed in your MultiSafepay test account as **Successful**, with <> **Completed**, and transaction status **Initialized**. -❗️ **Note:** You can't test Alipay declining transactions. +**⚠️ Note:** You can't test Alipay declining transactions. @@ -694,7 +694,7 @@ To test, follow these steps: 3. Click **Test**. The payment is processed in your MultiSafepay test account as **Successful**, with <> **Completed**, and <> **Initialized**. -📘 **Note:** Since MultiSafepay does not collect payments on behalf of PayPal, the <> remains **Initialized** and can't be changed to **Completed**. +**⚠️ Note:** Since MultiSafepay does not collect payments on behalf of PayPal, the <> remains **Initialized** and can't be changed to **Completed**. **Change the order status** diff --git a/content/payment-methods/uncleared.md b/content/payment-methods/uncleared.md index 87d2fb5cb..03504b2ec 100644 --- a/content/payment-methods/uncleared.md +++ b/content/payment-methods/uncleared.md @@ -22,7 +22,7 @@ For higher-risk transactions, the payment is placed on hold and the [transaction | 6–8 Medium risk | Yes | Review in your dashboard and capture or decline. | | 8–10 High risk | Yes | MultiSafepay reviews and captures or declines. | -📘 **Note:** High-scoring transactions aren't always fraudulent, and low-scoring ones may still carry risk. +**⚠️ Note:** High-scoring transactions aren't always fraudulent, and low-scoring ones may still carry risk. # Reviewing uncleared payments diff --git a/content/payment-methods/zinia.md b/content/payment-methods/zinia.md index bbffb1e67..01579a5e2 100755 --- a/content/payment-methods/zinia.md +++ b/content/payment-methods/zinia.md @@ -317,7 +317,7 @@ You must must refund partial shipments separately, using the specific **shipment See API reference – [Refund order](/reference/refundorder). -❗️**Note:** To partially ship an order, email a request to [sales@multisafepay.com](mailto:sales@multisafepay.com)) +**⚠️ Note:** To partially ship an order, email a request to [sales@multisafepay.com](mailto:sales@multisafepay.com)) *** diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index e23364a9f..39421f7f8 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -34,7 +34,7 @@ In other scenarios, you can make use of our Cloud POS payment . 2. In response to the API request you made, you receive the `events_token`. -📘 **Note:** You cannot initiate another payment until the current payment is **Cancelled** or **Completed**. +**⚠️ Note:** You cannot initiate another payment until the current payment is **Cancelled** or **Completed**. # 2. Subscribe to the event notifications diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index e5ca24420..0eed7d510 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -94,7 +94,7 @@ Via the Sunmi portal, 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. +**💡 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. diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index a09e9c586..0fe5614d5 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -173,7 +173,7 @@ If your device has been blocked due to the error on screen "Attacked! Please con 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. +**💡 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. diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index c048bac1b..5612049d2 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -103,7 +103,7 @@ To exit the cloud mode payment screen: 1. Tap and hold the **MultiSafepay** logo for few seconds. 2. Enter the default **PIN code**.
The default PIN code is `1324`. -**Note:** For your security, we recommend you change the default PIN code as soon as possible. +**⚠️ Note:** For your security, we recommend you change the default PIN code as soon as possible. *** @@ -118,7 +118,7 @@ You can customize this flow: 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. +**⚠️ Note:** This applies to both cloud mode and native application setups. ## How to change the PIN code @@ -152,7 +152,7 @@ Via Settings > **Closing balance**, can set the following parameters: -**Tip**: You can print your closing balance report using either the device printer, or the [external printer](docs/test-page#external-printer). +**💡 Tip!** You can print your closing balance report using either the device printer, or the [external printer](docs/test-page#external-printer). *** @@ -231,7 +231,7 @@ The QR reader is able to detect the following parameters: 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. ## How to use an external printer diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 36ba485cd..b402daf85 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -53,7 +53,7 @@ Install the MultiSafepay payment app on your terminal to scan the QR code. ✅ Success! You have successfully activated your terminal. You can now start accepting payments. -**Note:** You can edit and link various terminals if you have already created a group. +**⚠️ Note:** You can edit and link various terminals if you have already created a group. ## How to edit a group @@ -66,7 +66,7 @@ Install the MultiSafepay payment app on your terminal to scan the QR 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. +**💡 Tip!** You can view your API key via *Manage groups* > API key. --- diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md index 8f743f2cc..11d462466 100644 --- a/content/point-of-sale/smartpos-solutions.md +++ b/content/point-of-sale/smartpos-solutions.md @@ -44,7 +44,7 @@ This diagram shows a successful cloud-based POS payment flow. Click to magnify. margin-right: auto; max-width: 750px;width: 100%;"/> - 📘 **Note:** Before you start initiating payments, you must ensure **cloud mode** is enabled - see [SmartPOS features](/docs/smartpos-features). + **⚠️ Note:** Before you start initiating payments, you must ensure **cloud mode** is enabled - see [SmartPOS features](/docs/smartpos-features). Create an order. See Recipe - Cloud POS payment . diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md index 9e940d2eb..d6ebf2684 100644 --- a/content/point-of-sale/traditional-ctap.md +++ b/content/point-of-sale/traditional-ctap.md @@ -38,9 +38,9 @@ Traditional (CTAP) is a terminal that has passed MultiSafepay dashboard . diff --git a/docs/archive/google-analytics.md b/docs/archive/google-analytics.md index dff244cf3..88a74ed2a 100644 --- a/docs/archive/google-analytics.md +++ b/docs/archive/google-analytics.md @@ -24,7 +24,7 @@ If you use `analytics.js`, Google gives you a **tracking ID** that you need to a If you use `gtag.js`, then you use **tags** instead of tracking IDs. The `gtag.js` library adds a single tag to your site to connect with multiple Google products and services, including Google Analytics. -📘 **Note:** All Google Analytics accounts since 2017 use `gtag.js`. Prior to 2017, `analytics.js` was the default method for tagging. +**⚠️ Note:** All Google Analytics accounts since 2017 use `gtag.js`. Prior to 2017, `analytics.js` was the default method for tagging. ## API integrations @@ -48,7 +48,7 @@ This can impact the reliability of Google Analytics reports, and they won't accu To prevent third-party shopping carts initiating new sessions, you can exclude referral domains. This prevents the customer being counted as a referral when they return to your success page. -📘 **Note:** This feature is only available for sites using `gtag.js` or `analytics.js`. +**⚠️ Note:** This feature is only available for sites using `gtag.js` or `analytics.js`. For instructions, see Google Analytics – Referral exclusions . @@ -113,13 +113,13 @@ In your PHP code, the parameter should look like this: `$this→_redirect('check Make sure you do this for **all** links from the payment gateway to your site. -✅   **Tip!** Our ready-made integrations for Magento 1 and 2 do this automatically. +  **💡 Tip!** Our ready-made integrations for Magento 1 and 2 do this automatically. ## Server-side solutions These solutions need a server environment and may require significant development effort. -📘 **Note:** +**⚠️ Note:** - Server-side solutions are still in their infancy and could require regular adjustment and maintenance. - It is not possible to use client-side and server-side solutions at the same time. From 3ac01bff4f50a6edb79c7781579b7f2fcdb9873f Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 25 Sep 2024 14:39:08 +0200 Subject: [PATCH 185/319] DOCS-4371A: icon addition, change (#3099) --- content/integrations/webshop-access.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index d0d379105..135c8227d 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -27,7 +27,7 @@ Check the **changelog** for your plugin to read about any recently added feature ## Third party solutions -**⚠️ Note:**: We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. +**⚠️ Note:** We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. @@ -40,7 +40,7 @@ If you encounter issues that affect payments, valuable first checks are: - 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. + **💡 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. @@ -89,8 +89,7 @@ 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. + **💡 Tip!** you can do this best via a staging environment. - Contact us for support. Alternative solutions in the meantime: From d5e46d7c735093095dec7aa01b076bc7bbfc953c Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 26 Sep 2024 13:04:54 +0200 Subject: [PATCH 186/319] DOCS-4324: Small adjustments to the integration troubleshooting guide (#3100) * DOCS-4324: Small adjustments to the integration troubleshooting guide * DOCS-4324: Small adjustments to the integration troubleshooting guide --- content/integrations/webshop-access.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content/integrations/webshop-access.md b/content/integrations/webshop-access.md index 135c8227d..4abbc1019 100644 --- a/content/integrations/webshop-access.md +++ b/content/integrations/webshop-access.md @@ -27,7 +27,7 @@ Check the **changelog** for your plugin to read about any recently added feature ## Third party solutions -**⚠️ Note:** We cannot guarantee correct behaviour with any third party solutions which are not explicitly mentioned as compatible in our documentation. +**⚠️ Note:** We cannot guarantee correct behavior with any third party solutions which are not explicitly mentioned as compatible in our documentation. If you encounter an issue with payments while using one of our plugin integrations, always try to reproduce the issue with any third party solutions deactivated. This gives valuable insights for further investigation. @@ -53,7 +53,7 @@ With the results of these checks, reach out to us via [info@multisafepay.com](ma Further checks for plugin integrations: -- Set your backoffice to debug mode. +- Set your Back Office to debug mode. - Send us the system report / error logs. Further checks for custom integrations: @@ -94,7 +94,8 @@ As a temporary fix, while we investigate the issue, you can use our payments via - 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. +- Disable the shopping cart via your settings for the payment page in your Merchant Dashboard. + ⚠️ **Note:** This will disable BNPL methods. # Webhook issues @@ -116,17 +117,17 @@ If you notice any troubles during the integration of direct buttons for Apple Pa ## Apple Pay direct integration - Ensure that card payments, as well as Apple Pay are enabled for your website / account. -- Ensure you follow our step by step guide. +- Ensure you follow our [step by step guide](/docs/apple-pay-direct/). - When validating your domain, double check to have associated the **correct URL**. - 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 you whitelisted Apple Pay's domain & IP addresses +- Check if you whitelisted 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). ## Google Pay direct integration -- Ensure you follow our step by step guide. +- Ensure you follow our [step by step guide](/docs/google-pay-direct/). - 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). From 2b8c6dc0a04034b16ae7e6e93f62d4673739a856 Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:47:55 +0200 Subject: [PATCH 187/319] DOCS-4370: IPEK (#3102) --- content/point-of-sale/pos-troubleshooting.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index 0fe5614d5..747a0b172 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -98,9 +98,12 @@ If you have used an incorrect API key for cloud payments, check for the correct Before you begin activation, ensure that the Initial PIN Encrypted Key(IPEK) is registered on your terminal. -To check if IPEK is registered, turn on your terminal and click **Configured**. +To check if IPEK is correctly registered, turn on your terminal and view the **Configured** field. -If your IPEK is not configured, email +If your IPEK is **not** configured, you can + +- attempt manual configuration via **Settings** > Advanced > Security Center > Key Injection > RKI > Key Inject +- contact us via *** ## Logs From eeecdfad50cdba95c5584bc854acf31cff03f309 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 26 Sep 2024 13:50:17 +0200 Subject: [PATCH 188/319] DOCS-4285: Add response code 3100 to card payment errors (#3101) * DOCS-4285: Add response code 3100 to card payment errors * DOCS-4285: Add response code 3100 to card payment errors --- content/payment-methods/card-payment-errors.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md index b95a7dbc4..aff30be13 100644 --- a/content/payment-methods/card-payment-errors.md +++ b/content/payment-methods/card-payment-errors.md @@ -31,6 +31,7 @@ In these cases, neither MultiSafepay nor the merchant can take specific actions | **3010** | 3DS Authentication Failed / Stolen card. | | **3011** | 3DS Authentication Failed / Suspected fraud. | | **3012** | 3DS Authentication Failed / Transaction not permitted to the cardholder. | +| **3100** | 3DS Authentication Failed / Initiation Failed. | ## Authorization errors From 24cc1e16143044c2768da1d0777ebe1a6844556d Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 26 Sep 2024 14:15:57 +0200 Subject: [PATCH 189/319] DOCS-4283: Remove komma in text-line validation_irl: calidationUrl, (#3103) --- content/payment-methods/apple-pay-direct.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/apple-pay-direct.md b/content/payment-methods/apple-pay-direct.md index f89b0ef0d..5b5cde2f3 100644 --- a/content/payment-methods/apple-pay-direct.md +++ b/content/payment-methods/apple-pay-direct.md @@ -161,7 +161,7 @@ When the customer clicks or taps the ** Pay** button: -H "Authorization: Bearer " \ -d '{ "origin_domain": "originDomain", - "validation_url": "validationUrl", + "validation_url": "validationUrl" }' ``` From 4146a74506343a0c0d06fed28ceee53327ac80d6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 27 Sep 2024 10:57:25 +0200 Subject: [PATCH 190/319] DOCS-4258A: remove response code 3100 to card payment errors (#3104) --- content/payment-methods/card-payment-errors.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/payment-methods/card-payment-errors.md b/content/payment-methods/card-payment-errors.md index aff30be13..b95a7dbc4 100644 --- a/content/payment-methods/card-payment-errors.md +++ b/content/payment-methods/card-payment-errors.md @@ -31,7 +31,6 @@ In these cases, neither MultiSafepay nor the merchant can take specific actions | **3010** | 3DS Authentication Failed / Stolen card. | | **3011** | 3DS Authentication Failed / Suspected fraud. | | **3012** | 3DS Authentication Failed / Transaction not permitted to the cardholder. | -| **3100** | 3DS Authentication Failed / Initiation Failed. | ## Authorization errors From 7eca882d9a89ee1d60074c5389826cdf5b4f7481 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 30 Sep 2024 15:47:13 +0200 Subject: [PATCH 191/319] DOCS-4377A: remove deprecated images POS features (#3106) --- content/point-of-sale/smartPOS-features.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index 5612049d2..a982ad8e2 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -37,10 +37,10 @@ To add payment flow features, follow these steps: 1. On the navigation menu, click the **Back** button. 2. Select **Settings**. -
+ ## How to enable display items @@ -49,11 +49,11 @@ To add payment flow features, follow these steps: Once you've initiated the payment, the items are displayed on the payment screen. -**Example:** + ## How to enable tipping @@ -62,9 +62,9 @@ Once you've initiated the payment, the items are displayed on the payment screen After the payment has been processed, the option to tip is displayed on the payment screen. -**Example:** + You can add an employee via **add employee** > Insert name and ID. @@ -76,13 +76,13 @@ You can add an employee via **add employee** > Insert name and ID. 1. In the **Global settings** list, click the **Print/Email** toggle. 2. To return to the main screen, click the **Back** button. - + ## How to enable manual input @@ -135,9 +135,9 @@ If you select *disabled*, there is no automatic timeout, and you will need to pr After you've enabled the **Cloud mode**, the **Navigation** list appears. This feature allows you to hide the cancel button and system navigation. -**Example:** + ## How to generate closing balance From 286b4110644c37cd47069bfec830feb49e998f06 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 30 Sep 2024 15:54:10 +0200 Subject: [PATCH 192/319] DOCS-4377B: remove deprecated images POS features (#3107) --- content/point-of-sale/smartPOS-features.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index a982ad8e2..099ad692c 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -76,8 +76,8 @@ You can add an employee via **add employee** > Insert name and ID. 1. In the **Global settings** list, click the **Print/Email** toggle. 2. To return to the main screen, click the **Back** button. - + +
+
+ Feature list +
+


From e16da5a0452d6894fdbdc1c65dd9d91425e7be8b Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Wed, 9 Oct 2024 16:48:47 +0200 Subject: [PATCH 215/319] DOCS-4390: add Ncodes (#3136) --- content/accounting/reports.md | 9 +++------ content/point-of-sale/smartPOS-features.md | 1 - 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/content/accounting/reports.md b/content/accounting/reports.md index 7afaa1e2b..7cd758311 100644 --- a/content/accounting/reports.md +++ b/content/accounting/reports.md @@ -411,9 +411,7 @@ To view the autogenerated reports in your -How to filter using N-Codes -
+ | N-Code | Transaction type | |---|---| @@ -451,10 +449,9 @@ To identify transactions in reports by payment method, use the following N-codes | N109 | [KBC](/docs/cbc-kbc/) | | N913 | FEE | - -
+
## Troubleshooting @@ -465,7 +462,7 @@ In some cases, the custom range selected for your report is not applied immediat ### Payout report not generated Note: The payout report is only available for automated withdrawals. ---- + [block:html] { diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index 37a66e86e..e739b6eb3 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -58,7 +58,6 @@ After activating your SmartPOS terminal, you can add features from your SmartPOS # Add features -
To add payment flow features, follow these steps: From 6a81d4f80d00bb62dc6811a203bc9af336dbc545 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 10 Oct 2024 09:25:29 +0200 Subject: [PATCH 216/319] DOCS-4392B: Remake POS overview. Changes (#3137) * DOCS-4392B: Remake POS overview. Changes * DOCS-4392B: Upload new POS images. Additional modifications. --- content/point-of-sale/smartPOS-features.md | 74 ++++++++++++---------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index e739b6eb3..d52727fa5 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -15,48 +15,56 @@ slug: 'smartpos-features' > - Netherlands > - Belgium > -> If you are interested in our Point of Sale solutions, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com)) +> If you are interested in our Point of Sale solutions, email [sales@multisafepay.com](mailto:sales@multisafepay.com). -## Features +# Features After activating your SmartPOS terminal, you can add features from your SmartPOS payment app. SmartPOS features contains: -**Global Settings** -- Display items after payment have been processed. -- Add a tip to your payment flow. -- Print a receipt. - -**Payment** Settings - -- Insert an order ID (or Scan QR) -- Allow refunds -- Allow card authorization -- Initiate payments manually or using cloud mode. -- Hide the navigation menu on the main screen. -- Define the closing order flow. - -**Navigation** Settings - -- Enable the Cancel function. - - -
-
- Feature list -
+
+
+ Global Settings +

    +
  • Display items after payment have been processed.
  • +
  • Add a tip to your payment flow.
  • +
  • Print a receipt.
  • +
+ Payment Settings +

    +
  • Insert an order ID (or Scan QR)
  • +
  • Allow refunds
  • +
  • Allow card authorization
  • +
  • Initiate payments manually or using cloud mode
  • +
  • Hide the navigation menu on the main screen
  • +
  • Define the closing order flow
  • +
+ Navigation Settings +

    +
  • Enable the Cancel function
  • +
-

- -# Add features +
+ Feature list +
+
+ + + +
From 1ab898cfccb9817c4dba84ab7250ef20013eea67 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:43:27 +0200 Subject: [PATCH 217/319] [CS-Cart] Release 1.7.0 (#3135) Co-authored-by: JesseSnnt --- content/integrations/cs-cart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/cs-cart.md b/content/integrations/cs-cart.md index a65e1fe37..64c881552 100755 --- a/content/integrations/cs-cart.md +++ b/content/integrations/cs-cart.md @@ -11,7 +11,7 @@ slug: 'cs-cart'
-Download +Download Source code From e7df647d84d94bb4db6fd7d6fd8d5ad07ef63b0f Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 10 Oct 2024 11:48:43 +0200 Subject: [PATCH 218/319] DOCS-4395: Add new SBGs for credit and debit cards main page. (#3138) --- static/svgs/credit_debit_page/3dsecure.svg | 14 ++++++++++++++ static/svgs/credit_debit_page/cardholderdata.svg | 8 ++++++++ static/svgs/credit_debit_page/cardpayments.svg | 5 +++++ static/svgs/credit_debit_page/chargebacks.svg | 9 +++++++++ static/svgs/credit_debit_page/errors.svg | 7 +++++++ static/svgs/credit_debit_page/manualcapture.svg | 14 ++++++++++++++ static/svgs/credit_debit_page/moto.svg | 4 ++++ static/svgs/credit_debit_page/princingmodels.svg | 4 ++++ static/svgs/credit_debit_page/refunds.svg | 5 +++++ .../svgs/credit_debit_page/unclearedpayments.svg | 7 +++++++ .../svgs/credit_debit_page/zeroauthorization.svg | 7 +++++++ 11 files changed, 84 insertions(+) create mode 100644 static/svgs/credit_debit_page/3dsecure.svg create mode 100644 static/svgs/credit_debit_page/cardholderdata.svg create mode 100644 static/svgs/credit_debit_page/cardpayments.svg create mode 100644 static/svgs/credit_debit_page/chargebacks.svg create mode 100644 static/svgs/credit_debit_page/errors.svg create mode 100644 static/svgs/credit_debit_page/manualcapture.svg create mode 100644 static/svgs/credit_debit_page/moto.svg create mode 100644 static/svgs/credit_debit_page/princingmodels.svg create mode 100644 static/svgs/credit_debit_page/refunds.svg create mode 100644 static/svgs/credit_debit_page/unclearedpayments.svg create mode 100644 static/svgs/credit_debit_page/zeroauthorization.svg diff --git a/static/svgs/credit_debit_page/3dsecure.svg b/static/svgs/credit_debit_page/3dsecure.svg new file mode 100644 index 000000000..e5a952663 --- /dev/null +++ b/static/svgs/credit_debit_page/3dsecure.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/static/svgs/credit_debit_page/cardholderdata.svg b/static/svgs/credit_debit_page/cardholderdata.svg new file mode 100644 index 000000000..6b05d4b8e --- /dev/null +++ b/static/svgs/credit_debit_page/cardholderdata.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/svgs/credit_debit_page/cardpayments.svg b/static/svgs/credit_debit_page/cardpayments.svg new file mode 100644 index 000000000..4c9061492 --- /dev/null +++ b/static/svgs/credit_debit_page/cardpayments.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/svgs/credit_debit_page/chargebacks.svg b/static/svgs/credit_debit_page/chargebacks.svg new file mode 100644 index 000000000..a85489ee6 --- /dev/null +++ b/static/svgs/credit_debit_page/chargebacks.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/svgs/credit_debit_page/errors.svg b/static/svgs/credit_debit_page/errors.svg new file mode 100644 index 000000000..88c1dbfb3 --- /dev/null +++ b/static/svgs/credit_debit_page/errors.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/svgs/credit_debit_page/manualcapture.svg b/static/svgs/credit_debit_page/manualcapture.svg new file mode 100644 index 000000000..88393980b --- /dev/null +++ b/static/svgs/credit_debit_page/manualcapture.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/static/svgs/credit_debit_page/moto.svg b/static/svgs/credit_debit_page/moto.svg new file mode 100644 index 000000000..a27bb1614 --- /dev/null +++ b/static/svgs/credit_debit_page/moto.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/svgs/credit_debit_page/princingmodels.svg b/static/svgs/credit_debit_page/princingmodels.svg new file mode 100644 index 000000000..50ad8cf0c --- /dev/null +++ b/static/svgs/credit_debit_page/princingmodels.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/svgs/credit_debit_page/refunds.svg b/static/svgs/credit_debit_page/refunds.svg new file mode 100644 index 000000000..9f47375c8 --- /dev/null +++ b/static/svgs/credit_debit_page/refunds.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/svgs/credit_debit_page/unclearedpayments.svg b/static/svgs/credit_debit_page/unclearedpayments.svg new file mode 100644 index 000000000..9028ea651 --- /dev/null +++ b/static/svgs/credit_debit_page/unclearedpayments.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/svgs/credit_debit_page/zeroauthorization.svg b/static/svgs/credit_debit_page/zeroauthorization.svg new file mode 100644 index 000000000..a9000cef7 --- /dev/null +++ b/static/svgs/credit_debit_page/zeroauthorization.svg @@ -0,0 +1,7 @@ + + + + + + + From 44f8f970cef8902a13eeaa0cd2281daed20c2b98 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Fri, 11 Oct 2024 08:59:37 +0200 Subject: [PATCH 219/319] DOCS-4396: Add Visa and American Express Shopify apps links (#3139) --- content/integrations/shopify-beta.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index f0b1546bd..b8b011da5 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -20,12 +20,14 @@ 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: + - American Express - Amazon Pay - Bancontact - Card Payment - Direct debit - iDEAL - Mastercard + - Visa 5. Click on "Install" button. 6. If necessary, log in to your Shopify store. 7. On your admin page, select Install app. From bf0c6b1a39c86086c4491922cd925d42f4b7a917 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 10:14:26 +0200 Subject: [PATCH 220/319] =?UTF-8?q?DOCS-4395A:=20Add=20new=20SVGs=20for=20?= =?UTF-8?q?credit=20and=20debit.=20Add=20new=20logo=20=E2=82=AC.=20(#3140)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/svgs/credit_debit_page/Euro.svg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 static/svgs/credit_debit_page/Euro.svg diff --git a/static/svgs/credit_debit_page/Euro.svg b/static/svgs/credit_debit_page/Euro.svg new file mode 100644 index 000000000..54f97757c --- /dev/null +++ b/static/svgs/credit_debit_page/Euro.svg @@ -0,0 +1,4 @@ + + + + From 902876945526bc44e8f1a20ed13731a1a3eea75c Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 12:05:13 +0200 Subject: [PATCH 221/319] Docs 4380 (#3123) * DOCS-Bizum release updatae to docs (docs repo) * DOCS-4380: Bizum release update to docs. (documentation page) --- api/general/gateway-ids.md | 1 + api/general/transaction-expiration.md | 1 + content/payment-methods/banking-methods.md | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/api/general/gateway-ids.md b/api/general/gateway-ids.md index e04232513..c3aac1967 100644 --- a/api/general/gateway-ids.md +++ b/api/general/gateway-ids.md @@ -17,6 +17,7 @@ hidden: false | Bank transfer | `BANKTRANS` | | Belfius | `BELFIUS` | | Betaal per Maand | `SANTANDER` | +| Bizum | `BIZUM` | | CBC/KBC | `CBC` / `KBC` | | Card payments | `CREDITCARD` | | Dotpay | `DOTPAY` | diff --git a/api/general/transaction-expiration.md b/api/general/transaction-expiration.md index a21069d8d..392a532a7 100644 --- a/api/general/transaction-expiration.md +++ b/api/general/transaction-expiration.md @@ -27,6 +27,7 @@ The table below sets out the expiration time per payment method: | Bank transfer| 60 days | | Belfius| 5 days | | Betaal per Maand| 1 day | +| Bizum| 30 minutes | | CBC/KBC| 5 days | | Dotpay| 3 days | | Google Pay| 1 hour | diff --git a/content/payment-methods/banking-methods.md b/content/payment-methods/banking-methods.md index 0024aaf44..f8622c545 100644 --- a/content/payment-methods/banking-methods.md +++ b/content/payment-methods/banking-methods.md @@ -39,7 +39,7 @@ slug: 'banking-methods' [block:html] { - "html": "\n\n\n" + "html": "" } [/block]
@@ -50,7 +50,19 @@ slug: 'banking-methods' [block:html] { - "html": "\n\n\n" + "html": "" +} +[/block] + +
+ +--- + +## Spain + +[block:html] +{ + "html": "
\n \n\n" } [/block] From 1da7429a0c0ca108fdba99d7e1d0f1c0bfbb29d4 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 12:17:26 +0200 Subject: [PATCH 222/319] DOCS-3885: Main pages of Docs sections (credit and debit card page) (#3115) * DOCS-3885: Main pages of Docs sections * DOCS-3885: Main pages of Docs section. Credit and debit cards. --- content/payment-methods/credit-debit-cards.md | 284 +++++++++++++++++- 1 file changed, 280 insertions(+), 4 deletions(-) diff --git a/content/payment-methods/credit-debit-cards.md b/content/payment-methods/credit-debit-cards.md index e96850f28..95774cba8 100644 --- a/content/payment-methods/credit-debit-cards.md +++ b/content/payment-methods/credit-debit-cards.md @@ -6,7 +6,283 @@ hidden: false slug: 'cards' --- -[block:html] +## Brands +
+
+ Dankort Logo + +
+
+ Postepay Logo + +
+
+ American Express Logo + +
+
+ Mastercard Logo + +
+
+ V Pay Logo + +
+
+ Visa Logo + +
+
+ Cartes Bancaires Logo + +
+
+ Maestro Logo + +
+
+ +
+ +## Solutions + + +
+ +## Payment management + + +
+ +## Security + + +
+ + + +
+ +--- + +[Top of page](#) + + + + + -
+ From b25729cd9758a00304c5bde7837e6baca4dd3b16 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 12:45:14 +0200 Subject: [PATCH 223/319] =?UTF-8?q?DOCS-3885A:=20Main=20pages=20of=20Docs?= =?UTF-8?q?=20sections.=20Credit=20and=20debit=20cards.=20Modi=E2=80=A6=20?= =?UTF-8?q?(#3141)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DOCS-3885A: Main pages of Docs sections. Credit and debit cards. Modifications --- content/payment-methods/banking-methods.md | 2 +- content/payment-methods/credit-debit-cards.md | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/content/payment-methods/banking-methods.md b/content/payment-methods/banking-methods.md index f8622c545..03c0e7912 100644 --- a/content/payment-methods/banking-methods.md +++ b/content/payment-methods/banking-methods.md @@ -62,7 +62,7 @@ slug: 'banking-methods' [block:html] { - "html": "
\n \n\n" + "html": "
\n \n\n" } [/block] diff --git a/content/payment-methods/credit-debit-cards.md b/content/payment-methods/credit-debit-cards.md index 95774cba8..f8c94c787 100644 --- a/content/payment-methods/credit-debit-cards.md +++ b/content/payment-methods/credit-debit-cards.md @@ -42,7 +42,7 @@ slug: 'cards'
-
+--- ## Solutions
@@ -88,7 +88,7 @@ slug: 'cards'
-
+--- ## Payment management
@@ -124,7 +124,7 @@ slug: 'cards'
-
+--- ## Security
@@ -160,8 +160,9 @@ slug: 'cards'
-
+--- +## Pricing
From d93ffcea62002efb472e9fad4d82fb66c05f219c Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 16:21:17 +0200 Subject: [PATCH 224/319] Docs 4194 (#3142) * DOCS-4194: Cancel POS Order. Add explanation for cancelling orders * DOCS-4194: Cancel POS Order. Add explanation for cancelling orders * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- content/point-of-sale/smartpos-solutions.md | 76 +++++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md index 11d462466..7544fed37 100644 --- a/content/point-of-sale/smartpos-solutions.md +++ b/content/point-of-sale/smartpos-solutions.md @@ -46,7 +46,8 @@ This diagram shows a successful cloud-based POS payment flow. Click to magnify. **⚠️ Note:** Before you start initiating payments, you must ensure **cloud mode** is enabled - see [SmartPOS features](/docs/smartpos-features). -Create an order. See Recipe - Cloud POS payment . +- Create an order. See Recipe - Cloud POS payment . +- Cancel an order. See [cancellation](#cancellation). To receive payments updates subscribe to [Event notifications.](/docs/event-notifications) @@ -73,7 +74,7 @@ This diagram shows a successful web application payment flow. Click to magnify. **Example** -``` +```cURL curl -X POST \ "https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}" -d '{ @@ -127,7 +128,7 @@ This diagram shows a successful native application payment flow. Click to magnif **Example** -``` +```cURL curl -X POST \ "https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}" -d '{ @@ -153,7 +154,7 @@ In addition to the features mentioned in our MultiSafepay dashboard under **Manage groups**. + +
+PATCH request +To cancel an order with a **PATCH** request, follow these instructions: + +- The `status` parameter (string) must be set to **cancelled**. +- Set `exclude_order` (boolean) to **true**. This sets the outcome of the cancellation. + +**Example Request** +```cURL PATCH +curl --location --request PATCH \ + --url 'https://api.multisafepay.com/v1/json/orders/{order_id}/?api_key={your-api-key}' \ + --header 'Accept: application/json' \ + --header 'Content-Type: application/json' + --data ' +{ + "status": "cancelled", + "exclude_order": true +} +' ``` -curl -X POST 'https://testapi.multisafepay.com/v1/json/orders/{order_id}/cancel?api_key={your-api-key}' + +**Example Response** +```JSON +{ + "success":true, + "data": {} +} ``` +
+ +
+POST request + + + +To cancel an order with a **POST** request, no additional parameters are required. Introduce the `order_id` and the **API** key in the URL. + +**Example request** + +```cURL POST +curl -X POST +"https://api.multisafepay.com/v1/json/orders/{order_id}/cancel?api_key={your-api-key}" +``` +**Example response** +```JSON +{ + "success": true, + "data": { + "costs": [], + "created": "dateTtime", + "custom_info": { + "custom_1": null, + "custom_2": null, + "custom_3": null + }, + "fastcheckout": "NO", + "financial_status": null, + "modified": "dateTtime", + "payment_details": {}, + "payment_methods": null, + "status": "cancelled" + } +} +``` +
## Refunds From efbbfe6700ab3eaad6af5fb5581a2742fcedf597 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 16:32:12 +0200 Subject: [PATCH 225/319] Docs 4194 a (#3143) * DOCS-4194: Cancel POS Order. Add explanation for cancelling orders * DOCS-4194: Cancel POS Order. Add explanation for cancelling orders * DOCS-4194A: Cancel POS Order. modifications * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- content/point-of-sale/smartpos-solutions.md | 26 ++++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md index 7544fed37..9b01c7118 100644 --- a/content/point-of-sale/smartpos-solutions.md +++ b/content/point-of-sale/smartpos-solutions.md @@ -74,7 +74,8 @@ This diagram shows a successful web application payment flow. Click to magnify. **Example** -```cURL + +```curl curl -X POST \ "https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}" -d '{ @@ -88,7 +89,8 @@ curl -X POST \ "notification_url": "https://www.example.com/paymentnotification", "notification_method": "POST" } -}' +} +' ``` 2. Initiate a payment using the URL below: @@ -128,10 +130,11 @@ This diagram shows a successful native application payment flow. Click to magnif **Example** -```cURL +```curl curl -X POST \ "https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}" --d '{ +-d ' +{ "type": "redirect", "order_id": "my_order_id", "gateway": "", @@ -142,7 +145,8 @@ curl -X POST \ "notification_url": "https://www.example.com/paymentnotification", "notification_method": "POST" } -}' +} +' ``` 2. To initiate payments - see MultiSafepay Android POS integration . @@ -154,8 +158,7 @@ In addition to the features mentioned in our MultiSafepay dashboard under **Manage groups**. +
PATCH request @@ -292,7 +297,9 @@ To cancel an order with a **PATCH** request, follow these instructions: - Set `exclude_order` (boolean) to **true**. This sets the outcome of the cancellation. **Example Request** -```cURL PATCH + +```curl cURL PATCH + curl --location --request PATCH \ --url 'https://api.multisafepay.com/v1/json/orders/{order_id}/?api_key={your-api-key}' \ --header 'Accept: application/json' \ @@ -306,7 +313,8 @@ curl --location --request PATCH \ ``` **Example Response** -```JSON +```json + { "success":true, "data": {} From 5703f1ec6b0f03f344451eb6905ff6ea22536f4f Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Fri, 11 Oct 2024 16:48:42 +0200 Subject: [PATCH 226/319] DOCS-4398: Add Maestro and MB Way Shopify app links (#3144) --- content/integrations/shopify-beta.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index b8b011da5..ff987fe5e 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -26,6 +26,8 @@ To install or migrate, follow these steps: - Card Payment - Direct debit - iDEAL + - Maestro + - MB WAY - Mastercard - Visa 5. Click on "Install" button. @@ -65,10 +67,6 @@ MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supporte 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. From 92cc21a959ab72193ea3149e88f27110f25a4b8e Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 17:12:16 +0200 Subject: [PATCH 227/319] Docs 4400 (#3145) * DOCS-4400 * Revert "DOCS-4400" This reverts commit 7214ac48f646c6dfa695cc9343b8fef6d4e64596. * DOCS-4400 Bizum documentation page upload * DOCS-4400 Bizum documentation page upload * Automated external URL lint. * DOCS-4400: Bizum documentation page upload --------- Co-authored-by: github-actions[bot] --- content/payment-methods/bizum.md | 140 ++++++++++++++++++++++++++++++- 1 file changed, 138 insertions(+), 2 deletions(-) diff --git a/content/payment-methods/bizum.md b/content/payment-methods/bizum.md index c984c1481..d6c647088 100644 --- a/content/payment-methods/bizum.md +++ b/content/payment-methods/bizum.md @@ -3,6 +3,142 @@ title: 'Bizum' category: 6298bd782d1cf4006032e765 parentDoc: 62a728d48b97080046c1d220 order: 5 -hidden: true slug: 'bizum' ---- \ No newline at end of file +--- + +> ⚠️ Note: +> +> We are currently in the pilot phase for this product in Spain. +> +> If you are interested in participating in the next stage of our pilot, email [sales@multisafepay.com](mailto:integration@multisafepay.com) + + + +Bizum " target="_blank">Bizum is a mobile payment system in Spain that enables users to make instant transfers through their banking app, providing a quick and secure way to conduct payments. + + + +| Supports | Details | +| ------------------------------------------------------------- | ------- | +| [Countries](/docs/payment-methods#payment-methods-by-country) | Spain | +| [Currencies](/docs/currencies/) | EUR | +| [Chargebacks](/docs/chargebacks/) | No | +| [Payment pages](/docs/payment-pages/) | Yes | + + + +# Payment flow + +This diagram shows the flow for a successful transaction. Click to magnify. + + + +Bizum payment flow + +*** + + + +# Payment statuses + +The table below sets out the <> and <> for payments and refunds. + +| Description | Order status | Transaction status | +| ------------------------------------------------------------------------------------------------ | ------------ | ------------------ | +| The customer has initiated a transaction and gets redirected to Bizum. You can no longer cancel. | Initialized | Initialized | +| The customer has completed the authentication. | Completed | Initialized | +| The customer didn't complete payment within 30 minutes. | Expired | Expired | +| The authentication failed. | Declined | Declined | +| **Refunds:** Refund complete. | Completed | Initialized | +| **Refunds:** Refund declined. | Declined | Declined | + +*** + + + +# Activation + +1. Request merchant registration at your local bank, and follow guidelines provided by them (for example agreements). +2. Provide MultiSafepay with your **FUC** (Merchant Identification Code), **CSB**, and **Terminal**. +3. We confirm activation. +4. Sign in to your MultiSafepay dashboard . +5. 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. +- Select the checkbox for the payment method, and then click **Save changes**. + +💬 **Support:** If the payment method isn't visible in your dashboard, email [support@multisafepay.com](mailto:integration@multisafepay.com) + + + +# Integration + +## API + +See API reference – [Create order](/reference/createorder/) > Banking order. + +
+Example requests +
+ + For example requests, on the [Create order](/reference/createorder/) page, in the black sandbox, see **Examples** > **Bizum direct/redirect**. + + + + Set `gateway` to `BIZUM`, and `type` to `direct` or `redirect`. + + + +
+ +- For <> orders, you must provide the customer with [payment instructions](#payment-instructions) to proceed with the payment. + +- Transactions expire after 30 minutes. + + + +## Ready made solutions + +The payment method will soon be available in our plugins. + +## Testing + +Testing will soon be available for this payment method. + + + +# User guides + +## Amount limits + +- Minimum order amount: 0.50 EUR +- Maximum order amount: 1,000 EUR +- Maximum amount per day: 2,000 EUR +- Maximum amount per month: 5,000 EUR + + + +## Cancellation + +You can no longer cancel a transaction after the status changes to **Initialized**. + + + +## Refunds + +You can process full and partial refunds in your dashboard. + + + +[block:html] +{ + "html": "
\n

\n 💬\n

Support

\n

\n

Email support@multisafepay.com

\n
\n" +} +[/block] + + +[Top of page](#) \ No newline at end of file From 9060f354444aa448d2e6a562ca9137bc66afa520 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 17:20:18 +0200 Subject: [PATCH 228/319] Docs 4400 a (#3146) * DOCS-4400 * Revert "DOCS-4400" This reverts commit 7214ac48f646c6dfa695cc9343b8fef6d4e64596. * DOCS-4400 Bizum documentation page upload * DOCS-4400 Bizum documentation page upload * Automated external URL lint. * DOCS-4400: Bizum documentation page upload * DOCS-4400A: Bizum documentation page. Corrected --------- Co-authored-by: github-actions[bot] --- content/payment-methods/bizum.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/payment-methods/bizum.md b/content/payment-methods/bizum.md index d6c647088..07051ed1a 100644 --- a/content/payment-methods/bizum.md +++ b/content/payment-methods/bizum.md @@ -14,7 +14,9 @@ slug: 'bizum' -Bizum " target="_blank">Bizum is a mobile payment system in Spain that enables users to make instant transfers through their banking app, providing a quick and secure way to conduct payments. + +Bizum " target="_blank">Bizum is a mobile payment system in Spain that enables users to make instant transfers through their banking app, providing a quick and secure way to conduct payments. + From 143ebec4026677163892d1854028213418af63c2 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 11 Oct 2024 17:25:51 +0200 Subject: [PATCH 229/319] Docs 4400 b (#3147) * DOCS-4400 * Revert "DOCS-4400" This reverts commit 7214ac48f646c6dfa695cc9343b8fef6d4e64596. * DOCS-4400 Bizum documentation page upload * DOCS-4400 Bizum documentation page upload * Automated external URL lint. * DOCS-4400: Bizum documentation page upload * DOCS-4400A: Bizum documentation page. Corrected * DOCS-4400B: Bizum page corrections --------- Co-authored-by: github-actions[bot] --- content/payment-methods/bizum.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/payment-methods/bizum.md b/content/payment-methods/bizum.md index 07051ed1a..c003dc2ef 100644 --- a/content/payment-methods/bizum.md +++ b/content/payment-methods/bizum.md @@ -15,7 +15,7 @@ slug: 'bizum' -Bizum " target="_blank">Bizum is a mobile payment system in Spain that enables users to make instant transfers through their banking app, providing a quick and secure way to conduct payments. +Bizum is a mobile payment system in Spain that enables users to make instant transfers through their banking app, providing a quick and secure way to conduct payments. From 6439fffc03b84b007170f8eaa2aa55c519262332 Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Fri, 11 Oct 2024 17:27:32 +0200 Subject: [PATCH 230/319] DOCS-4401: POS countries (#3148) --- content/point-of-sale/event-notifications.md | 10 +--------- content/point-of-sale/hardware-setup.md | 7 ++++++- content/point-of-sale/pos-overview.md | 9 +++++++-- content/point-of-sale/pos-troubleshooting.md | 8 -------- content/point-of-sale/smartPOS-features.md | 8 +++++++- content/point-of-sale/smartpos-activation.md | 8 ++++++-- content/point-of-sale/smartpos-overview.md | 7 ++++++- content/point-of-sale/smartpos-solutions.md | 7 ++++++- 8 files changed, 39 insertions(+), 25 deletions(-) diff --git a/content/point-of-sale/event-notifications.md b/content/point-of-sale/event-notifications.md index 39421f7f8..68aecc21d 100644 --- a/content/point-of-sale/event-notifications.md +++ b/content/point-of-sale/event-notifications.md @@ -7,15 +7,7 @@ hidden: false slug: 'event-notifications' --- -> ⚠️ Note: -> -> We currently offer this product in the following countries: -> -> - Netherlands -> - Belgium -> -> If you are interested in our Point of Sale solutions, email -> + Subscribe to event notifications to receive order payments updates when, e.g., diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index 2e73076d0..11bb770dc 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -14,7 +14,12 @@ slug: 'hardware-setup' > > - Netherlands > - Belgium -> +> +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> > If you are interested in our Point of Sale solutions, email > diff --git a/content/point-of-sale/pos-overview.md b/content/point-of-sale/pos-overview.md index f1dd0e126..080f220a2 100644 --- a/content/point-of-sale/pos-overview.md +++ b/content/point-of-sale/pos-overview.md @@ -12,9 +12,14 @@ slug: 'overview' > > - Netherlands > - Belgium -> +> +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> > If you are interested in our Point of Sale solutions, email - +> With MultiSafepay <> solutions, you can accept in-person payments through various terminals. Our <> solutions support multiple payment methods and offer flexible implementation options. diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index 747a0b172..131821b82 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -7,14 +7,6 @@ slug: 'pos-troubleshooting' --- -> ⚠️ Note: -> -> We currently offer this product in the following countries: -> -> - Netherlands -> - Belgium -> -> If you are interested in our Point of Sale solutions, email This page provides troubleshooting steps to resolve common issues. diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index d52727fa5..6a0256631 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -15,7 +15,13 @@ slug: 'smartpos-features' > - Netherlands > - Belgium > -> If you are interested in our Point of Sale solutions, email [sales@multisafepay.com](mailto:sales@multisafepay.com). +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> +> If you are interested in our Point of Sale solutions, email +> diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 318c84af9..11a285965 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -13,10 +13,14 @@ slug: 'smartpos-activation' > > - Netherlands > - Belgium -> +> +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> > If you are interested in our Point of Sale solutions, email > - SmartPOS is an advanced <> terminal with Android applications, providing added functionality. It enables you to make payments through various options, such as manual input flow, cloud POS payment, or third-party on-device applications. # Prerequisites diff --git a/content/point-of-sale/smartpos-overview.md b/content/point-of-sale/smartpos-overview.md index ece5e67f3..c9847221a 100644 --- a/content/point-of-sale/smartpos-overview.md +++ b/content/point-of-sale/smartpos-overview.md @@ -12,7 +12,12 @@ slug: 'smartpos-terminal' > > - Netherlands > - Belgium -> +> +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> > If you are interested in our Point of Sale solutions, email > diff --git a/content/point-of-sale/smartpos-solutions.md b/content/point-of-sale/smartpos-solutions.md index 9b01c7118..1952d1958 100644 --- a/content/point-of-sale/smartpos-solutions.md +++ b/content/point-of-sale/smartpos-solutions.md @@ -13,7 +13,12 @@ slug: 'smartpos-solutions' > > - Netherlands > - Belgium -> +> +> As a partner, you can further connect accounts registered in the following countries: +> +> - Italy +> - Spain +> > If you are interested in our Point of Sale solutions, email > From 208d6a86225cfa257745dfbdcb2c54508b86be0a Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 14 Oct 2024 11:32:01 +0200 Subject: [PATCH 231/319] Docs 4376 (#3149) * DOCS-4377C: remove deprecated images POS features * DOCS-4376: update riverty sales email for payment activation. --- content/payment-methods/riverty.md | 2 +- content/payment-methods/testing.md | 2 +- content/point-of-sale/pos-overview.md | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/content/payment-methods/riverty.md b/content/payment-methods/riverty.md index 45207e392..aef021c48 100755 --- a/content/payment-methods/riverty.md +++ b/content/payment-methods/riverty.md @@ -49,7 +49,7 @@ The table below sets out the <> and < +To activate Riverty for your account, email Riverty at Riverty provides you with an API key per country and per site, and you must accept Riverty's terms and conditions for each. diff --git a/content/payment-methods/testing.md b/content/payment-methods/testing.md index 340a336e7..0d23f960d 100644 --- a/content/payment-methods/testing.md +++ b/content/payment-methods/testing.md @@ -442,7 +442,7 @@ To learn more about integrating Klarna with MultiSafepay, see [Klarna](/docs/kla 1. Request a test API key from Riverty via either: - Your implementation ticket with Riverty, **or** - - Email + - Email Riverty shares the test key with MultiSafepay. diff --git a/content/point-of-sale/pos-overview.md b/content/point-of-sale/pos-overview.md index 080f220a2..c2f5367d0 100644 --- a/content/point-of-sale/pos-overview.md +++ b/content/point-of-sale/pos-overview.md @@ -52,4 +52,12 @@ Read how our POS solutions can benefit your business on \n \n \n \n" } -[/block] \ No newline at end of file + +[/block] + +--- + + + +[Top of page](#) + From cca1aa8b7f442e44eb4d192acf104affbc4e0223 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 14 Oct 2024 11:40:22 +0200 Subject: [PATCH 232/319] DOCS-4383B: testing on dark mode docs main page (#3150) --- landing-page/landing-page.html | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/landing-page/landing-page.html b/landing-page/landing-page.html index 417950f62..c411e7c1d 100644 --- a/landing-page/landing-page.html +++ b/landing-page/landing-page.html @@ -249,17 +249,6 @@

Checkout solutions

background: none; } } - /* Applies when system mode is dark */ - @media (prefers-color-scheme: dark) { - [data-color-mode="system"] .flex-item.padded-block { - background: #36454F !important; /* Charcoal black for system dark mode */ - } - } - - /* Applies when user has explicitly chosen dark mode */ - [data-color-mode="dark"] .flex-item.padded-block { - background: #36454F !important; /* Charcoal black for dark mode */ - } - -## 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 From 8fd4fbfd3f41d4eb754904219656c9afb997219e Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 23 Oct 2024 11:21:36 +0200 Subject: [PATCH 241/319] DOCS-4415: Add KBC Shopify app link (#3161) --- 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 c49ca0bd8..74fc5550b 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -27,6 +27,7 @@ To install or migrate, follow these steps: - CBC - Direct debit - iDEAL + - KBC - Maestro - MB WAY - Mastercard From 083e7a30cd6b9c05e16f1f61a269952f54c361e3 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 23 Oct 2024 12:31:25 +0200 Subject: [PATCH 242/319] =?UTF-8?q?DOCS-4193:=20mention=20coupons=20not=20?= =?UTF-8?q?available=20in=20component.=20Modification=20l=E2=80=A6=20(#315?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DOCS-4193: mention coupons not available in component. Modification list. * DOCS-4193A: Mention Coupons not available in component. Corrections. --- content/checkout/payment-components.md | 46 ++++++++++++-------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/content/checkout/payment-components.md b/content/checkout/payment-components.md index 536e16358..eae3eabf8 100644 --- a/content/checkout/payment-components.md +++ b/content/checkout/payment-components.md @@ -22,33 +22,31 @@ Payment components let you embed payment methods directly into your checkout. # Payment methods You can embed a single or multiple payment methods in your checkout. +These are the supported payment methods: -
-Supported payment methods -
- -- [Bancontact](/docs/bancontact/) -- [Bank transfer](/docs/bank-transfer/) +- Banking methods: + - [Bancontact](/docs/bancontact/) + - [Bank transfer](/docs/bank-transfer/) + - [Direct debit](/docs/direct-debit/) + - [iDEAL](/docs/ideal/) + - [MyBank](/docs/mybank/) - <>: - - [E-invoicing](/docs/e-invoicing/) - - [Klarna](/docs/klarna/) - - [In3](/docs/in3/) - - [Pay After Delivery](/docs/pay-after-delivery/) - - [Pay After Delivery installments](/docs/pay-after-delivery-installments/) - - [Riverty](/docs/riverty/) - - [Zinia](/docs/zinia/) -- Cards: - - [American Express](/docs/card-payments/) - - [Mastercard](/docs/card-payments/) - - [Visa](/docs/card-payments/) - - [Maestro](/docs/card-payments/) -- [iDEAL](/docs/ideal/) -- [MyBank](/docs/mybank/) -- [PayPal](/docs/paypal/) -- [Direct debit](/docs/direct-debit/) -- [Sofort](/docs/sofort/) + - [E-invoicing](/docs/e-invoicing/) + - [In3](/docs/in3/) + - [Klarna](/docs/klarna/) + - [Pay After Delivery](/docs/pay-after-delivery/) + - [Pay After Delivery installments](/docs/pay-after-delivery-installments/) + - [Riverty](/docs/riverty/) + - [Zinia](/docs/zinia/) +- Cards: + - [American Express](/docs/card-payments/) + - [Maestro](/docs/card-payments/) + - [Mastercard](/docs/card-payments/) + - [Visa](/docs/card-payments/) +- Wallets: [PayPal](/docs/paypal/) -
+ +**⚠️ Note:** [Prepaid cards](/docs/prepaid-cards/) are not supported. # Card payment features From fcd7a6446fe06cf78e4c42b2f149429edcbe7ede Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:38:37 +0100 Subject: [PATCH 243/319] DOCS-4423: modify expiry time in3 (#3165) --- 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 1b4eebf0e..4a24753f2 100644 --- a/content/payment-methods/in3.md +++ b/content/payment-methods/in3.md @@ -40,7 +40,7 @@ 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 | From 82ecf3dad81b382e96f71f4bbf7b6a6d6bc5a7ce Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:35:08 +0100 Subject: [PATCH 244/319] DOCS-4152: Add payment methods (#3166) --- content/integrations/shopify.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md index ef4e5333e..387cadabd 100755 --- a/content/integrations/shopify.md +++ b/content/integrations/shopify.md @@ -80,17 +80,10 @@ For more information, see Shopify.dev – Manual capture: Initial payment - Manual capture: Capture payment +- Manual capture: Cancel reservation See API reference: - [Create order](/reference/createorder/) > Set `manual` to `capture`. - [Capture payment](/reference/capturepayment/) +- [Cancel authorized payment](/reference/cancelauthorizedorder)
@@ -51,6 +53,27 @@ After expiration, the <> can cancel the authorization. - Mastercard - Visa +## Cancellation + +You can cancel a reservation created via manual capture. For partial captures, the cancellation will apply to the remaining amount. + +
+How to cancel an authorized transaction
+ +**Via API**: + +- See API reference - Cancel authorized payment + +**Via dashboard**: + +- Sign in to your MultiSafepay dashboard . +- Go to **Transactions** > **Transaction overview**, and then select the relevant transaction. +- On the **Transaction summary** page, in **Order Summary**, click **Cancel Reservation**. +- Add a description of what happened with the order, and then click **Complete**. + The <> changes to **Void** and the <> to **Void**. + +
+ ## Statuses | Action | Description | Order status | Transaction status | From 4d45d5b236d489d90d7990b3af966c3277f0495f Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 8 Nov 2024 10:55:50 +0100 Subject: [PATCH 246/319] Docs 4416 (#3168) * DOCS-4416: Shop documentation * DOCS-4416: Shop documentation. * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- content/point-of-sale/device-shop.md | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 content/point-of-sale/device-shop.md diff --git a/content/point-of-sale/device-shop.md b/content/point-of-sale/device-shop.md new file mode 100644 index 000000000..0a9573149 --- /dev/null +++ b/content/point-of-sale/device-shop.md @@ -0,0 +1,55 @@ +--- +title: 'Device shop' +category: 6477597e0e2961004638cd5d +order: 4 +hidden: true +slug: 'device-shop' + +--- + +You can explore our SmartPOS terminals and accessories directly through the shop in your MultiSafepay dashboard. Technical details and prices are provided for each device listed. + +How to access the terminal shop: + +1. Sign in to your MultiSafepay dashboard . +2. Go to **Devices** and select **Shop**. + +## How to place an order + +You can place an order for your desired product from the shop in your MultiSafepay dashboard . + +1. Choose the desired devices and click **Add to cart**. +2. Click the trolley icon to access your cart. +3. In **My Cart**, click on **Pay with balance**. +4. Your delivery information, including your shipping address, will display by default. Modify if necessary. +5. Click **Confirm**. The total cost of the items in your cart will be discounted from your balance. +6. A message will appear stating that the order has been placed successfully. + +## Adding funds to your balance + +If your balance is insufficient to complete the payment, you can add more funds: + +1. In **My Cart**, click **Top up balance**. +2. Select the desired payment method and provide the required details. +3. Click **Pay now**. +4. The amount will be added to your balance. + +## Invoice and Shipping Information + +Once your order is placed, an invoice will be automatically generated and sent to your email address, detailing the products purchased. + +You can find your order in **Transactions** > **Transaction Overview**. Select the relevant transaction. + +- In **Transaction details**, you will find the date of shipment, order status, and a **Track and trace URL**. +- In **Shipment history**, you can track the order through the shipment process. +- In **Order summary**, you can click **Packing slip** to download a document containing information related to the items you have ordered. + +*** + +If you are experiencing issues with your device, you can request an RMA (Return Merchandise Authorization). See - Send back a terminal . + +💬 **Support**: For questions, email [pos-support@multisafepay.com](mailto:pos-support@multisafepay.com). + +*** + +[Top of page](#) \ No newline at end of file From 2d0fee5223c6e2aaa41d6846d7bc429a6323aa6d Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Mon, 11 Nov 2024 09:36:54 +0100 Subject: [PATCH 247/319] DOCS-4427: Add Mybank and Bank Transfer app links to Shopify page (#3169) --- content/integrations/shopify-beta.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index 74fc5550b..699779a88 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -23,6 +23,7 @@ To install or migrate, follow these steps: - American Express - Amazon Pay - Bancontact + - Bank Transfer - Card Payment - CBC - Direct debit @@ -31,6 +32,7 @@ To install or migrate, follow these steps: - Maestro - MB WAY - Mastercard + - MyBank - Visa 5. Click on "Install" button. 6. If necessary, log in to your Shopify store. From d48dfe949b1e4381f41066419cf22fe73ca3cc85 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Mon, 11 Nov 2024 16:41:25 +0100 Subject: [PATCH 248/319] DOCS-4428: Update compatibility with PrestaShop 8.2 (#3170) --- content/integrations/prestashop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md index 1b516a977..96b135a2e 100644 --- a/content/integrations/prestashop.md +++ b/content/integrations/prestashop.md @@ -27,7 +27,7 @@ slug: 'prestashop' # Prerequisites - [MultiSafepay account](/docs/getting-started-guide/) -- PrestaShop 1.7.6 up to PrestaShop 8.1.x +- PrestaShop 1.7.6 up to PrestaShop 8.2.x - PHP version 7.2 or higher # Installation From 5531601db911b7948a9e4c40d903f598ddb0ee87 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 13 Nov 2024 11:41:47 +0100 Subject: [PATCH 249/319] DOCS-4174: Add MBWAY - MULTIBANCO testing information in docs. (#3167) * DOCS-4174: Add MBWAY - MULTIBANCO testing information in docs --- content/payment-methods/testing.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/content/payment-methods/testing.md b/content/payment-methods/testing.md index 23e184c76..070ccd56a 100644 --- a/content/payment-methods/testing.md +++ b/content/payment-methods/testing.md @@ -212,6 +212,24 @@ You can also test the following scenarios:
+
+How to test Multibanco & MB WAY +
+ +1. [Create an order](/reference/createorder/) > Banking order. + See also the Examples for the specific payment method. +2. For <> orders, open the payment link. +3. Set the `amount` parameter according to the desired transaction scenario. Refer to the table below for details. +4. For **MB WAY** direct orders, in the `customer` object, fill the `phone` parameter. For redirect orders, enter a phone number on the payment link and click **Confirm**. + +| Amount | Scenario | Description | +| ----------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------ | +| 9.99 and below | **Declined** | The transaction is initiated.
Transaction will show as **Declined**. | +| Between 10.00 and 20.00 | **Completed** | The transaction is initiated.
Transaction will show as **Completed**. | +| Above 20.00 | **Expired** | The transaction is initiated.
The status will show as **Initialized**. After 84 hours, this changes to **Expired**. | + +
+
How to test direct debits
From dd0d0439ff7e2a55ff1cf5885b0b8f9b755571b6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 14 Nov 2024 11:21:51 +0100 Subject: [PATCH 250/319] DOCS-4416: shop documentation (#3171) * DOCS-4416: Shop documentation * DOCS-4416: Shop documentation. * DOCS-4416: Shop documentation. Add available payment methods. * DOCS-4416: shop documentation. Add available payment methods. * Automated external URL lint. * DOCS-4416: shop documentation --------- Co-authored-by: github-actions[bot] --- content/point-of-sale/device-shop.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/content/point-of-sale/device-shop.md b/content/point-of-sale/device-shop.md index 0a9573149..eec446b94 100644 --- a/content/point-of-sale/device-shop.md +++ b/content/point-of-sale/device-shop.md @@ -16,6 +16,7 @@ How to access the terminal shop: ## How to place an order + You can place an order for your desired product from the shop in your MultiSafepay dashboard . 1. Choose the desired devices and click **Add to cart**. @@ -30,9 +31,11 @@ You can place an order for your desired product from the shop in your Card payments : Enter the required details and click **Pay now**. + - iDEAL : Click **Pay now**. You will be redirected to a iDEAL payment page. Follow the instructions to complete your payment. +3. The amount selected will be added to your balance. + ## Invoice and Shipping Information @@ -48,6 +51,7 @@ You can find your order in **Transactions** > **Transaction Overview**. Select t If you are experiencing issues with your device, you can request an RMA (Return Merchandise Authorization). See - Send back a terminal . + 💬 **Support**: For questions, email [pos-support@multisafepay.com](mailto:pos-support@multisafepay.com). *** From a5bcb15021d272d2a5c91d5049dc733d63f8bdd4 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Fri, 15 Nov 2024 09:28:00 +0100 Subject: [PATCH 251/319] DOCS-4433: Add WeChat Pay Shopify app link to the Shopify document (#3172) --- 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 699779a88..87dfdf645 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -34,6 +34,7 @@ To install or migrate, follow these steps: - Mastercard - MyBank - Visa + - WeChat Pay 5. Click on "Install" button. 6. If necessary, log in to your Shopify store. 7. On your admin page, select Install app. From 138eb7a823ff9a190566b821147f9b8d6b1bcd3d Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 18 Nov 2024 12:00:02 +0100 Subject: [PATCH 252/319] DOCS-4438: Change slug for FCO hidden to true (#3173) --- content/checkout/fastcheckout.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/checkout/fastcheckout.md b/content/checkout/fastcheckout.md index c401833ff..70a6d29cf 100644 --- a/content/checkout/fastcheckout.md +++ b/content/checkout/fastcheckout.md @@ -2,7 +2,7 @@ title: 'FastCheckout' category: 62bd999547298d001abc714c order: 0 -hidden: false +hidden: true slug: 'fastcheckout' --- From 8b57fe0a4b810e16be596568697900c604fcf55a Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 20 Nov 2024 08:31:03 +0100 Subject: [PATCH 253/319] DOCS-4422: CCV Shop - Payment Components and Partial Refunds (#3164) --- content/integrations/ccv-shop.md | 44 +++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/content/integrations/ccv-shop.md b/content/integrations/ccv-shop.md index 2dd09eb01..67eed2e34 100644 --- a/content/integrations/ccv-shop.md +++ b/content/integrations/ccv-shop.md @@ -17,8 +17,8 @@ excerpt: "Technical manual for MultiSafepay's free app." # Installation and 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 **Install** button. +2. Go to the **App store** and search for the **MultiSafepay** app. +3. Once found, select the app then click **Install** button. 4. Review and accept the permissions required by 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. @@ -27,14 +27,42 @@ excerpt: "Technical manual for MultiSafepay's free app." # 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. +2. Go to the **App store** and search for the **MultiSafepay** app. +3. Once found, select the app then click **Edit** button. 4. Modify the settings according your preferences. ___ # User guide +## Payment components + +The plugin supports [payment components](/docs/payment-components/), which: + +- Provide a seamless checkout experience to increase <>. +- Encrypt customer payment details for secure processing. +- Shift responsibility for [PCI DSS compliance](/docs/pci-dss/) to MultiSafepay. + +
+Supported payment methods +
+ +- Cards: Amex, Maestro, Mastercard, Visa, Bancontact, iDEAL in3, Pay After Delivery, Pay After Delivery installments, Riverty, E-Invoicing and Zinia + +
+ +
+How to activate payment components +
+ +1. Sign in to your CCV Shop <>. +2. Go to the **App store** and search for the **MultiSafepay** app. +3. Once found, select the app then click **Edit** button. +4. Set the **Enable payment component** toggle to **Enabled**. +5. Click **Save**. + +
+ ## Payment methods
@@ -48,7 +76,7 @@ To keep the payment methods synchronized, ensure to toggle the "update payment m ## Refunds -You can process full refunds for all payment methods, from your MultiSafepay dashboard, and from the CCV Shop <>. +You can process full and partial refunds for all payment methods from your MultiSafepay dashboard, and from the CCV Shop <>.
Refund rules @@ -56,7 +84,9 @@ You can process full refunds for all payment methods, from your MultiSafepay das 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**. +- After enable **Automatic refunds**, select which invoice type will trigger refunds: + - **Only "Credit"**: Refunds will be triggered when a credit invoice status is changed to **Refunded**. + - **Both "Credit" and "Debit"**: Refunds will be triggered when a credit or debit invoice status is changed to **Refunded**. - The refund amount cannot exceed the original transaction amount. - The refund amount cannot exceed the available funds in your MultiSafepay account.
@@ -84,7 +114,7 @@ To sort the payment methods on the checkout page, you can change the order in th
1. Sign in to your CCV Shop <>. -2. Go to **App Store** > **MultiSafepay**. +2. Go to the **App store** and search for the **MultiSafepay** app. 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. From c359986db7be630d3d7b580df7a053d33c4ba04f Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Fri, 22 Nov 2024 09:25:14 +0100 Subject: [PATCH 254/319] DOCS-4445: Add Bizum Shopify app link to the Shopify document (#3175) --- content/integrations/shopify-beta.md | 1 + wordlist.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index 87dfdf645..f0098500e 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -24,6 +24,7 @@ To install or migrate, follow these steps: - Amazon Pay - Bancontact - Bank Transfer + - Bizum - Card Payment - CBC - Direct debit diff --git a/wordlist.txt b/wordlist.txt index 2995f3404..d3286d736 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -629,5 +629,6 @@ zoeken maskedId multisafepayRestore urls +Bizum From 3a3cfda82bd370e4ff904c13b54dadc91130d251 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Fri, 22 Nov 2024 14:08:57 +0100 Subject: [PATCH 255/319] DOCS-4446: Add information related to refunds in Shopify document (#3176) --- content/integrations/shopify-beta.md | 44 ++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index f0098500e..d4ec6d928 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -91,9 +91,49 @@ Payment capture method needs to be set to **Automatically at checkout** in your ## 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. +[Full and partial refunds](/docs/refund-payments/) are supported via your MultiSafepay dashboard and backend. +
+How to process a refund in your backend +
+ +1. Sign in to your Shopify backend. +2. Go to **Orders**. +3. Select the order you want to refund. +4. Click on the **Refund** button. +- Enter the refund amount. +- Click on the **Refund** button. +4. A refund request is sent to MultiSafepay. The refund status is updated in your Shopify backend as **pending**. +5. The refund is processed by MultiSafepay. The refund status is updated in your Shopify backend as **refunded**. + +**Notes** + +- The refund amount cannot exceed the original transaction amount. +- Refunds are not processed in real-time. + - The refund status is updated in your Shopify backend as **pending** until the refund is processed by MultiSafepay. + - While the refund is **pending** in your Shopify backend, refund will appear as **reserved** in your MultiSafepay account. + +
+ +--- + +## Troubleshooting + +### Payment Order ID + +
+How to troubleshoot Shopify issues +
+ +If you experience issues with order statuses, or refund statuses not updating, we will need the payment ID of the original transaction to investigate the issue. + +1. Sign in to your Shopify backend. +2. Go to **Orders**. +3. Select the order related to the issue you want to report. +4. In the timeline, look for the earliest payment event and find the Payment ID. +5. Include the payment ID when reporting your issue to MultiSafepay support. + +
--- [block:html] From 21a9f02e02cac72a1bcdfcbdc824bbd10d412b0e Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:29:26 +0100 Subject: [PATCH 256/319] DOCS-4452: Deferred Sales (#3177) --- content/payment-methods/bancontact.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/content/payment-methods/bancontact.md b/content/payment-methods/bancontact.md index 0941dd6f1..b4367309f 100755 --- a/content/payment-methods/bancontact.md +++ b/content/payment-methods/bancontact.md @@ -122,6 +122,26 @@ Requests are screened and approved by Bancontact Payconiq. See [Recurring payments](/docs/recurring-payments/).
+ +## Deferred Sales + +Our Deferred Sales functionality allows you to [manually capture](/docs/manual-capture) Bancontact transactions. + +### How it works + +**Full capture** can be useful when a customer places an order but you are unable to ship it right away, or when you need to verify customer details before approving an order. An authorization is created for the full amount of the transaction. The funds are settled when you ship the order. + +**Partial capture** can be useful when a customer places an order for multiple items but you can't ship them all at once, only in separate shipments. An authorization is created for the full amount of the transaction, and the amount for each shipment is settled when you send it. + +You can perform 1 partial capture. The remaining amount will be released by the issuer automatically. + +### Activation + +1. You sign an agreement with Bancontact. +2. Bancontact evaluates your requests, and enables the service. +3. Bancontact defines **maximum amounts** and **expiry times** for authorizations. + +For a complete user guide, see [Manual Capture](/docs/manual-capture). --- [block:html] From ea12f2eb451d5fc7212274948b120901066f48d7 Mon Sep 17 00:00:00 2001 From: inesmayerMSP <125992838+inesmayerMSP@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:34:38 +0100 Subject: [PATCH 257/319] DOCS-4431: webhook response (#3178) --- content/payment-management/webhook.md | 4 ++-- content/payment-methods/bancontact.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/content/payment-management/webhook.md b/content/payment-management/webhook.md index 723e49fc5..2232e4dbf 100644 --- a/content/payment-management/webhook.md +++ b/content/payment-management/webhook.md @@ -314,8 +314,8 @@ We provide a code sample in Python for your reference. Acknowledge that you have successfully received a valid notification by returning: -- HTTP status code `200` with `OK` at the start or end of the message body, **or** -- HTTP status code `200` with `MULTISAFEPAY_OK` anywhere in the message body. +- HTTP status code `200` with `OK` within the first 100 characters of the message body, **or** +- HTTP status code `200` with `MULTISAFEPAY_OK` anywhere within the first 100 characters of the message body. Until we receive your acknowledgment, we resend the notification 3 times at 15 minute intervals, each with a new timestamp. diff --git a/content/payment-methods/bancontact.md b/content/payment-methods/bancontact.md index b4367309f..96bbbff8e 100755 --- a/content/payment-methods/bancontact.md +++ b/content/payment-methods/bancontact.md @@ -142,6 +142,8 @@ You can perform 1 partial capture. The remaining amount will be released by the 3. Bancontact defines **maximum amounts** and **expiry times** for authorizations. For a complete user guide, see [Manual Capture](/docs/manual-capture). + + --- [block:html] From f0bd240710d8a34c44b4ad814baf3bcb1781f459 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Tue, 26 Nov 2024 14:55:04 +0100 Subject: [PATCH 258/319] DOCS-4454: Add explanation about API Key setting field to Shopify docs (#3179) --- content/integrations/shopify-beta.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md index d4ec6d928..378565d86 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-beta.md @@ -47,9 +47,13 @@ To install or migrate, follow these steps: - 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.
+> ⚠️ About API key and Selected environment +> +> For all the above-listed MultiSafepay payment apps, the same API key, and the selected environment (test or live) will be used. Once you change the API key in a payment app, or the environment selected, it is automatically changed for the other active apps associated with your shop. + +
--- # Uninstallation From 79cfba530cb8c1c70a8017a4ea22fe0058834a59 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Wed, 27 Nov 2024 09:44:21 +0100 Subject: [PATCH 259/319] DOCS-4447: Update SITE information with GROUPS --- api/multisafepay-api/getsite.md | 4 ++-- api/multisafepay-api/updatesite.md | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/api/multisafepay-api/getsite.md b/api/multisafepay-api/getsite.md index f26da2066..7f2e483ab 100644 --- a/api/multisafepay-api/getsite.md +++ b/api/multisafepay-api/getsite.md @@ -6,8 +6,8 @@ slug: getsite ## How to test -1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the site ID. +1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the website or terminal group ID. 3. Click **Try it!** ❗️ Never use a live API key! diff --git a/api/multisafepay-api/updatesite.md b/api/multisafepay-api/updatesite.md index d4ef7cd08..2ea0a98d4 100644 --- a/api/multisafepay-api/updatesite.md +++ b/api/multisafepay-api/updatesite.md @@ -6,10 +6,11 @@ slug: updatesite ## How to test -1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the site ID. +1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the website or terminal group ID. 3. Click **Try it!** + ❗️ Never use a live API key! 💬  For support, email \ No newline at end of file From b3f894b73172751942869f8713f0b79fa58b2ac6 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Wed, 27 Nov 2024 09:54:10 +0100 Subject: [PATCH 260/319] Revert "DOCS-4447: Update SITE information with GROUPS" This reverts commit 79cfba530cb8c1c70a8017a4ea22fe0058834a59. --- api/multisafepay-api/getsite.md | 4 ++-- api/multisafepay-api/updatesite.md | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/api/multisafepay-api/getsite.md b/api/multisafepay-api/getsite.md index 7f2e483ab..f26da2066 100644 --- a/api/multisafepay-api/getsite.md +++ b/api/multisafepay-api/getsite.md @@ -6,8 +6,8 @@ slug: getsite ## How to test -1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the website or terminal group ID. +1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the site ID. 3. Click **Try it!** ❗️ Never use a live API key! diff --git a/api/multisafepay-api/updatesite.md b/api/multisafepay-api/updatesite.md index 2ea0a98d4..d4ef7cd08 100644 --- a/api/multisafepay-api/updatesite.md +++ b/api/multisafepay-api/updatesite.md @@ -6,11 +6,10 @@ slug: updatesite ## How to test -1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the website or terminal group ID. +1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the site ID. 3. Click **Try it!** - ❗️ Never use a live API key! 💬  For support, email \ No newline at end of file From 420912320c691d28e64c03c734d564314a87d3e1 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:45:17 +0100 Subject: [PATCH 261/319] DOCS-4463: Release of 3.7.0. Magento 1 plugin (#3183) --- content/integrations/magento-1.md | 2 +- .../magento1/Plugin_Magento_3.7.0.zip | Bin 0 -> 1044431 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 static/plugin-downloads/magento1/Plugin_Magento_3.7.0.zip diff --git a/content/integrations/magento-1.md b/content/integrations/magento-1.md index 03a76c321..a583bf711 100755 --- a/content/integrations/magento-1.md +++ b/content/integrations/magento-1.md @@ -9,7 +9,7 @@ slug: 'magento-1' --- -Download +Download > ⚠️ Action required > diff --git a/static/plugin-downloads/magento1/Plugin_Magento_3.7.0.zip b/static/plugin-downloads/magento1/Plugin_Magento_3.7.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..8ba2469f61be92de83f68cdb3c58d87f1d5a7b24 GIT binary patch literal 1044431 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

I{-haykZXA2h9`a0$l$ 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%0D>g9Z?VTGDv@-AF#GL2CvD~rO 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
-Download +Download Source code From 5682d206770bab1a23df9e389774f30edbd334c9 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Fri, 29 Nov 2024 13:04:35 +0100 Subject: [PATCH 263/319] DOCS-4463: Update the changelog in the Magento 1 document (#3185) --- content/integrations/magento-1.md | 12 ++++++++++++ wordlist.txt | 2 ++ 2 files changed, 14 insertions(+) diff --git a/content/integrations/magento-1.md b/content/integrations/magento-1.md index a583bf711..1aeb431ac 100755 --- a/content/integrations/magento-1.md +++ b/content/integrations/magento-1.md @@ -21,6 +21,18 @@ slug: 'magento-1' Changelog
+**3.7.0** +Release date: Nov. 28th, 2024 + +### Changed ++ DAVAMS-796: Rebrand Afterpay-Riverty Logo ++ DAVAMS-744: Rebranding in3 B2C + +### Fixed ++ PLGMAGONE-771: Fix surcharges where percentage not applied when fixed amount is 0 + +*** + **3.6.0** Release date: Oct. 16th, 2023 diff --git a/wordlist.txt b/wordlist.txt index d3286d736..21e2cbc21 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -341,6 +341,8 @@ Qwindo REFUNDDESTINATION RESTful Rabobank +Rebrand +Rebranding Regio Registratie Registreer From 38703cdea1f31c1fc809ec894433b65f94145e48 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 3 Dec 2024 11:07:23 +0100 Subject: [PATCH 264/319] DOCS-4215: Payment Component; information about 'payment_data' (#3184) * Revert "DOCS-4447: Update SITE information with GROUPS" This reverts commit 79cfba530cb8c1c70a8017a4ea22fe0058834a59. * DOCS-4215: Payment Component; information about 'payment_data' --- api/multisafepay-api/getsite.md | 4 ++-- api/multisafepay-api/updatesite.md | 5 ++--- content/checkout/single.md | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/api/multisafepay-api/getsite.md b/api/multisafepay-api/getsite.md index 7f2e483ab..f26da2066 100644 --- a/api/multisafepay-api/getsite.md +++ b/api/multisafepay-api/getsite.md @@ -6,8 +6,8 @@ slug: getsite ## How to test -1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the website or terminal group ID. +1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the site ID. 3. Click **Try it!** ❗️ Never use a live API key! diff --git a/api/multisafepay-api/updatesite.md b/api/multisafepay-api/updatesite.md index 2ea0a98d4..d4ef7cd08 100644 --- a/api/multisafepay-api/updatesite.md +++ b/api/multisafepay-api/updatesite.md @@ -6,11 +6,10 @@ slug: updatesite ## How to test -1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the website or terminal group ID. +1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the site ID. 3. Click **Try it!** - ❗️ Never use a live API key! 💬  For support, email \ No newline at end of file diff --git a/content/checkout/single.md b/content/checkout/single.md index 5ef7fbbce..4781378c0 100644 --- a/content/checkout/single.md +++ b/content/checkout/single.md @@ -308,6 +308,23 @@ Use the `createOrder()` function to pass the `orderData` to your server. Create an <> from your server, appending the `payment_data` collected from the payment component UI to the order data. +#### Example + +```json + { + "type": "direct", + "order_id": "test_order_id", + "currency": "EUR", + "amount": 100, + "description": "Test Order Description", + "payment_data": + { + "payload":"payment_component_method_response", + "gateway": "CREDITCARD", + } + } +``` + See API reference – [Create order](/reference/createorder/) > Payment component. ## Redirect the customer From 0ab9478f7bb83b398cbcc30ab5ee61354a93d047 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Tue, 3 Dec 2024 11:19:27 +0100 Subject: [PATCH 265/319] Merge branch 'master' of https://github.com/MultiSafepay/docs From bdae2711ffc6808fdf6a739323d2b1f26a538041 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 3 Dec 2024 11:52:45 +0100 Subject: [PATCH 266/319] DOCS-4447: Update SITE information with GROUPS (#3180) * DOCS-4447:Update SITE information with GROUPS * DOCS-4447: Update SITE information with GROUPS * Automated external URL lint. * DOCS-4447: Update SITE information with GROUPS * DOCS-4447: Update SITE information with GROUPS * DOCS-4447: Update SITE information with GROUPS --------- Co-authored-by: github-actions[bot] --- api/multisafepay-api/listtransactions.md | 6 +++--- api/multisafepay-api/updatesite.md | 7 ++++--- content/getting-started/sites.md | 14 +++++++++++--- content/payment-management/webhook.md | 14 ++++++++++---- content/point-of-sale/smartpos-activation.md | 2 +- content/point-of-sale/traditional-ctap.md | 2 +- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/api/multisafepay-api/listtransactions.md b/api/multisafepay-api/listtransactions.md index 0918f3665..ef25479a0 100644 --- a/api/multisafepay-api/listtransactions.md +++ b/api/multisafepay-api/listtransactions.md @@ -6,9 +6,9 @@ slug: listtransactions ## How to test -1. Under **Authentication** > **Query**, enter: - - To list all transactions for your **account**, your account API key from your **TEST** account. - - To list all transactions for your **site**, your relevant site [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +1. Under **Authentication** > **Query**: + - Enter your **TEST** account API key to list all transactions for your **account**. To get your TEST account API key, email . + - Enter the relevant website or terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account to list all transactions for a specific **website** or **terminal group**. 2. Click **Try it!** ❗️ Never use a live API key! diff --git a/api/multisafepay-api/updatesite.md b/api/multisafepay-api/updatesite.md index d4ef7cd08..6e0f3ccf7 100644 --- a/api/multisafepay-api/updatesite.md +++ b/api/multisafepay-api/updatesite.md @@ -6,9 +6,10 @@ slug: updatesite ## How to test -1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. -2. Under **Path params**, enter the site ID. -3. Click **Try it!** + +1. Under **Authentication** > **Query**, enter a website or a terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +2. Under **Path params**, enter the website or terminal group ID. +3. Click **Try it!** ❗️ Never use a live API key! diff --git a/content/getting-started/sites.md b/content/getting-started/sites.md index 8f4962e87..78c899cae 100644 --- a/content/getting-started/sites.md +++ b/content/getting-started/sites.md @@ -129,11 +129,19 @@ To generate a portable network graphic (PNG) of a payment method logo to display ## Site ID, API key, and security code -To view the site ID, API key, and security code for a site: +To view the ID, API key, and security code for a website: 1. Sign in to your live or test MultiSafepay dashboard. -2. Go to **Sites**, and then click the relevant site. -3. The site ID, API key, and security code appears in the top-right corner of your profile. +2. Go to **Websites**, and then click on the relevant website. +3. You can find the website ID, API key, and security code in the top-right corner of the page. + +To view the ID and API key for a terminal group: + +1. Sign in to your live or test MultiSafepay dashboard. +2. Go to **Devices** > **Terminals**. +3. Click on **Manage groups**. +4. A list of all available terminal groups will be displayed, showing the ID and API key for each group. + ## Specify company name diff --git a/content/payment-management/webhook.md b/content/payment-management/webhook.md index 2232e4dbf..bebe2761c 100644 --- a/content/payment-management/webhook.md +++ b/content/payment-management/webhook.md @@ -51,11 +51,17 @@ You can configure the webhook endpoint at: Site level
-1. Sign in to your MultiSafepay account . -2. Go to **Sites**, and then click the relevant site. -3. On the **Site profile** page, under **Functionality**, in the **Webhook URL** field, set your webhook endpoint. +For websites: -**⚠️ Note:*** These instructions apply to your `notification_url` for order updates. For [FastCheckout shipping options updates](/docs/fastcheckout-shipping-options), see Order level below. +1. Sign in to your MultiSafepay dashboard . +2. Go to **Websites**, and then click the relevant website. +3. Under **Functionality** > **Webhook URL**, set your webhook endpoint. + +**⚠️ Note:** These instructions apply to your `notification_url` for order updates. For [FastCheckout shipping options updates](/docs/fastcheckout-shipping-options), see Order level below. + +For terminal groups: + +You can add a **Webhook URL** for a **terminal group** from your MultiSafepay dashboard . For more information, see **Activation** - SmartPOS activation or Traditional (CTAP) terminal , depending on your terminal.

QT?z2RvYE$(6YxC(mdB&yyEqQt>($;_5#j!Oi*a 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 Date: Thu, 28 Nov 2024 17:23:18 +0100 Subject: [PATCH 262/319] DOCS-4464: Release of 5.15.0. PrestaShop (#3182) --- content/integrations/prestashop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/prestashop.md b/content/integrations/prestashop.md index 96b135a2e..9338896b2 100644 --- a/content/integrations/prestashop.md +++ b/content/integrations/prestashop.md @@ -12,7 +12,7 @@ slug: 'prestashop'

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 z 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

diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 11a285965..20372d5d1 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -40,7 +40,7 @@ To activate a SmartPOS terminal, follow these steps: 4. Below the **<> name**, click **Add new group**, or select a previously created group. 5. Fill out the following fields: - **New group name**. -- **Webhook URL** (optional). +- **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. - **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. To add new images, upload them first via Settings > Files. diff --git a/content/point-of-sale/traditional-ctap.md b/content/point-of-sale/traditional-ctap.md index d6ebf2684..342b89f98 100644 --- a/content/point-of-sale/traditional-ctap.md +++ b/content/point-of-sale/traditional-ctap.md @@ -35,7 +35,7 @@ Traditional (CTAP) is a terminal that has passed **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**. A unique Terminal ID will be automatically generated. **💡 Tip!** you can modify TID until manually via Devices > Terminals > TID until transactions are processed. The name can still be modified after processing transactions. From ae90f296a61fc1774c2ed96d97fa6040b3bf2152 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 3 Dec 2024 12:08:58 +0100 Subject: [PATCH 267/319] DOCS-4441: Include troubleshooting cards / card payment errors. (#3186) * DOCS-4441: Include troubleshooting cards / card payment errors * Automated external URL lint. * DOCS-4441: wrong branch. * DOCS-4441:Include troubleshooting cards / card payment errors * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- api/general/error-reference.md | 2 ++ content/developer/troubleshooting.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/api/general/error-reference.md b/api/general/error-reference.md index 4393db44b..556f4c612 100644 --- a/api/general/error-reference.md +++ b/api/general/error-reference.md @@ -182,6 +182,8 @@ Check that the: - Customer details are correct - Customer details match the credit details +**💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the decline reason. + --- ### 1024: For Cloudflare – Incorrect customer IP address diff --git a/content/developer/troubleshooting.md b/content/developer/troubleshooting.md index 97e325230..2a35aec81 100644 --- a/content/developer/troubleshooting.md +++ b/content/developer/troubleshooting.md @@ -182,6 +182,8 @@ Check that the: - Customer details are correct - Customer details match the credit details +**💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the decline reason. + --- ### 1024: For Cloudflare – Incorrect customer IP address From ea39ef87b17a3e21d71d1deb89909cff07dd3aaf Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 3 Dec 2024 16:48:27 +0100 Subject: [PATCH 268/319] DOCS-4305: Fix Magento Vault section (#3188) --- content/integrations/magento-2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md index 84be7c0ab..e6b315af8 100755 --- a/content/integrations/magento-2.md +++ b/content/integrations/magento-2.md @@ -261,7 +261,7 @@ You must: How to activate Magento Vault
-To activate Magento Vault, and enable [recurring payments](/docs/recurring-payments), email a request to . +To activate Magento Vault, and enable [recurring payments](/docs/recurring-payments), email a request to .
From ab5c81eb03c878685ed58db9e1d28ce492ac2810 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 11 Dec 2024 09:38:25 +0100 Subject: [PATCH 269/319] =?UTF-8?q?DOCS-4477:=20Update=20instructions=20re?= =?UTF-8?q?funds=20MB=20way.=20Added=20instructions=20to=20=E2=80=A6=20(#3?= =?UTF-8?q?191)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DOCS-4477: Update instructions refunds MB way. Added instructions to Multibanco --- content/payment-methods/mbway.md | 25 ++++++++++--------------- content/payment-methods/multibanco.md | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/content/payment-methods/mbway.md b/content/payment-methods/mbway.md index 4e1ed5476..b5a0dddbe 100644 --- a/content/payment-methods/mbway.md +++ b/content/payment-methods/mbway.md @@ -108,31 +108,26 @@ You can still update the customer's phone number on the [payment pages](/docs/pa ## Refunds -You can process refunds in your dashboard **or** via API. +You can process refunds in your dashboard. + +The customer must provide you with their IBAN to process refunds via bank transfer.
How to refund an order
-**In your dashboard** - 1. Sign in to your MultiSafepay dashboard . 2. Go to **Transactions** > **Transaction overview**, and then click the relevant transaction. 3. On the **Transaction details** page, click **Refund order**. -4. In the **Reason / Description** field, enter the reason for the refund or a description of what happened with the order, and then click **Complete**. -5. In the **Comment** field, enter any additional information. -6. In the **Amount** fields, enter the amount to refund. -7. Click **Continue**. -8. Review the **Refund confirmation**, and then click **Confirm**. - -**Via the API** - -See API reference – [Refund order](/reference/refundorder). - -*** +4. In the **Account Holder Name** field, enter the customer's full name. +5. In the **IBAN** field, enter the customer's IBAN. +6. In the **Reason / Description** field, enter the reason for the refund or a description of what happened with the order, and then click **Complete**. +7. In the **Comment** field, enter any additional information. +8. In the **Amount** fields, enter the amount to refund. +9. Click **Continue**. +10. Review the **Refund confirmation**, and then click **Confirm**.
- --- [block:html] diff --git a/content/payment-methods/multibanco.md b/content/payment-methods/multibanco.md index 1eb40b227..c0857c4b5 100644 --- a/content/payment-methods/multibanco.md +++ b/content/payment-methods/multibanco.md @@ -120,6 +120,22 @@ You can process refunds in your dashboard. The customer must provide you with their IBAN to process refunds via bank transfer. +
+How to refund an order +
+ +1. Sign in to your MultiSafepay dashboard . +2. Go to **Transactions** > **Transaction overview**, and then click the relevant transaction. +3. On the **Transaction details** page, click **Refund order**. +4. In the **Account Holder Name** field, enter the customer's full name. +5. In the **IBAN** field, enter the customer's IBAN. +6. In the **Reason / Description** field, enter the reason for the refund or a description of what happened with the order, and then click **Complete**. +7. In the **Comment** field, enter any additional information. +8. In the **Amount** fields, enter the amount to refund. +9. Click **Continue**. +10. Review the **Refund confirmation**, and then click **Confirm**. + +
--- [block:html] From 8c70db0f41cfd110d8f45cbe476c8fe871f2bab4 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Wed, 11 Dec 2024 16:47:36 +0100 Subject: [PATCH 270/319] DOCS-4479: Release of 1.7.1 of the CS Cart plugin (#3193) --- content/integrations/cs-cart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/cs-cart.md b/content/integrations/cs-cart.md index 64c881552..7e9abe25b 100755 --- a/content/integrations/cs-cart.md +++ b/content/integrations/cs-cart.md @@ -11,7 +11,7 @@ slug: 'cs-cart'
-Download +Download Source code From 6baeb1348fa4a767cfaee8f9b286417ff4819927 Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 12 Dec 2024 08:53:09 +0100 Subject: [PATCH 271/319] Shopware 6 Updating the version compatibility list (#3192) --- 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 83b104f6a..1ed2dad19 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, 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 +- Shopware 6.6.x.x +- Tested on Shopware 6.6.3.0 and PHP 8.1–8.2 ## Installation and configuration From d6d9278fdcd95775cf1cd16e1c8dca666263d630 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 12 Dec 2024 12:01:20 +0100 Subject: [PATCH 272/319] DOCS-4461: Improvements to Shopify documentation (#3181) --- ...hopify-beta.md => shopify-payment-apps.md} | 87 +++++++++--------- content/integrations/shopify.md | 4 + wordlist.txt | 88 +++++++++---------- 3 files changed, 94 insertions(+), 85 deletions(-) rename content/integrations/{shopify-beta.md => shopify-payment-apps.md} (72%) diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-payment-apps.md similarity index 72% rename from content/integrations/shopify-beta.md rename to content/integrations/shopify-payment-apps.md index 378565d86..4fcf4100c 100755 --- a/content/integrations/shopify-beta.md +++ b/content/integrations/shopify-payment-apps.md @@ -1,25 +1,28 @@ --- -title: "Shopify (Beta)" +title: "Shopify" category: 62962dd7e272a6002ebbbbc5 order: 16 hidden: false parentDoc: 62a9a54abde254065ee92a5c -excerpt: "Technical manual for MultiSafepay's free app." +excerpt: "Technical manual for MultiSafepay's Shopify Payments Apps." slug: 'shopify-beta' --- # Prerequisites -You will need a [MultiSafepay account](/docs/getting-started-guide/). +- [MultiSafepay account](/docs/getting-started-guide/) registered in one of the following countries: The Netherlands, Belgium, Spain, Italy, Germany. +- A MultiSafepay [site API key](/docs/sites#site-id-api-key-and-security-code). +- Country restrictions may apply per payment app. # Installation -To install or migrate, follow these steps: +To install Shopify Payments Apps, 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: +1. Sign in to your Shopify backend. +2. Ensure that your Shopify user has the permissions to install new apps. +3. Check that the payment methods you want to use in Shopify are [activated for your MultiSafepay account](/docs/payment-methods). +4. Select the desired payment methods, and install their apps using one or more of the following links: - American Express - Amazon Pay - Bancontact @@ -36,35 +39,23 @@ To install or migrate, follow these steps: - MyBank - Visa - WeChat Pay -5. Click on "Install" button. +5. Click "Install". 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** +7. On your admin page, click **Install**. +8. Under **Settings**: + - **MultiSafepay website API Key**: Enter your [site API key](/docs/sites#site-id-api-key-and-security-code). + - **MultiSafepay Environment**: Turn on if you are using a Test API key. Turn off for a Live API key. +9. Click **Save**. +10. Under **Payment configuration** click 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.
-> ⚠️ About API key and Selected environment +> ⚠️ About API key and selected environment > > For all the above-listed MultiSafepay payment apps, the same API key, and the selected environment (test or live) will be used. Once you change the API key in a payment app, or the environment selected, it is automatically changed for the other active apps associated with your shop. -
---- - -# 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. -
--- @@ -73,25 +64,33 @@ To uninstall, follow these steps: ## Abandoned checkouts -MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supported because Shopify offers a similar native service. +MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supported. -See Shopify – Recovering abandoned checkouts . +Shopify offers a similar native service. See Shopify – Recovering abandoned checkouts . ## 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. +Configure settings for this payment app: activate the payment method, switch between Shopify Test / Live mode. -## Currencies +In **Settings** > **Checkout**, you can configure which customer details to include in your order request: -Payments are processed only in the default currency of the webshop. +- Customer contact method: We recommend setting up the checkout by using the email as the primary customer contact method. +- Customer information: We recommend setting up the shipping address phone number as required. -## Reconciliation +Note: for some payment methods, certain customer data is required, e.g. phone number is required for Amazon Pay payments. -To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID. +## Currencies + +Via MultiSafepay, you can only accept payments in **EUR**. +Ensure the default currency is set to EUR under **Settings** > **General** > **Store defaults** > **Currencies to display**. ## Payment capture method -Payment capture method needs to be set to **Automatically at checkout** in your Shopify settings. This can be set up in Settings > Payments > Payment capture method. +Payment capture method will be forced to **Automatically at checkout** when a customer submits the order request via one of these apps. + +## Reconciliation + +To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID. ## Refunds @@ -104,11 +103,9 @@ Payment capture method needs to be set to **Automatically at checkout** in your 1. Sign in to your Shopify backend. 2. Go to **Orders**. 3. Select the order you want to refund. -4. Click on the **Refund** button. -- Enter the refund amount. -- Click on the **Refund** button. -4. A refund request is sent to MultiSafepay. The refund status is updated in your Shopify backend as **pending**. -5. The refund is processed by MultiSafepay. The refund status is updated in your Shopify backend as **refunded**. +4. Click **Refund**, enter the refund amount, and confirm. +5. A refund request is sent to MultiSafepay. The refund status is updated in your Shopify backend as **pending**. +6. The refund is processed by MultiSafepay. The refund status is updated in your Shopify backend as **refunded**. **Notes** @@ -119,6 +116,15 @@ Payment capture method needs to be set to **Automatically at checkout** in your
+# 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 **Uninstall** button. + --- ## Troubleshooting @@ -138,6 +144,7 @@ If you experience issues with order statuses, or refund statuses not updating, w 5. Include the payment ID when reporting your issue to MultiSafepay support. + --- [block:html] diff --git a/content/integrations/shopify.md b/content/integrations/shopify.md index 387cadabd..66e73e79d 100755 --- a/content/integrations/shopify.md +++ b/content/integrations/shopify.md @@ -9,6 +9,10 @@ slug: 'shopify' --- +> ℹ More information +> +> Discover the [new version of our Shopify payments apps](/docs/shopify-payment-apps) and streamline payment management for your Shopify store. With access to over 15 payment methods through multiple gateways, provide your customers with a secure, personalized, and versatile checkout experience. Grow your business with a solution designed to support scalability and meet the demands of a global audience. + # Prerequisites You will need a [MultiSafepay account](/docs/getting-started-guide/). diff --git a/wordlist.txt b/wordlist.txt index 21e2cbc21..3fe0b6692 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -1,5 +1,3 @@ -aan -Acquiris ABN ABNA ACA @@ -25,6 +23,7 @@ ARNs ASN AUD AccountID +Acquiris Actuals Addons Afletteren @@ -56,7 +55,6 @@ BKR BNO BNPL BRL -Brouwmarkt BVK BVKPayment Backend @@ -73,25 +71,21 @@ Bevestigen Biercheque Birthdate BitBag +Bizum Bloemen Bloemencadeaukaart Boeken Boekenbon Boekhouden +Brouwmarkt Burgerlijk -cadeau -cadeaubon -cadeaucheque CAMT CCV -CVV CCVshop CEST CET CFDs -Changs CHARGEBACK -chèque CHF CLI CLP @@ -106,6 +100,7 @@ CSV CTAP CURRENTDATE CVC +CVV CZK Cadeau Cadeaubon @@ -115,15 +110,15 @@ Cartes Casper Cesena Changelog -Cloudflare +Changs CloudSuite +Cloudflare Coppermine Creditdebit Credito Cryptocurrencies Cryptocurrency Cryptographic -CTAP DANKORT DAVAMS DELIVERYCARRIER @@ -157,8 +152,6 @@ Dropdown Duopact Dynamicweb EBA -eco -ecocheque EEA EINVOICE EPS @@ -172,9 +165,7 @@ Edenred's Edoburu Electronische Electrosex -favicon FERBUY -Fi FI FROMNAME Fashioncheque @@ -183,6 +174,7 @@ FastCheckout FastCheckout's FastCheckoutKit FerBuy +Fi Fietsenbon Financials Fooman @@ -210,25 +202,24 @@ IBAN IBANs ICT ILS -Incasso ING INR IPEK IPs ISK +Incasso Instellingen Intersolve -Jewelstore JPY JSON +Jewelstore Jong Joomla -Kelly Fashion Giftcard KBC KLARNA -Kosten KRW KYC +Kelly Fashion Giftcard Klantenservice Klarna's Klus @@ -236,20 +227,22 @@ Knab Kopen KopieID Koppeling +Kosten Krediet LVP -Lanschot +Lanschot Laravel Liefcadeaukaart Lightspeed LogiVert -maaltijdcheques +MCC MCC MERCHANTCITY MERCHANTCOUNTRY MERCHANTLOGOHTML MERCHANTNAME MERCHANTPHONESUPPORT +MERCHANTPO MERCHANTSUPPORT MISTERCASH MOTO @@ -265,20 +258,18 @@ Maintransaction Mastercard Mastercard's Mc -MCC -MERCHANTPO Mijn MijnDomein Mijnwebwinkel MisterCash Monizze Monizze's -Multibanco MultiFactor MultiSafepay MultiSafepay's MultiSafepayClient MultiSafepayImportedRows +Multibanco MyBank NL NOK @@ -289,9 +280,8 @@ Nationale verwen cadeaubon Nederland Nname NodeJS -OrderRequest -ORDERSTATUS OFBiz +ORDERSTATUS ORRTIZ Odoo Offerte @@ -299,11 +289,11 @@ Ohmygood Omnipay OneStepCheckout Ontvangst -onze OpenCart OrderRequest -OroCommerce OrderRequest +OrderRequest +OroCommerce OsCommerce PAYAFTER PCI @@ -331,8 +321,6 @@ Picqer Popolare Postbus Postepay -prefinances -prefinancing Premarc PrestaShop Proef @@ -346,7 +334,6 @@ Rebranding Regio Registratie Registreer -repas Revolut Riverty Riverty's @@ -362,7 +349,6 @@ SGD SHA SITENAME SITEURL -SmartPOS SMS SNS SRC @@ -376,8 +362,9 @@ Shopify Shoptrader Shopware SmartPOS -Smartpad +SmartPOS SmartPad +Smartpad SnelKoppeling SnelStart Sodexo @@ -419,7 +406,7 @@ VEF VIBAN VIBANs VVV -Van +Van Venia Verificatiecode Verkooppunten @@ -430,8 +417,9 @@ Volksbank Voordeel Vue Vuur -WIP WIK +WIP +WLAN WWFT WeChat Webshopgiftcard @@ -440,7 +428,6 @@ Wi Wijn Wijncadeau Winkelcheque -WLAN WooCommerce Wordpress Wwft @@ -458,6 +445,7 @@ ZV ZenCart ZilverCMS Zinia +aan aangeleverd aanvragen abonnement @@ -485,6 +473,9 @@ bon boolean br bunq +cadeau +cadeaubon +cadeaucheque callout cancelled cardOnFile @@ -494,6 +485,7 @@ chargeback chargebacks checkboxes cheque +chèque config consumentenkrediet contactless @@ -503,6 +495,7 @@ cust customizable cyberattack cyberlocker +dCVV de decrypts degrotespeelgoedwinkel @@ -510,14 +503,16 @@ derden di dotpay dropdown -dCVV +eco +ecocheque ecommerce eps erotiekbon -fff facto fastcheckout favicon +favicon +fff fijncadeau financials financieren @@ -547,14 +542,17 @@ kurt lastname li lookups +maaltijdcheques maand magento +maskedId merchanttransactionid middleware mijn minmax msi multisafepay +multisafepayRestore myShop naar nb @@ -575,6 +573,7 @@ onboarded onboarding ons onvalidatemerchant +onze oty params passcode @@ -582,12 +581,16 @@ pauzed paymentmethod png pre +prefinances +prefinancing px readme rebranded +repas reputational rgb rgba +scalability signup smartcard sofort @@ -608,6 +611,7 @@ ul uncaptured unencrypted url +urls utm venia verder @@ -621,16 +625,10 @@ webshop webshops witwassen www -xml xCore xcframework +xml yireo youtube yukiworks zoeken -maskedId -multisafepayRestore -urls -Bizum - - From 089bf3216113c192d3a07c6a564541f092695c87 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 12 Dec 2024 12:15:54 +0100 Subject: [PATCH 273/319] DOCS-4461: Change URL of Shopify payment apps (#3194) --- content/integrations/shopify-payment-apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/shopify-payment-apps.md b/content/integrations/shopify-payment-apps.md index 4fcf4100c..4f597a55b 100755 --- a/content/integrations/shopify-payment-apps.md +++ b/content/integrations/shopify-payment-apps.md @@ -5,7 +5,7 @@ order: 16 hidden: false parentDoc: 62a9a54abde254065ee92a5c excerpt: "Technical manual for MultiSafepay's Shopify Payments Apps." -slug: 'shopify-beta' +slug: 'shopify-payment-apps' --- From 58ff06e433bf59478ab5572688e2a6c152f7cba8 Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 12 Dec 2024 12:20:37 +0100 Subject: [PATCH 274/319] DOCS-4461: Fix title of the Shopify payment apps page (#3195) --- content/integrations/shopify-payment-apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/shopify-payment-apps.md b/content/integrations/shopify-payment-apps.md index 4f597a55b..a372e270d 100755 --- a/content/integrations/shopify-payment-apps.md +++ b/content/integrations/shopify-payment-apps.md @@ -1,5 +1,5 @@ --- -title: "Shopify" +title: "Shopify Payment Apps" category: 62962dd7e272a6002ebbbbc5 order: 16 hidden: false From 25461ab90415f2f8dcb080557c8d1cf08f391f8e Mon Sep 17 00:00:00 2001 From: Daniel Civit Date: Thu, 19 Dec 2024 14:03:25 +0100 Subject: [PATCH 275/319] DOCS-4490: Add link of the Multibanco Shopify app (#3203) --- content/integrations/shopify-payment-apps.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/integrations/shopify-payment-apps.md b/content/integrations/shopify-payment-apps.md index a372e270d..0a38bd479 100755 --- a/content/integrations/shopify-payment-apps.md +++ b/content/integrations/shopify-payment-apps.md @@ -36,6 +36,7 @@ To install Shopify Payments Apps, follow these steps: - Maestro - MB WAY - Mastercard + - Multibanco - MyBank - Visa - WeChat Pay From 1781e6141bf2264636c81bcf9f649bf095e5933e Mon Sep 17 00:00:00 2001 From: Miguel-MultiSafepay <104830395+Miguel-MultiSafepay@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:49:54 +0100 Subject: [PATCH 276/319] DOCS-4491: Release of 1.7.2 of the CS-Cart plugin (#3204) --- content/integrations/cs-cart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/integrations/cs-cart.md b/content/integrations/cs-cart.md index 7e9abe25b..30128a01e 100755 --- a/content/integrations/cs-cart.md +++ b/content/integrations/cs-cart.md @@ -11,7 +11,7 @@ slug: 'cs-cart'
-Download +Download Source code From b0e6c35faeba9e10a84006b4ecfd9f103ec08dd6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 20 Dec 2024 10:58:06 +0100 Subject: [PATCH 277/319] =?UTF-8?q?DOCS-4450:=20Communication=20/=20Info?= =?UTF-8?q?=20update=20iDeal=20-=20payment=20methods=20&=20issu=E2=80=A6?= =?UTF-8?q?=20(#3205)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DOCS-4450: Communication / Info update iDeal - payment methods & issuer endpoints --- api/multisafepay-api/listidealissuers.md | 6 ++++++ api/multisafepay-api/listpaymentmethods.md | 10 +++++++++- content/payment-methods/ideal.md | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/api/multisafepay-api/listidealissuers.md b/api/multisafepay-api/listidealissuers.md index af5e7041c..a49217931 100644 --- a/api/multisafepay-api/listidealissuers.md +++ b/api/multisafepay-api/listidealissuers.md @@ -4,6 +4,12 @@ category: 62430422470152003dc86e53 slug: listidealissuers --- +### Update iDeal 2.0 + +> ⚠️ Note: +> +> Upon our migration to iDeal 2.0, the issuer is selected within the iDeal environment. The parameter `issuer_id` is no longer required for requests with type `direct`. + ## How to test 1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. diff --git a/api/multisafepay-api/listpaymentmethods.md b/api/multisafepay-api/listpaymentmethods.md index e4d8cc1b4..0b5828ce2 100644 --- a/api/multisafepay-api/listpaymentmethods.md +++ b/api/multisafepay-api/listpaymentmethods.md @@ -1,9 +1,17 @@ --- title: List payment methods category: 62430422470152003dc86e53 -slug: listpaymentmethods +slug: listpaymentmethods-1 --- +### Update iDeal 2.0 + +> ⚠️ Note: +> +> Upon our migration to iDeal 2.0, the issuer is selected within the iDeal environment. The parameter `issuer_id` is no longer required for requests with type `direct`. +> +> In the `additional_data` object, `issuers` will not be returned. + ## How to test 1. Under **Authentication** > **Bearer**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. diff --git a/content/payment-methods/ideal.md b/content/payment-methods/ideal.md index 7cc7d8dfd..5cbfaccef 100755 --- a/content/payment-methods/ideal.md +++ b/content/payment-methods/ideal.md @@ -16,10 +16,10 @@ slug: 'ideal' > 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. +> 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. +> The issuer is selected within the iDeal environment. The parameter `issuer_id` is no longer required for requests with type `direct`. 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 <>. From ea8d3dfc713535fb0e0f016a6d57114ace7f60f5 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 23 Dec 2024 15:50:30 +0100 Subject: [PATCH 278/319] DOCS-4497: Set update time for terminal app (#3206) --- content/point-of-sale/hardware-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/point-of-sale/hardware-setup.md b/content/point-of-sale/hardware-setup.md index 11bb770dc..161f884b4 100644 --- a/content/point-of-sale/hardware-setup.md +++ b/content/point-of-sale/hardware-setup.md @@ -134,9 +134,9 @@ Functionalities you can access as a partner through your Sunmi portal: ## Automatic installation and updates - Sign in to partner.sunmi.com. -- Configure the app to automatically update or choose a specific version. +- Configure the app to automatically update or choose a specific version. Select a specific time at which you want the app to be updated. - Set the app to install automatically when the POS terminal connects to a network. -- Choose the terminal models you want to apply these settings to +- Choose the terminal models you want to apply these settings to. ## Add your app to the Sunmi App Store From becd07e74fb76f64c3bb34e8ec621da661b35ccb Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 26 Dec 2024 16:04:12 +0100 Subject: [PATCH 279/319] DOCS-4420: add Beauty Cadeau gift card (#3210) --- api/general/gateway-ids.md | 1 + 1 file changed, 1 insertion(+) diff --git a/api/general/gateway-ids.md b/api/general/gateway-ids.md index c3aac1967..4f81d61b1 100644 --- a/api/general/gateway-ids.md +++ b/api/general/gateway-ids.md @@ -52,6 +52,7 @@ hidden: false | Amsterdam stadspas | `AMSGIFT` | | Baby Cadeaubon | `BABYCAD` | | Beautyandwellness | `BEAUTYWELL` | +| Beauty cadeau | `BEAUTYCAD` | | Bloemencadeaukaart | `BLOEMENCAD` | | Boekenbon | `BOEKENBON` | | Degrotespeelgoedwinkel | `DEGROTESPL` | From 328d4a63d188b4c3999262fb2b7b250560c6f7ba Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Mon, 30 Dec 2024 12:52:07 +0100 Subject: [PATCH 280/319] DOCS-4297: Add information about merchant validation URL for TEST environment --- content/integrations/shopify-beta.md | 101 ++++++++++++++++++++ content/payment-methods/apple-pay-direct.md | 37 +++++++ 2 files changed, 138 insertions(+) create mode 100644 content/integrations/shopify-beta.md diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md new file mode 100644 index 000000000..74fc5550b --- /dev/null +++ b/content/integrations/shopify-beta.md @@ -0,0 +1,101 @@ +--- +title: "Shopify (Beta)" +category: 62962dd7e272a6002ebbbbc5 +order: 16 +hidden: false +parentDoc: 62a9a54abde254065ee92a5c +excerpt: "Technical manual for MultiSafepay's free app." +slug: 'shopify-beta' +--- + + +# Prerequisites + +You will need a [MultiSafepay account](/docs/getting-started-guide/). + +# Installation + +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: + - American Express + - Amazon Pay + - Bancontact + - Card Payment + - CBC + - Direct debit + - iDEAL + - KBC + - Maestro + - MB WAY + - Mastercard + - Visa +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. +
+ +--- + +# 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 + +MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supported because Shopify offers a similar native service. + +See Shopify – Recovering abandoned checkouts . + +## 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. + +## Currencies + +Payments are processed only in the default currency of the webshop. + +## Reconciliation + +To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID. + +## Payment capture method + +Payment capture method needs to be set to **Automatically at checkout** in your Shopify settings. This can be set up in Settings > Payments > Payment capture method. + +## 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": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" +} +[/block] + +[Top of page](#) diff --git a/content/payment-methods/apple-pay-direct.md b/content/payment-methods/apple-pay-direct.md index 5b5cde2f3..41d47fbd9 100644 --- a/content/payment-methods/apple-pay-direct.md +++ b/content/payment-methods/apple-pay-direct.md @@ -233,6 +233,43 @@ To test, follow these steps: ✅   **Success!** The transaction is completed. +### Handling errors + +When working with the Apple Pay sandbox environment, make sure to use the **Sandbox Validation URL** when requesting an Apple Pay merchant session. + +#### Sandbox Validation URL + +``` +https://apple-pay-gateway-cert.apple.com/paymentservices/startSession +``` + +#### Production Validation URL + +``` +https://apple-pay-gateway.apple.com/paymentservices/startSession +``` + +Using the incorrect `validation_url` will result in an error: + +``` +[{"message": "Merchant validation error"}], 'message':'Validation failure', 'success':false}" +``` + + + +Make sure to use the correct **TEST URL**, along with the appropriate website **TEST API key**. Introduce the **Sanbox Validation URL**. + +#### Example + +```curl +curl -X POST " +-H "Authorization: Bearer " +-d '{ +"origin_domain": "originDomain", +"validation_url": "https://apple-pay-gateway-cert.apple.com/paymentservices/startSession" +}' +``` +
--- From a0aa8a0d507e3271134a34c771dd23993bc3cff7 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Mon, 30 Dec 2024 13:04:05 +0100 Subject: [PATCH 281/319] reverse changes to master --- content/integrations/shopify-beta.md | 101 -------------------- content/payment-methods/apple-pay-direct.md | 37 ------- 2 files changed, 138 deletions(-) delete mode 100644 content/integrations/shopify-beta.md diff --git a/content/integrations/shopify-beta.md b/content/integrations/shopify-beta.md deleted file mode 100644 index 74fc5550b..000000000 --- a/content/integrations/shopify-beta.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: "Shopify (Beta)" -category: 62962dd7e272a6002ebbbbc5 -order: 16 -hidden: false -parentDoc: 62a9a54abde254065ee92a5c -excerpt: "Technical manual for MultiSafepay's free app." -slug: 'shopify-beta' ---- - - -# Prerequisites - -You will need a [MultiSafepay account](/docs/getting-started-guide/). - -# Installation - -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: - - American Express - - Amazon Pay - - Bancontact - - Card Payment - - CBC - - Direct debit - - iDEAL - - KBC - - Maestro - - MB WAY - - Mastercard - - Visa -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. -
- ---- - -# 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 - -MultiSafepay's [Second Chance](/docs/second-chance/) feature is **not** supported because Shopify offers a similar native service. - -See Shopify – Recovering abandoned checkouts . - -## 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. - -## Currencies - -Payments are processed only in the default currency of the webshop. - -## Reconciliation - -To match orders in your accounting system with your MultiSafepay account, use the MultiSafepay order ID and the Shopify payment ID. - -## Payment capture method - -Payment capture method needs to be set to **Automatically at checkout** in your Shopify settings. This can be set up in Settings > Payments > Payment capture method. - -## 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": "
\n

\n 💬\n

Support

\n

\n

Contact MultiSafepay:

\n \n
" -} -[/block] - -[Top of page](#) diff --git a/content/payment-methods/apple-pay-direct.md b/content/payment-methods/apple-pay-direct.md index 41d47fbd9..5b5cde2f3 100644 --- a/content/payment-methods/apple-pay-direct.md +++ b/content/payment-methods/apple-pay-direct.md @@ -233,43 +233,6 @@ To test, follow these steps: ✅   **Success!** The transaction is completed. -### Handling errors - -When working with the Apple Pay sandbox environment, make sure to use the **Sandbox Validation URL** when requesting an Apple Pay merchant session. - -#### Sandbox Validation URL - -``` -https://apple-pay-gateway-cert.apple.com/paymentservices/startSession -``` - -#### Production Validation URL - -``` -https://apple-pay-gateway.apple.com/paymentservices/startSession -``` - -Using the incorrect `validation_url` will result in an error: - -``` -[{"message": "Merchant validation error"}], 'message':'Validation failure', 'success':false}" -``` - - - -Make sure to use the correct **TEST URL**, along with the appropriate website **TEST API key**. Introduce the **Sanbox Validation URL**. - -#### Example - -```curl -curl -X POST " --H "Authorization: Bearer " --d '{ -"origin_domain": "originDomain", -"validation_url": "https://apple-pay-gateway-cert.apple.com/paymentservices/startSession" -}' -``` -
--- From 32c33c86163d323a4dbdf73fd362a45702c94115 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 31 Dec 2024 11:24:37 +0100 Subject: [PATCH 282/319] DOCS-4467: in3 order expiry (#3214) * DOCS-4467: in3 order expiry * DOCS-4467: in3 order expiry * DOCS-4467: in3 order expiry * DOCS-4467: in3 order expiry --- 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 4a24753f2..daef87689 100644 --- a/content/payment-methods/in3.md +++ b/content/payment-methods/in3.md @@ -78,7 +78,7 @@ The table below sets out the <> and < - A `shopping_cart` object is required for all BNPL orders. See Recipes – Include shopping_cart in order . -- Transactions expire after 2 hours. +- iDEAL sends an expiration notification after approximately 2 days. Once we receive the notification, the transaction expires. - For <> orders, you must display your terms and conditions in your checkout. ### Ready-made integrations From 0dbe1190d2d7a37121d3594609d4cc2bf9b8d834 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 31 Dec 2024 13:39:57 +0100 Subject: [PATCH 283/319] DOCS-4248: Clarify auth bearer (#3216) * DOCS-4441: Include troubleshooting cards / card payment errors * Automated external URL lint. * DOCS-4248: Clarify auth bearer * DOCS-4248: Clarify auth bearer * DOCS-4248: Clarify auth bearer * DOCS-4248: Clarify auth bearer --------- Co-authored-by: github-actions[bot] --- api/general/error-reference.md | 4 ++++ api/multisafepay-api/createaffiliate.md | 9 +++++++++ content/developer/troubleshooting.md | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 api/multisafepay-api/createaffiliate.md diff --git a/api/general/error-reference.md b/api/general/error-reference.md index 556f4c612..b85433900 100644 --- a/api/general/error-reference.md +++ b/api/general/error-reference.md @@ -182,7 +182,11 @@ Check that the: - Customer details are correct - Customer details match the credit details +<<<<<<< HEAD **💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the decline reason. +======= +**💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the reason for the decline. +>>>>>>> 30f093744fe3101c455805012eec67440a287f7c --- ### 1024: For Cloudflare – Incorrect customer IP address diff --git a/api/multisafepay-api/createaffiliate.md b/api/multisafepay-api/createaffiliate.md new file mode 100644 index 000000000..e641c8237 --- /dev/null +++ b/api/multisafepay-api/createaffiliate.md @@ -0,0 +1,9 @@ +--- +title: Create affiliate +category: 62430422470152003dc86e53 +slug: createaffiliate +--- + +## Authentication + +This endpoint requires an account **API key**. To obtain your account **API key**, email \ No newline at end of file diff --git a/content/developer/troubleshooting.md b/content/developer/troubleshooting.md index 2a35aec81..688252f42 100644 --- a/content/developer/troubleshooting.md +++ b/content/developer/troubleshooting.md @@ -182,7 +182,7 @@ Check that the: - Customer details are correct - Customer details match the credit details -**💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the decline reason. +**💡 Tip!** For card payments, use the Get order request and check the response details to learn more about the decline reason. --- ### 1024: For Cloudflare – Incorrect customer IP address From 6285c61824469b5a869ab040cbaec0e6794b6547 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 7 Jan 2025 16:53:19 +0100 Subject: [PATCH 284/319] DOCS-4305: Fix Magento Vault section (#3218) * DOCS-4305: Fix Magento Vault section * DOCS-4305: Fix Magento Vault section From bc3c4c34b8bf2bfccfe502d1a978c7324bd78fac Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 8 Jan 2025 10:38:59 +0100 Subject: [PATCH 285/319] =?UTF-8?q?DOCS-4487:=20Limited=20Direct=20Debits?= =?UTF-8?q?=20per=20day=20(24=20hours).=20Added=20to=20card=20pa=E2=80=A6?= =?UTF-8?q?=20(#3215)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DOCS-4487: Limited Direct Debits per day (24 hours). Added to card payments as well --- content/payment-methods/card-payments.md | 2 ++ content/payment-methods/direct-debit.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md index f18faff1f..dbd7c44ee 100644 --- a/content/payment-methods/card-payments.md +++ b/content/payment-methods/card-payments.md @@ -86,6 +86,8 @@ The table below sets out the <> and <. + 💬 **Support:** If the payment method isn't visible in your dashboard, email # Integration diff --git a/content/payment-methods/direct-debit.md b/content/payment-methods/direct-debit.md index 536d35c7d..d56926780 100644 --- a/content/payment-methods/direct-debit.md +++ b/content/payment-methods/direct-debit.md @@ -69,6 +69,8 @@ The table below sets out the <> and <. + 💬 **Support:** If the payment method isn't visible in your dashboard, email # Integration From b7de86c2532ed5d8e436c95a271bead431b9db6e Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 8 Jan 2025 11:05:29 +0100 Subject: [PATCH 286/319] DOCS-4305: Fix Magento Vault section (#3219) * DOCS-4305: Fix Magento Vault section * DOCS-4305: Fix Magento Vault section * DOCS-4305: Fix Magento Vault section * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- content/integrations/magento-2.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/integrations/magento-2.md b/content/integrations/magento-2.md index e6b315af8..15d54d935 100755 --- a/content/integrations/magento-2.md +++ b/content/integrations/magento-2.md @@ -261,7 +261,9 @@ You must: How to activate Magento Vault
-To activate Magento Vault, and enable [recurring payments](/docs/recurring-payments), email a request to . + +To activate Magento Vault, and enable recurring payments , email a request to . + From 7f297849664ccb294aaa4da691b576e49fd71b6b Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 9 Jan 2025 12:15:57 +0100 Subject: [PATCH 287/319] DOCS-4488: Billink integration. Mermaid flow diagram (#3220) --- static/diagrams/svg/billink-payment-flow.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 static/diagrams/svg/billink-payment-flow.svg diff --git a/static/diagrams/svg/billink-payment-flow.svg b/static/diagrams/svg/billink-payment-flow.svg new file mode 100644 index 000000000..6201493d2 --- /dev/null +++ b/static/diagrams/svg/billink-payment-flow.svg @@ -0,0 +1 @@ +MerchantBillinkMultiSafepayCustomerMerchantBillinkMultiSafepayCustomerPerforms credit checkManually changes the order status to ShippedSelects Billink at checkout1Redirects to the payment page to provide the required data. The customer has to verify their data through the Billink app2Sends an invoice via email, which must be paid within 14 days after the order has been received3Ships order4Completes payment5Transfers funds6Settles funds7 \ No newline at end of file From 063ba365e5c577f8cc2ec1da540d04140395c1bd Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 10 Jan 2025 12:59:49 +0100 Subject: [PATCH 288/319] DOCS-4389: POS add logo. How to add image files and requirements. (#3207) * DOCS-4389: POS add logo. How to add image files and requirements. * DOCS-4389: Add POS logo * DOCS-4389: POS add logo. How to add image files and requirements. --- content/point-of-sale/smartpos-activation.md | 30 +++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 20372d5d1..d5627c8a3 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -42,10 +42,20 @@ To activate a SmartPOS terminal, follow these steps: - **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. -- **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. -To add new images, upload them first via Settings > Files. -The logo is then added to all terminals of this group. -6. Select Terminal type **SmartPOS** +- **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. + To add new images: + + - Go to your MultiSafepay dashboard . + - Go to **Settings** > **Files** and upload the desired image file. The file must meet the following requirements: + - Format: **PNG** + - Resolution: **512x512 pixels** + + The logo is added to all terminals of this group and will show in the background of your terminal. + + **⚠️Note**: Individual terminals within a group cannot have different images. + +6. Select Terminal type **SmartPOS**. +7. Click **Create**. Install the MultiSafepay payment app on your terminal to scan the QR code. @@ -67,13 +77,13 @@ Install the MultiSafepay payment app on your terminal to scan the QR code. 1. Sign in to your MultiSafepay dashboard . 2. Go to **Devices** > **Terminals**. 3. Click **Manage groups**. -4. To edit an existing group: -- Click the ** edit** icon next to the group name. -- Fill in the **name** field. -5. In the **Category** field, click the **dropdown** icon and select the relevant category code. -6. Click **Create**. +4. Click the **edit** icon on the right side of the panel to edit the desired terminal group. Here, you can: + - Change the **name** of the terminal group. + - Change the logo by selecting a different image file. + - Change the **webhook URL**. +5. Click the **save** icon. -**💡 Tip!** You can view your API key via *Manage groups* > API key. +**💡 Tip!** You can view your API key via **Manage groups** > **API key**. --- From 5d8411cd7f3e3a31bdbe056c95b3c6e044ba1da4 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 10 Jan 2025 13:07:15 +0100 Subject: [PATCH 289/319] DOCS-4389: POS add logo. How to add image files and requirements. (#3221) * DOCS-4389: POS add logo. How to add image files and requirements. * DOCS-4389: Add POS logo --- content/point-of-sale/smartpos-activation.md | 23 ++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index d5627c8a3..45046f23c 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -39,20 +39,21 @@ To activate a SmartPOS terminal, follow these steps: 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**. -- **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. -- **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. - To add new images: + - **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. + - **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. + To add new images: - - Go to your MultiSafepay dashboard . - - Go to **Settings** > **Files** and upload the desired image file. The file must meet the following requirements: - - Format: **PNG** - - Resolution: **512x512 pixels** + - Go to your MultiSafepay dashboard . + - Go to **Settings** > **Files** and upload the desired image file. The file must meet the following requirements: + - Format: **PNG** + - Resolution: **512x512 pixels** - The logo is added to all terminals of this group and will show in the background of your terminal. + The logo is added to all terminals of this group and will show in the background of your terminal. + + **⚠️Note**: Individual terminals within a group cannot have different images. - **⚠️Note**: Individual terminals within a group cannot have different images. 6. Select Terminal type **SmartPOS**. 7. Click **Create**. From 9a345e43c43353e1be7aedf5bf64974c377b5208 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 14 Jan 2025 10:06:41 +0100 Subject: [PATCH 290/319] DOCS-4389: POS add logo. How to add image files and requirements. (#3222) * DOCS-4389: POS add logo. How to add image files and requirements. * DOCS-4389: Add POS logo * DOCS-4389: POS add logo. How to add image files and requirements. * DOCS-4389: POS add logo. How to add image files and requirements. * DOCS-4389: POS add logo. How to add image files and requirements. --- content/point-of-sale/smartpos-activation.md | 33 ++++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/content/point-of-sale/smartpos-activation.md b/content/point-of-sale/smartpos-activation.md index 45046f23c..4a828bd9c 100644 --- a/content/point-of-sale/smartpos-activation.md +++ b/content/point-of-sale/smartpos-activation.md @@ -35,25 +35,22 @@ To process payments, you will need: To activate a SmartPOS terminal, follow these steps: 1. Sign in to your MultiSafepay dashboard . + 2. Go to **Devices** > **Terminals**. + 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**. - - **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. - - **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. - To add new images: - - Go to your MultiSafepay dashboard . - - Go to **Settings** > **Files** and upload the desired image file. The file must meet the following requirements: - - Format: **PNG** - - Resolution: **512x512 pixels** +4. Below the **<> name**, click **Add new group**, or select a previously created group. - The logo is added to all terminals of this group and will show in the background of your terminal. +5. Fill out the following fields: - **⚠️Note**: Individual terminals within a group cannot have different images. + - **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. + - **Logo**: Select an image you want to display in different places of your payment app, to show customized branding. To upload your logo, see [How to upload logos](#how-to-upload-logos). + The logo is added to all terminals of this group and will show in the background of your terminal. + **⚠️Note**: Individual terminals within a group cannot have different images. 6. Select Terminal type **SmartPOS**. 7. Click **Create**. @@ -73,6 +70,16 @@ 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 upload your logo + +1. Go to your MultiSafepay dashboard . +2. Go to **Settings** > **Files** and upload the desired image file. The file must meet the following requirements: + - Format: **PNG** + - Resolution: **512x512 pixels** + + You can upload multiple files at the same time. +3. Click **Upload** for single files or **Upload all** to upload all files. + ## How to edit a group 1. Sign in to your MultiSafepay dashboard . From 00c9b528ff8a4dd137807dd3f8e2fccc1171bcc8 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 14 Jan 2025 10:21:52 +0100 Subject: [PATCH 291/319] DOCS-4494: New items POS draft. Tipping and hide MSP logo (#3223) * DOCS-4494: New items POS draft. Tipping and hide MSP logo * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- content/point-of-sale/smartPOS-features.md | 32 +++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index a1d0ced90..8dded1603 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -101,13 +101,19 @@ Once you've initiated the payment, the items are displayed on the payment screen 1. In the **Global settings** list, click the **Tipping** toggle. 2. To return to the main screen, click the **Back** button. -After the payment has been processed, the option to tip is displayed on the payment screen. +Enabling this feature will display a tipping screen before the payment is processed. - + + +On the tipping screen, you can: + +- Click a suggested tipping amount or click **Custom** to add a specific amount. +- Click **No Tip** to proceed without tipping. +- Click the **Employee** icon to assign the employee you want to tip or to add a new employee. -You can add an employee via **add employee** > Insert name and ID. +You can add an employee via **+ add employee** > Insert **Name** and **Employee ID**. @@ -135,7 +141,7 @@ You can add an employee via **add employee** > Insert name and ID. To exit the cloud mode payment screen: -1. Tap and hold the **MultiSafepay** logo for few seconds. +1. Tap and hold the **MultiSafepay** logo or your personal logo for few seconds. 2. Enter the default **PIN code**.
The default PIN code is `1324`. **⚠️ Note:** For your security, we recommend you change the default PIN code as soon as possible. @@ -200,12 +206,24 @@ You can see the selected details displayed on screen, and in the header of the r 1. In the **Navigation** list, click the ** System navigation** toggle to the right. 2. To return to the main screen, click the **Back** button -**Note:** To access the navigation menu, tap the **MultiSafepay** logo. +**Note:** To access the navigation menu, tap the **MultiSafepay** logo or your personal logo. *** +## How to hide the MultiSafepay logo +1. In **Features**, go to **Global Settings** . +2. Click the **Hide MSP logo** toggle to the right. +3. To return to the main screen, click the **Back** button. + +If no logo has been selected for the terminal group, the **MultiSafepay** logo will display by default, even when the **Hide MSP logo** feature is enabled. For more information on how to upload and change your logo, see: + +- How to upload your logo . +- How to edit a group . + + +*** ## How to switch languages 1. In the **Settings** section, go to \*_Languages_. From 3205f29703850eb62c72a0ad0430a7fc20eb585e Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 14 Jan 2025 12:22:09 +0100 Subject: [PATCH 292/319] DOCS-4492: IN3 Business split from iDEAL in3. Mermaid diagram (#3224) --- static/diagrams/svg/in3business-payment-flow.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 static/diagrams/svg/in3business-payment-flow.svg diff --git a/static/diagrams/svg/in3business-payment-flow.svg b/static/diagrams/svg/in3business-payment-flow.svg new file mode 100644 index 000000000..78209aa56 --- /dev/null +++ b/static/diagrams/svg/in3business-payment-flow.svg @@ -0,0 +1 @@ +Merchantin3MultiSafepayBusinessMerchantin3MultiSafepayBusinessalt[Redirect flow][Direct flow]Selects in3 Business at checkout.1Redirects to payment page to provide their business name, CoC number, birth date, title, and phone number then redirects to your success page2Redirects to in3 to select their bank, and accept the payment periods and terms & conditions3Authorizes the payment4Captures the funds5Pays 1st instalment within 5 mins (settlement is now guaranteed)6Ships the order7Transfers funds8Settles funds (within 15 days of 1st instalment)9Pays 2nd instalment within 30 days, and 3rd within 60 days10 \ No newline at end of file From 42b7d062228eb0f1745508fb2a5c25b9f83a5111 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 15 Jan 2025 17:10:25 +0100 Subject: [PATCH 293/319] DOCS-4499: Send mail function MCP (#3217) --- .../getting-started/company-information.md | 4 +-- .../getting-started/notification-emails.md | 29 +++++++++++++++++++ .../partner-primary-accounts-private.md | 2 +- .../partner-primary-accounts.md | 2 +- content/getting-started/payment-methods.md | 2 +- content/getting-started/payouts.md | 2 +- content/getting-started/sites.md | 2 +- 7 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 content/getting-started/notification-emails.md diff --git a/content/getting-started/company-information.md b/content/getting-started/company-information.md index a6f3e55ae..2fb6fd707 100644 --- a/content/getting-started/company-information.md +++ b/content/getting-started/company-information.md @@ -21,8 +21,8 @@ To update your contact details, provide us with your address in your dashboard: 1. Sign in to your MultiSafepay dashboard . 2. In the top-right corner of your dashboard, click > **Account information**. -3. Under **Contact details**, provide the relevant email address. -You can indicate where to receive emails about completed transactions, uncleared transactions, invoices, and chargebacks. +3. Under **Contact details**, provide the relevant email address. +4. Click **Save**. diff --git a/content/getting-started/notification-emails.md b/content/getting-started/notification-emails.md new file mode 100644 index 000000000..69521d265 --- /dev/null +++ b/content/getting-started/notification-emails.md @@ -0,0 +1,29 @@ +--- +title: "Notification emails" +category: 627bbcf80c1c9c0050320b60 +order: 7 +hidden: false +parentDoc: 62b0845857c8ab006af6a4f7 +slug: 'notification-emails' +--- + +You can add or remove email addresses to receive notifications about completed and uncleared transactions, invoices, and chargebacks. + +## How to add an email address + +1. Go to your MultiSafepay dashboard . +2. Under **Settings**, click **Email settings**. +3. On the **Email settings** page, fill the desired email address for each of the fields for which you want to receive notifications. You can use up to **five** email addresses for each field. +4. Click **Save**. + +You can remove an email address by clicking on it. You can remove **all** email addresses in one field clicking the ❌ button. Remember to click **Save** to store your changes. + +--- + +[block:html] +{ + "html": "
\n

\n 💬\n

Support

\n

\n

Email support@multisafepay.com

\n
\n" +} +[/block] + +[Top of page](#) diff --git a/content/getting-started/partner-primary-accounts-private.md b/content/getting-started/partner-primary-accounts-private.md index c6d532ac8..df2fa3f8a 100644 --- a/content/getting-started/partner-primary-accounts-private.md +++ b/content/getting-started/partner-primary-accounts-private.md @@ -1,7 +1,7 @@ --- title: "Partner and primary accounts" category: 627bbcf80c1c9c0050320b60 -order: 8 +order: 9 hidden: true parentDoc: 62b0845857c8ab006af6a4f7 slug: 'partner-and-primary-accounts' diff --git a/content/getting-started/partner-primary-accounts.md b/content/getting-started/partner-primary-accounts.md index 77bbf6233..5d4c84191 100644 --- a/content/getting-started/partner-primary-accounts.md +++ b/content/getting-started/partner-primary-accounts.md @@ -1,7 +1,7 @@ --- title: "Partner and primary accounts" category: 627bbcf80c1c9c0050320b60 -order: 7 +order: 8 hidden: false parentDoc: 62b0845857c8ab006af6a4f7 slug: 'partner-accounts' diff --git a/content/getting-started/payment-methods.md b/content/getting-started/payment-methods.md index a20d06698..aa89578fa 100644 --- a/content/getting-started/payment-methods.md +++ b/content/getting-started/payment-methods.md @@ -1,7 +1,7 @@ --- title: "Payment methods" category: 627bbcf80c1c9c0050320b60 -order: 9 +order: 10 hidden: false parentDoc: 62b0845857c8ab006af6a4f7 slug: 'payment-methods' diff --git a/content/getting-started/payouts.md b/content/getting-started/payouts.md index c8871a17f..d204f09ee 100644 --- a/content/getting-started/payouts.md +++ b/content/getting-started/payouts.md @@ -1,7 +1,7 @@ --- title: "Payouts" category: 627bbcf80c1c9c0050320b60 -order: 10 +order: 11 hidden: false parentDoc: 62b0845857c8ab006af6a4f7 slug: 'payouts' diff --git a/content/getting-started/sites.md b/content/getting-started/sites.md index 78c899cae..8376e52a8 100644 --- a/content/getting-started/sites.md +++ b/content/getting-started/sites.md @@ -1,7 +1,7 @@ --- title: "Sites" category: 627bbcf80c1c9c0050320b60 -order: 11 +order: 12 hidden: false parentDoc: 62b0845857c8ab006af6a4f7 slug: 'sites' From 206ecb06612c4e35afaec554f47ee2293b9860c8 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 09:32:42 +0100 Subject: [PATCH 294/319] Docs 4499 (#3225) * DOCS-4499: Send mail function MCP * DOCS-4499: send email function MCP * DOCS-4499: send email function MCP --- content/getting-started/company-information.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/content/getting-started/company-information.md b/content/getting-started/company-information.md index 2fb6fd707..dacf75233 100644 --- a/content/getting-started/company-information.md +++ b/content/getting-started/company-information.md @@ -39,9 +39,25 @@ If a different company is taking over your account, we recommend opening a **new Make sure you update all company details on your [site(s)](/docs/sites/), including the registration number, VAT number, and address. The company details on each site must match the details in your account. +
+ +## Notification emails + +You can add or remove email addresses to receive notifications about completed and uncleared transactions, invoices, and chargebacks. +
+How to add an email address
+1. Go to your MultiSafepay dashboard . +2. Under **Settings**, click **Email settings**. +3. On the **Email settings** page, fill the desired email address for each of the fields for which you want to receive notifications. You can use up to **five** email addresses for each field. +4. Click **Save**. + +You can remove an email address by clicking on it. You can remove **all** email addresses in one field clicking the ❌ button. Remember to click **Save** to store your changes. + +
+ --- [block:html] From 50ab6c93f3de68197e0e410459b4ad90654776b6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 14:14:00 +0100 Subject: [PATCH 295/319] Docs 4484 (#3226) * DOCS-4484: POS - add info keyboard use * DOCS-4484: POS - add info keyboard use --- content/point-of-sale/pos-troubleshooting.md | 7 ++ content/point-of-sale/smartPOS-features.md | 103 +++++++++++-------- 2 files changed, 68 insertions(+), 42 deletions(-) diff --git a/content/point-of-sale/pos-troubleshooting.md b/content/point-of-sale/pos-troubleshooting.md index 131821b82..63af8422f 100644 --- a/content/point-of-sale/pos-troubleshooting.md +++ b/content/point-of-sale/pos-troubleshooting.md @@ -97,6 +97,13 @@ If your IPEK is **not** configured, you can - attempt manual configuration via **Settings** > Advanced > Security Center > Key Injection > RKI > Key Inject - contact us via +*** + +## Sunmi system keyboard for Manual Input +When using **Manual Input** for the first time on the **SUNMI P2 SE** model, the default system keyboard will be displayed instead of a numeric keypad. + +To fix this, at the **Manual Input** screen, click the **keyboard** icon in the bottom corner and choose the language you selected during the initial device setup. This will display the numeric keypad. + *** ## Logs diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index 8dded1603..ad2bf73a1 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -25,11 +25,10 @@ slug: 'smartpos-features' -# Features +# Features After activating your SmartPOS terminal, you can add features from your SmartPOS payment app. SmartPOS features contains: -
Global Settings @@ -37,6 +36,7 @@ After activating your SmartPOS terminal, you can add features from your SmartPOS
  • Display items after payment have been processed.
  • Add a tip to your payment flow.
  • Print a receipt.
  • +
  • Hide the MultiSafepay logo.
  • Payment Settings

      @@ -46,15 +46,17 @@ After activating your SmartPOS terminal, you can add features from your SmartPOS
    • Initiate payments manually or using cloud mode
    • Hide the navigation menu on the main screen
    • Define the closing order flow
    • +
    • Change your payment method
    Navigation Settings

    • Enable the Cancel function
    • +
    • Hide navigation
    - Feature list +
    @@ -72,7 +74,7 @@ After activating your SmartPOS terminal, you can add features from your SmartPOS } -
    + To add payment flow features, follow these steps: @@ -90,33 +92,35 @@ To add payment flow features, follow these steps: Once you've initiated the payment, the items are displayed on the payment screen. - +*** + +\--> ## 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. -Enabling this feature will display a tipping screen before the payment is processed. +Enabling this feature will display a tipping screen before the payment is processed. On the tipping screen, you can: + - -On the tipping screen, you can: - +
    >>>>--> - Click a suggested tipping amount or click **Custom** to add a specific amount. - Click **No Tip** to proceed without tipping. - Click the **Employee** icon to assign the employee you want to tip or to add a new employee. You can add an employee via **+ add employee** > Insert **Name** and **Employee ID**. - - *** ## How to enable print or email @@ -124,12 +128,19 @@ You can add an employee via **+ add employee** > Insert **Name** and **Employee 1. In the **Global settings** list, click the **Print/Email** toggle. 2. To return to the main screen, click the **Back** button. - +*** + +\--> + *** ## How to enable cloud mode @@ -150,18 +161,32 @@ To exit the cloud mode payment screen: ## How to define your closing order flow -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. +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. 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. +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. 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. -## How to change the PIN code +*** + +## How to enable additional payment methods + +To activate additional payment methods for your terminal, email a request to [sales@multisafepay.com](mailto:sales@multisafepay.com). Once activated: + +1. Go to **Features** > **Payment**. +2. At **Additional Payment methods**, click **Reload**. The newly added payment methods will be available in the dropdown menu. +3. Click the **Dropdown** icon to display the payment methods. +4. Click the toggle to enable or disable the desired payment method. +5. Click **Back** to return to the main screen. + +*** + +## How to change the PIN code 1. Go to **Settings** > **Security**. 2. Enter the default PIN code. @@ -172,22 +197,20 @@ If you select *disabled*, there is no automatic timeout, and you will need to pr *** - - After you've enabled the **Cloud mode**, the **Navigation** list appears. This feature allows you to hide the cancel button and system navigation. - ## 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: +Via **Settings** > **Closing balance**, can set the following parameters: - Default date: today, yesterday -- Closing start hour: if you include a start hour, the period will count 24 from the set time on +- Closing start hour: if you include a start hour, the period will count 24 from the set time on Example: set 10.00 >> period is 10.00 to 09:59 - Closing end hour - Filter by: Company, Terminal group, Terminal @@ -200,7 +223,6 @@ You can see the selected details displayed on screen, and in the header of the r *** - ## How to hide navigation 1. In the **Navigation** list, click the ** System navigation** toggle to the right. @@ -211,22 +233,20 @@ You can see the selected details displayed on screen, and in the header of the r *** + ## How to hide the MultiSafepay logo -1. In **Features**, go to **Global Settings** . -2. Click the **Hide MSP logo** toggle to the right. +1. Go to **Features** > **Global Settings**. +2. Click the **Hide MultiSafepay logo** toggle. 3. To return to the main screen, click the **Back** button. -If no logo has been selected for the terminal group, the **MultiSafepay** logo will display by default, even when the **Hide MSP logo** feature is enabled. For more information on how to upload and change your logo, see: - -- How to upload your logo . -- How to edit a group . - +**Note:** To enable this feature, you must first assign a company logo to your terminal group. *** + ## How to switch languages -1. In the **Settings** section, go to \*_Languages_. +1. In the **Settings** section, go to **Languages**. 2. Select between English, Dutch, and Spanish. @@ -237,8 +257,8 @@ If no logo has been selected for the terminal group, the **MultiSafepay** logo w 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: @@ -262,7 +282,7 @@ The QR reader is able to detect the following parameters: ## How to validate a card -1. In Settings > **Payment**, enable _Allow Zero Amount_ +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. @@ -284,8 +304,8 @@ The QR reader is able to detect the following parameters: ## 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. You can bind the terminal to the same or a different account, or terminal group. @@ -301,12 +321,11 @@ Additionally to our built-in printers within some of our devices, you can use th You can set it up within your app: 1. Via Settings, go to _External printer_ -2. Press _Discover_ +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 3934481409bd7fc5f3cc886de79e38fe8bd7e7df Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 14:17:30 +0100 Subject: [PATCH 296/319] DOCS-4460: AMEX payments in CHF (#3190) --- content/payment-methods/card-payments.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md index dbd7c44ee..68c92acc2 100644 --- a/content/payment-methods/card-payments.md +++ b/content/payment-methods/card-payments.md @@ -33,10 +33,12 @@ MultiSafepay supports the following credit and debit cards: **⚠️ Note:** [Co-branded cards](/docs/card-payments#co-branded-cards) are processed through the VISA <>. +**⚠️ Note:** Payments made with AMEX in CHF are settled in EUR. + | Supports | Details | |---|---| | [Countries](/docs/payment-methods#payment-methods-by-country) | Amex, Maestro, Mastercard, Visa: Worldwide
    Cartes Bancaires: France
    Dankort: Denmark
    Postepay: Italy
    V Pay: Europe | -| [Currencies](/docs/currencies/) | Amex: EUR, GBP, USD
    Maestro, Mastercard, Visa: AED, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EUR, GBP, HKD, HRK, HUF, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, RON, RUB, SEK, SGD, THB, TRY, TWD, UAH, USD, VEF, ZAR
    To support additional currencies, email | +| [Currencies](/docs/currencies/) | Amex: EUR, GBP, USD, CHF
    Maestro, Mastercard, Visa: AED, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EUR, GBP, HKD, HRK, HUF, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, RON, RUB, SEK, SGD, THB, TRY, TWD, UAH, USD, VEF, ZAR
    To support additional currencies, email | | [3D Secure 2.0](/docs/3ds2/) | Yes | | [Chargebacks](/docs/chargebacks/) | Yes, **except** Postepay | | [Payment components](/docs/payment-components/) | Yes | From 97695a1106963ed50863962e4940c80adcd73a9a Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 14:19:28 +0100 Subject: [PATCH 297/319] DOCS-4437: Response HTTP error 204 (#3189) --- content/developer/http-errors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/developer/http-errors.md b/content/developer/http-errors.md index 563601da6..3ff811e57 100644 --- a/content/developer/http-errors.md +++ b/content/developer/http-errors.md @@ -11,7 +11,7 @@ This table lists the most common HTTP error codes and descriptions: | Error | Description | |---|---| -| HTTP 200: OK | The page is responding correctly but is missing the text `OK` in the body. | +| HTTP 204: No content | The page is responding correctly but is missing the text `OK` in the body. | | HTTP 301: Moved permanently | The page has moved permanently. Check if your [webhook endpoint](/docs/webhook/) is configured correctly in your MultiSafepay account and/or the API request. | | HTTP 302: Found | The page redirects to another location. Check if your [webhook endpoint](/docs/webhook/) is configured correctly in your MultiSafepay account and/or the API request. | | HTTP 403: Forbidden | The page appears to require a login. This often occurs in a testing environment. Either remove the login page, or add our IP ranges to your allow list. For a list of MultiSafepay IP addresses, email | From 9f5e74e30b631ad00b115738f3d2cb7d98d57c53 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 14:26:43 +0100 Subject: [PATCH 298/319] DOCS-4273: Include information that we do not support Dotpay direct (#3198) * DOCS-4273: Include information that we do not support Dotpay direct * DOCS-4273: Include information that we do not support Dotpay direct * DOCS-4273: Include information that we do not support Dotpay direct --- content/payment-methods/dotpay.md | 2 ++ content/payment-methods/testing.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/payment-methods/dotpay.md b/content/payment-methods/dotpay.md index 2a9e30428..7ad3ad651 100644 --- a/content/payment-methods/dotpay.md +++ b/content/payment-methods/dotpay.md @@ -72,6 +72,8 @@ The table below sets out the <> and < + **⚠️ Note:** **Direct** requests are not supported for Dotpay. + - Transactions expire after 3 days. ### Ready-made integrations diff --git a/content/payment-methods/testing.md b/content/payment-methods/testing.md index 070ccd56a..e7a42687d 100644 --- a/content/payment-methods/testing.md +++ b/content/payment-methods/testing.md @@ -153,6 +153,8 @@ You can see the reason the transaction was declined in your MultiSafepay test ac How to test Dotpay
    +**⚠️ Note:** **Direct** requests are not supported for Dotpay. + 1. [Create an order](/reference/createorder/) > Banking order (Example: Dotpay redirect) 2. On the Dotpay page, enter in the: - **Email address** field: Any email address From cbdc9cdae345585e6df5eeb266adb1bb7f704257 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 16:01:29 +0100 Subject: [PATCH 299/319] DOCS-4167: Update "Shipping orders" section of the Shopware 6 (#3211) * DOCS-4167: Update Shipping orders section of the Shopware 6 * DOCS-4167: Update Shipping orders section of the Shopware 6 --- content/integrations/shopware-6.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/integrations/shopware-6.md b/content/integrations/shopware-6.md index 1ed2dad19..978b3dc2c 100644 --- a/content/integrations/shopware-6.md +++ b/content/integrations/shopware-6.md @@ -146,9 +146,7 @@ You cannot refund more than the original amount in your backend. ### Shipping orders -For <> orders, after shipment, you must change the order status from **Completed** to **Shipped**. This prevents the order expiring and triggers invoicing. - -If you change the <> to **Delivered** in your backend, the updated status is passed to your MultiSafepay dashboard automatically. +For <> orders, once shipped, the delivery status must be manually updated from **Open** to **Shipped**. This change will then automatically reflect in your MultiSafepay dashboard. ## Updates From 578f6084599e068269fd1b345b9985aa8cba9115 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 16 Jan 2025 16:03:18 +0100 Subject: [PATCH 300/319] DOCS-4253: Include an API token check for 1023 error reference (#3197) --- api/general/error-reference.md | 1 + content/developer/troubleshooting.md | 1 + 2 files changed, 2 insertions(+) diff --git a/api/general/error-reference.md b/api/general/error-reference.md index b85433900..a2cafe254 100644 --- a/api/general/error-reference.md +++ b/api/general/error-reference.md @@ -166,6 +166,7 @@ The `gateway` is unavailable. This error can occur with <> requ - Check whether the payment method supports <> requests. - Ensure you specified a gateway in the create order request. - Check if the site is correctly configured for <> requests. +- For payment components, check if the correct API token is used. Do not use an API key. --- ### 1024: Transaction declined diff --git a/content/developer/troubleshooting.md b/content/developer/troubleshooting.md index 688252f42..8e9f415ec 100644 --- a/content/developer/troubleshooting.md +++ b/content/developer/troubleshooting.md @@ -166,6 +166,7 @@ The `gateway` is unavailable. This error can occur with <> requ - Check whether the payment method supports <> requests. - Ensure you specified a gateway in the create order request. - Check if the site is correctly configured for <> requests. +- For payment components, check if the correct API token is used. Do not use an API key. --- ### 1024: Transaction declined From ff17bbc5364c41fd63057ea99150294ba0ccb4ca Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 21 Jan 2025 14:48:38 +0100 Subject: [PATCH 301/319] DOCS-4486: Add info permissions to manage SmartPOS terminals (#3229) --- content/getting-started/account-users.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/getting-started/account-users.md b/content/getting-started/account-users.md index 6a81eea17..4671440e6 100644 --- a/content/getting-started/account-users.md +++ b/content/getting-started/account-users.md @@ -18,7 +18,7 @@ Your MultiSafepay account can have an unlimited number of authorized users. All | Balance hidden | Cannot view the account balance | | Orders manager | Create refunds
    View all transactions
    Generate payment links | | Reports manager | View all transactions and the account balance
    Create and download reports
    Generate payment links | -| Sites manager | View all transactions
    Add and edit sites and payment pages
    Style emails
    Resend offline actions | +| Sites manager | View all transactions
    Add and edit websites and payment pages
    Add and edit terminal groups and POS terminals
    Style emails
    Resend offline actions | | Captures manager | View all transactions
    Accept or decline uncleared transactions | # How to add and block users From c5c2d2c8f59312795c1075d67b8096777ab26be6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 21 Jan 2025 15:11:39 +0100 Subject: [PATCH 302/319] DOCS-4469: Add missing reason codes Declined transactions (#3208) --- content/payment-methods/direct-debit.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/payment-methods/direct-debit.md b/content/payment-methods/direct-debit.md index d56926780..f7c69f79a 100644 --- a/content/payment-methods/direct-debit.md +++ b/content/payment-methods/direct-debit.md @@ -146,6 +146,8 @@ If the IBAN or BIC is incorrect, our bank informs us the next business day. |RR04|Regulatory reason| Contact your bank. | |SL01|Specific service offered by debtor agent| Contact the debtor. | |TM01|File received after cut-off time| | +|CUST|Is used sporadically (known to the collector)| Contact your bank. | +|DUPL|Is used sporadically (duplicate payment)| Contact your bank. |
    For more information in: From ae3f958d750bbab7af87a55d7a242710fb5d9c97 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 22 Jan 2025 13:51:20 +0100 Subject: [PATCH 303/319] Docs 4488 (#3231) * DOCS-4488: Billink integration. Mermaid flow diagram * DOCS-4488: billink website --- content/payment-methods/billink.md | 182 +++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 content/payment-methods/billink.md diff --git a/content/payment-methods/billink.md b/content/payment-methods/billink.md new file mode 100644 index 000000000..c0d562159 --- /dev/null +++ b/content/payment-methods/billink.md @@ -0,0 +1,182 @@ +--- +title: 'Bizum' +category: 6298bd782d1cf4006032e765 +parentDoc: 62a728d48b97080046c1d220 +order: 5 +slug: 'bizum' +--- + + + +Billink is a Dutch BNPL payment method available for both B2C and B2B transactions. It allows customers to receive goods before payment, settling the invoice within a typically 14-day period. Billink performs real-time credit checks and assumes the risk of non-payment. + + + +| Supports | Details | +| ------------------------------------------------------------- | ----------------------------- | +| [Countries](/docs/payment-methods#payment-methods-by-country) | Netherlands, Belgium, Germany | +| [Currencies](/docs/currencies/) | EUR | +| [Chargebacks](/docs/chargebacks/) | No | +| [Payment pages](/docs/payment-pages/) | Yes | +| [Refunds](/docs/refund-payments/) | Yes: Full and partial | + +# Payment flow + +This diagram shows the flow for a successful transaction. Click to magnify. + +Pay After Delivery payment flow + +# Payment statuses + +The table below sets out the <> and <> for payments and refunds. + +| Description | Order status | Transaction status | +| ------------------------------------------------------------------------------- | ------------ | ------------------ | +| Billink's credit check is in progress. | Initialized | Initialized | +| The order is created. | Completed | Uncleared | +| Billink declined the transaction. | Declined | Declined | +| **⚠️ Note:** To capture the funds, manually change the order status to Shipped. | Shipped | Unclear | +| MultiSafepay has collected the payment. | Shipped | Completed | +| The customer initiated the payment process but didn't finalize it. | Expired | Expired | +| **Refunds:** Billink has successfully processed a full or partial refund. | Completed | Completed | +| **Refunds:** The refund was declined. | Declined | Declined | + + + +# Activation + +1. Email a request to [sales@multisafepay.com](mailto:sales@multisafepay.com) + We check your eligibility and if approved, activate the payment method for your account. +2. Once approved, to activate the method in your dashboard, sign in to your MultiSafepay dashboard . +3. 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. +4. Select the checkbox for the payment method, and then click **Save**. + +💬 Support: If the payment method isn't visible in your dashboard, email [integration@multisafepay.com](mailto:integration@multisafepay.com) +
    + +# Integration + +### API + +See API reference – [Create order](/reference/createorder/) > BNPL order. + +
    +Example requests +
    + +For example requests, on the [Create order](/reference/createorder/) page, in the black sandbox, see **Examples** > **Billink redirect**. + + + +
    + +- A `shopping_cart` object is required for all BNPL orders. See Recipes – Include shopping_cart in order . + +- (Expiry to be added) + +- For <> orders, you must display your terms and conditions in your checkout. + +## Ready made solutions + +The payment method will soon be available in our plugins. + +## Testing + +Testing will soon be available for this payment method. + +*** + +# User guide + +## Addresses + +Different billing and shipping addresses are supported. + +## Amount limits + +Minimum and maximum order amounts apply. Email [sales@multisafepay.com](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com)) + +## Cancellation + +You can cancel the invoice order **before** shipment or **after** partial shipment. + +
    +How to cancel an order +
    + +**In your dashboard** + +1. Sign in to your MultiSafepay dashboard . +2. Go to **Transactions** > **Transaction overview**, and then click the relevant transaction. +3. On the **Transaction details** page, click **Cancel**. +4. Add a description of what happened with the order, and then click **Complete**. + The <> changes to **Void** and the <> to **Cancelled**. + +
    + +## Collection flow + +- Billink sends the customer an invoice after the order is shipped in full, **or** partially shipped and the remaining items cancelled. +- If the customer fails to pay within the initial 14 day period, Billink sends reminders of their obligation to pay, in accordance with the Wet Incasso Kosten (WIK). +- The customer can contact Billink if there is an issue with the payment. +- If the customer still fails to pay, Billink sends the invoice to a debt collector. +- If necessary, you can delay the collection flow by placing the transaction on hold. + +## Refunds + +To refund a Billink transaction, follow these steps: + +1. Sign in to your MultiSafepay dashboard . +2. Navigate to **Transactions / Transactions Overview** and find the transaction you want to refund, or search for the transaction you want to refund by using the search bar. +3. Click on the transaction to go to the transaction details page. +4. On the right side of the page are the order details and a blue Refund button. +5. In this section you can remove order lines or refund the complete order. + +## Shipment + +When you ship the order, you **must** manually change the [order status](/docs/payment-statuses/) from **Completed** to **Shipped**, which: + +- Captures the funds +- Prevents the order from expiring + +
    +How to change the order status to shipped +
    + +**In your dashboard** + +1. Sign in to your MultiSafepay dashboard . +2. Go to **Transactions** > **Transactions overview**, and then click the relevant transaction. +3. On the **Transaction details** page, under **Order details**, click **Change order status**. +4. Change the status to **Shipped**. +5. Send the customer the track and trace details, if relevant. + +**In your backend** + +If you change the order status in your backend, the following [ready-made integrations](/docs/our-integrations/) pass the updated status to your dashboard automatically: + +- Magento 2 and WooCommerce: When you set the order to **Shipped** in your backend. +- Shopware 5: When you set the order to **Delivered** in your backend. + +For other ready-made integrations, make an [update order](/reference/updateorder/) API request. + +**⚠️ Note:** Some third-party plugins may not support updating the status via our API. + +*** + +
    + +### 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). + +We therefore strongly recommend **not** applying surcharges. + +For more information, email [\[sales@multisafepay.com\](mailto:sales@multisafepay.com)](mailto:[sales@multisafepay.com](mailto:sales@multisafepay.com)) +
    \ No newline at end of file From 8771e18b4e87786772073e5fb844831bf95dadb5 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 22 Jan 2025 13:58:12 +0100 Subject: [PATCH 304/319] Docs 4488 (#3232) * DOCS-4488: Billink integration. Mermaid flow diagram * DOCS-4488: billink website * DOCS-4488: billink page for documentation --- content/payment-methods/billink.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/payment-methods/billink.md b/content/payment-methods/billink.md index c0d562159..ef0e8b36a 100644 --- a/content/payment-methods/billink.md +++ b/content/payment-methods/billink.md @@ -1,9 +1,9 @@ --- -title: 'Bizum' +title: 'Billink' category: 6298bd782d1cf4006032e765 -parentDoc: 62a728d48b97080046c1d220 -order: 5 -slug: 'bizum' +parentDoc: 62bd75142e264000a66d62b5 +order: 1 +slug: 'billink' --- @@ -78,8 +78,6 @@ For example requests, on the [Create order](/reference/createorder/) page, in th - A `shopping_cart` object is required for all BNPL orders. See Recipes – Include shopping_cart in order . -- (Expiry to be added) - - For <> orders, you must display your terms and conditions in your checkout. ## Ready made solutions From 2afd2a5c8266f57057c2df373f8ed3e8bbc34655 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 22 Jan 2025 14:30:15 +0100 Subject: [PATCH 305/319] DOCS-4488: Billink Integration (#3233) * DOCS-4488: Billink integration. Mermaid flow diagram * DOCS-4488: billink website * DOCS-4488: billink page for documentation * DOCS-4488: billink documentation --- api/general/gateway-ids.md | 1 + content/checkout/payment-components.md | 1 + content/payment-methods/buy-now-pay-later.md | 57 ++++++++++++++++++-- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/api/general/gateway-ids.md b/api/general/gateway-ids.md index 4f81d61b1..7e5709f50 100644 --- a/api/general/gateway-ids.md +++ b/api/general/gateway-ids.md @@ -18,6 +18,7 @@ hidden: false | Belfius | `BELFIUS` | | Betaal per Maand | `SANTANDER` | | Bizum | `BIZUM` | +| Billink | `BILLINK` | | CBC/KBC | `CBC` / `KBC` | | Card payments | `CREDITCARD` | | Dotpay | `DOTPAY` | diff --git a/content/checkout/payment-components.md b/content/checkout/payment-components.md index eae3eabf8..3e54fd682 100644 --- a/content/checkout/payment-components.md +++ b/content/checkout/payment-components.md @@ -31,6 +31,7 @@ These are the supported payment methods: - [iDEAL](/docs/ideal/) - [MyBank](/docs/mybank/) - <>: + - [Billink](/docs/billink/) - [E-invoicing](/docs/e-invoicing/) - [In3](/docs/in3/) - [Klarna](/docs/klarna/) diff --git a/content/payment-methods/buy-now-pay-later.md b/content/payment-methods/buy-now-pay-later.md index 3e789f364..4699eaa1a 100644 --- a/content/payment-methods/buy-now-pay-later.md +++ b/content/payment-methods/buy-now-pay-later.md @@ -7,11 +7,58 @@ slug: 'bnpl' --- ## Europe-wide -[block:html] -{ - "html": "" -} -[/block] +
    --- From 997b1c062eda4133e30fbadfd68a61e5eb6cab4a Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 22 Jan 2025 14:48:03 +0100 Subject: [PATCH 306/319] DOCS-4512: Update currency list for payouts (#3234) --- content/getting-started/payouts.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/getting-started/payouts.md b/content/getting-started/payouts.md index d204f09ee..ac40c22dc 100644 --- a/content/getting-started/payouts.md +++ b/content/getting-started/payouts.md @@ -89,14 +89,15 @@ The standard currency for automatic payouts is euros (EUR). For manual payouts, Supported currencies
    -You can make payouts in: +In addition to EUR, payouts can be made in: - AUD (Australian dollar) - CAD (Canadian dollar) - CHF (Swiss franc) +- CZK (Czech koruna) - DKK (Danish krone) - GBP (Pound Sterling) -- HKD (Hong Kong dollar) +- JPY (Japanese yen) - NOK (Norwegian krone) - PLN (Polish złoty) - SEK (Swedish krona) From 238205c36b8b9c477b2c8d5acb801e62a7e39444 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 22 Jan 2025 16:51:14 +0100 Subject: [PATCH 307/319] DOCS-4502: Credit card limit 5K - DOCS (#3227) --- content/payment-methods/card-payments.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/payment-methods/card-payments.md b/content/payment-methods/card-payments.md index 68c92acc2..376e2ea9a 100644 --- a/content/payment-methods/card-payments.md +++ b/content/payment-methods/card-payments.md @@ -135,6 +135,12 @@ To test card payments, see Testing payment methods - [Credit and debit cards](/d # User guide +## Amount limits + +For credit card payments, the maximum order amount will be limited to 5,000 EUR by default. To request a change to this limit, email . + +Occasional credit card payments that surpass the maximum limit must be justified. Email the invoice to + ## Amex merchant account number If you use your Amex merchant account number: From ba4441b3af703a59ad1d59a3a0bf5fc654d44c38 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 23 Jan 2025 09:45:18 +0100 Subject: [PATCH 308/319] DOCS-4513: Update API Reconciliation page. Add list transactions (#3235) --- content/accounting/reconciliation-via-api.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/content/accounting/reconciliation-via-api.md b/content/accounting/reconciliation-via-api.md index f6403acef..5246355dc 100644 --- a/content/accounting/reconciliation-via-api.md +++ b/content/accounting/reconciliation-via-api.md @@ -7,7 +7,9 @@ slug: 'api-reconciliation' --- The transactions API endpoint returns details about your transactions. You can use it to automate reconciliation and gain insight into your transactions. -See API reference – [Get transaction](/reference/gettransaction/). +See API reference for individual transactions – [Get transaction](/reference/gettransaction/). + +See API reference to list transactions - [List transactions](/reference/listtransactions/). # Use cases @@ -16,8 +18,11 @@ See API reference – [Get transaction](/reference/gettransaction/). Use the optional parameters to filter transactions. **Sample request:** + ``` -curl -X GET "https://testapi.multisafepay.com/v1/json/transactions" --header "accept: application/json" --header "api_key: " +curl -X GET "https://testapi.multisafepay.com/v1/json/transactions" / +--header "accept: application/json" / +--header "api_key: " / ``` ## Accounting reconciliation @@ -25,15 +30,20 @@ curl -X GET "https://testapi.multisafepay.com/v1/json/transactions" --header "ac Reconciliation may be required by law, and automating the process saves time and reduces errors. **Sample request:** + ``` -curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?completed_from=2021-01-01&completed_until=2021-02-01" --header "accept: application/json" --header "api_key: " +curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?completed_from=2021-01-01&completed_until=2021-02-01" / +--header "accept: application/json" / +--header "api_key: " / ``` ## Overview of paid/unpaid refunds **Sample request:** ``` -curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?type=refund" --header "accept: application/json" --header "api_key: " +curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?type=refund" / +--header "accept: application/json" / +--header "api_key: " / ```
    From 35b182f2a7ddd2d112c643fc206fd489cd1ac034 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 23 Jan 2025 10:36:08 +0100 Subject: [PATCH 309/319] =?UTF-8?q?DOCS-4188:=20API=20reference=20specific?= =?UTF-8?q?ations:=20API=20key=20account=20level=20vs=20sit=E2=80=A6=20(#3?= =?UTF-8?q?236)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DOCS-4188: API reference specifications: API key account level vs site level * Automated external URL lint. --------- Co-authored-by: github-actions[bot] --- api/multisafepay-api/gettransaction.md | 2 +- api/multisafepay-api/listtransactions.md | 2 +- content/accounting/reconciliation-via-api.md | 38 ++++++++++++++----- content/getting-started/onboarding-via-api.md | 4 +- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/api/multisafepay-api/gettransaction.md b/api/multisafepay-api/gettransaction.md index b55e60ee7..17b9e8ba9 100644 --- a/api/multisafepay-api/gettransaction.md +++ b/api/multisafepay-api/gettransaction.md @@ -6,7 +6,7 @@ slug: gettransaction ## How to test -1. Under **Authentication** > **Query**, enter an [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. +1. Under **Authentication** > **Query**, enter a website [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account. 2. Under **Path params**, enter the transaction ID. 3. Click **Try it!** diff --git a/api/multisafepay-api/listtransactions.md b/api/multisafepay-api/listtransactions.md index ef25479a0..e8c73ac2e 100644 --- a/api/multisafepay-api/listtransactions.md +++ b/api/multisafepay-api/listtransactions.md @@ -7,7 +7,7 @@ slug: listtransactions ## How to test 1. Under **Authentication** > **Query**: - - Enter your **TEST** account API key to list all transactions for your **account**. To get your TEST account API key, email . + - Enter your **TEST account API key** to list all transactions for your **account**. To get your **TEST** account API key, email . - Enter the relevant website or terminal group [API key](/docs/sites#site-id-api-key-and-security-code) from your **TEST** account to list all transactions for a specific **website** or **terminal group**. 2. Click **Try it!** diff --git a/content/accounting/reconciliation-via-api.md b/content/accounting/reconciliation-via-api.md index 5246355dc..eb969ef7a 100644 --- a/content/accounting/reconciliation-via-api.md +++ b/content/accounting/reconciliation-via-api.md @@ -11,39 +11,59 @@ See API reference for individual transactions – [Get transaction](/reference/g See API reference to list transactions - [List transactions](/reference/listtransactions/). +# Authentication + +To authenticate your API requests, you need to provide the correct API key . The type of key required depends on the request: + +- For [Get transaction](/reference/gettransaction/) requests, use the **website API key** of the website where the transaction was made. +- For [List transactions](/reference/listtransactions/) requests, use an **account API key** to list all transaction for an acount. Use a **website API key** to list transactions for a specific website. + # Use cases +## Retrieve individual transactions + +Enter the `transaction_id` to retrieve details for a single transaction. + +**Example** + +```curl +curl -X GET "https://testapi.multisafepay.com/v1/json/{transaction_id}" / +--header "accept: application/json" / +--header "api_key: " / +``` + ## Overview of all transactions Use the optional parameters to filter transactions. -**Sample request:** +**Example** -``` +```curl curl -X GET "https://testapi.multisafepay.com/v1/json/transactions" / --header "accept: application/json" / ---header "api_key: " / +--header "api_key: " / ``` ## Accounting reconciliation Reconciliation may be required by law, and automating the process saves time and reduces errors. -**Sample request:** +**Example** -``` +```curl curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?completed_from=2021-01-01&completed_until=2021-02-01" / --header "accept: application/json" / ---header "api_key: " / +--header "api_key: " / ``` ## Overview of paid/unpaid refunds -**Sample request:** -``` +**Example** + +```curl curl -X GET "https://testapi.multisafepay.com/v1/json/transactions?type=refund" / --header "accept: application/json" / ---header "api_key: " / +--header "api_key: " / ```
    diff --git a/content/getting-started/onboarding-via-api.md b/content/getting-started/onboarding-via-api.md index 4b6214d50..8a626de1a 100644 --- a/content/getting-started/onboarding-via-api.md +++ b/content/getting-started/onboarding-via-api.md @@ -10,9 +10,9 @@ excerpt: '' Partner account holders can manage and onboard affiliated merchant accounts via our API. -# Prerequisites +# Authentication -To authenticate requests, you must include a partner account API key. +To authenticate requests, you must include a **partner account** API key. For more information, email your partner manager. # Affiliate Onboarding From b856e39b6cff399540f85e3ca41a4c0af73be177 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Fri, 24 Jan 2025 13:29:16 +0100 Subject: [PATCH 310/319] DOCS-4408: iDEAL expiry (#3230) * DOCS-4408: ideal expiry * DOCS-4408:ideal expiry --- api/general/transaction-expiration.md | 2 +- content/payment-methods/ideal.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/general/transaction-expiration.md b/api/general/transaction-expiration.md index 392a532a7..8c1ac2241 100644 --- a/api/general/transaction-expiration.md +++ b/api/general/transaction-expiration.md @@ -31,7 +31,7 @@ The table below sets out the expiration time per payment method: | CBC/KBC| 5 days | | Dotpay| 3 days | | Google Pay| 1 hour | -| iDEAL| 1.5 hours| +| iDEAL| 1 hour | | in3| 2 hours | | Klarna| 1 day | | MB WAY| 4 minutes | diff --git a/content/payment-methods/ideal.md b/content/payment-methods/ideal.md index 5cbfaccef..1288994f2 100755 --- a/content/payment-methods/ideal.md +++ b/content/payment-methods/ideal.md @@ -56,7 +56,7 @@ The table below sets out the <> and <> and < -- Transactions expire after 1.5 hours. +- Transactions expire after 1 hour. ### Ready-made integrations - Banking is supported in most [ready-made integrations](/docs/our-integrations/), **except** ZenCart. From d050a898b139db3d9232a19090fa5559f6ee54a6 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 27 Jan 2025 11:42:34 +0100 Subject: [PATCH 311/319] DOCS-4516: Bizum & Billink: update ready made solutions (#3239) * DOCS-4516: Bizum & Billink: update ready made solutions * Automated external URL lint. * DOCS-4516: Bizum & Billink: update ready made solutions --------- Co-authored-by: github-actions[bot] --- .../getting-started/notification-emails.md | 29 ------------------- content/integrations/craft-commerce.md | 4 +-- content/integrations/odoo.md | 2 +- content/integrations/zen-cart.md | 4 +-- content/payment-methods/billink.md | 9 +++++- content/payment-methods/bizum.md | 8 ++++- 6 files changed, 20 insertions(+), 36 deletions(-) delete mode 100644 content/getting-started/notification-emails.md diff --git a/content/getting-started/notification-emails.md b/content/getting-started/notification-emails.md deleted file mode 100644 index 69521d265..000000000 --- a/content/getting-started/notification-emails.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Notification emails" -category: 627bbcf80c1c9c0050320b60 -order: 7 -hidden: false -parentDoc: 62b0845857c8ab006af6a4f7 -slug: 'notification-emails' ---- - -You can add or remove email addresses to receive notifications about completed and uncleared transactions, invoices, and chargebacks. - -## How to add an email address - -1. Go to your MultiSafepay dashboard . -2. Under **Settings**, click **Email settings**. -3. On the **Email settings** page, fill the desired email address for each of the fields for which you want to receive notifications. You can use up to **five** email addresses for each field. -4. Click **Save**. - -You can remove an email address by clicking on it. You can remove **all** email addresses in one field clicking the ❌ button. Remember to click **Save** to store your changes. - ---- - -[block:html] -{ - "html": "
    \n

    \n 💬\n

    Support

    \n

    \n

    Email support@multisafepay.com

    \n
    \n" -} -[/block] - -[Top of page](#) diff --git a/content/integrations/craft-commerce.md b/content/integrations/craft-commerce.md index 2afe8eddf..084d9b8ff 100755 --- a/content/integrations/craft-commerce.md +++ b/content/integrations/craft-commerce.md @@ -77,8 +77,8 @@ Supported since release: 1.2.0, March 19th 2021.
    - Cards: [All](/docs/card-payments/), **except** Postepay and V Pay -- Banking methods: All -- <>: All +- Banking methods: All, except Bizum. +- <>: All, except Billink. - Wallets: [Alipay](/docs/alipay/), [PayPal](/docs/paypal/) - Prepaid cards: - Beauty and Wellness gift card diff --git a/content/integrations/odoo.md b/content/integrations/odoo.md index de6f9d803..fce7b9755 100644 --- a/content/integrations/odoo.md +++ b/content/integrations/odoo.md @@ -129,7 +129,7 @@ Supported since release: 1.1.0, July 2nd 2021.
    - Cards: [All](/docs/card-payments/) -- <>: All +- <>: All, except Billink. - Wallets: [Alipay](/docs/alipay/), [Apple Pay](/docs/apple-pay/), [PayPal](/docs/paypal/) - Banking methods: - [Bancontact](/docs/bancontact/) diff --git a/content/integrations/zen-cart.md b/content/integrations/zen-cart.md index 98ffcba67..21c197ecf 100755 --- a/content/integrations/zen-cart.md +++ b/content/integrations/zen-cart.md @@ -50,8 +50,8 @@ slug: 'zen-cart'
    - Cards: [All](/docs/card-payments/) -- Banking methods: All, except iDEAL QR and TrustPay -- <>: All, except in3 +- Banking methods: All, except iDEAL QR, TrustPay, and Bizum. +- <>: All, except in3 and Billink. - Wallets: [Alipay](/docs/alipay/), [Apple Pay](/docs/apple-pay/), [PayPal](/docs/paypal/) - Prepaid cards: - Beauty and Wellness gift card diff --git a/content/payment-methods/billink.md b/content/payment-methods/billink.md index ef0e8b36a..13e384f64 100644 --- a/content/payment-methods/billink.md +++ b/content/payment-methods/billink.md @@ -82,7 +82,14 @@ For example requests, on the [Create order](/reference/createorder/) page, in th ## Ready made solutions -The payment method will soon be available in our plugins. +Billink is supported in most ready-made integrations . + +- Exceptions: + - Craft Commerce + - Odoo + - OsCommerce + - Shopify + - Zen Cart ## Testing diff --git a/content/payment-methods/bizum.md b/content/payment-methods/bizum.md index c003dc2ef..fc424c4d6 100644 --- a/content/payment-methods/bizum.md +++ b/content/payment-methods/bizum.md @@ -105,7 +105,13 @@ See API reference – [Create order](/reference/createorder/) > Banking order. ## Ready made solutions -The payment method will soon be available in our plugins. +Bizum is supported in most ready-made integrations . + +- Exceptions: + - Craft Commerce + - Odoo + - OsCommerce + - Zen Cart ## Testing From a582b78524ef91863d95ab064d1b04cd63b022f0 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Mon, 27 Jan 2025 12:17:19 +0100 Subject: [PATCH 312/319] add auto year update --- landing-page/landing-page.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/landing-page/landing-page.html b/landing-page/landing-page.html index c411e7c1d..5f900642e 100644 --- a/landing-page/landing-page.html +++ b/landing-page/landing-page.html @@ -73,12 +73,14 @@

    Checkout solutions

    - + From 2fb7609efd108d5d66e48297b73db12f3378e1fb Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 27 Jan 2025 12:56:54 +0100 Subject: [PATCH 313/319] DOCS-4436: Klarna activation process (#3187) * DOCS-4436: Klarna activation process --- content/payment-methods/klarna.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/content/payment-methods/klarna.md b/content/payment-methods/klarna.md index bb3247f00..3b7a485c8 100755 --- a/content/payment-methods/klarna.md +++ b/content/payment-methods/klarna.md @@ -50,36 +50,36 @@ The table below sets out the <> and < Test account
    -1. At Klarna.com , sign up for a test account, selecting the **Playground** environment. -2. Under **Settings**, click **Generate new Klarna API credentials** to generate a user name and password. -3. Email these credentials to -4. MultiSafepay connects to Klarna. +1. Go to Klarna and click **Log in**. +2. Click **Select environment** > **Playground** to create a test account. Click **Sign Up**. +3. Follow the intructions to complete the registration process. +4. In the Klarna main panel, go to **Settings** and click **Generate new Klarna API credentials** to generate a test username and password. +5. Email these credentials to . +6. We will activate your Klarna test account for your MultiSafepay test account. -We recommend testing Klarna payments via the Klarna Portal to experience the full functionality. You can also test from your **test** MultiSafepay dashboard with more limited functionality. +You can test Klarna payments via the Klarna Portal on your MultiSafepay dashboard . -
    Live account
    -1. Sign up for a live Klarna account: - - Via the Klarna website, selecting the **Production** environment, **or** - - Email your Klarna account manager or -2. Specify MultiSafepay as your payment service provider and the countries you want to activate Klarna for. -3. Sign an agreement with Klarna, including pricing. -4. We activate Klarna for your MultiSafepay account. -5. If using a ready-made integration, activate Klarna in your <>. +1. To sign up for a live Klarna account, email your Klarna account manager or . +2. In your email, include the following details: + - MultiSafepay as your payment service provider. + - The websites and countries for which you want to activate Klarna. +3. Sign an agreement with Klarna. This agreement includes the pricing details. +4. We will activate Klarna for your MultiSafepay account. +5. If you are using a ready-made integration, activate Klarna in your <>. For questions, see Klarna – Klantenservice . -For support, email
    # Integration From c1f45f1b087b762ef1562934b065aedbce1073fb Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Mon, 27 Jan 2025 12:59:01 +0100 Subject: [PATCH 314/319] DOCS-4476: Adjust iDEAL test scenarios (#3196) * DOCS-4476: Adjust iDEAL test scenarios * DOCS-4476: Adjust iDEAL test scenarios --- content/payment-methods/testing.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/payment-methods/testing.md b/content/payment-methods/testing.md index e7a42687d..706917291 100644 --- a/content/payment-methods/testing.md +++ b/content/payment-methods/testing.md @@ -199,18 +199,16 @@ You can see the reason the transaction was declined in your MultiSafepay test ac
    1. [Create an order](/reference/createorder/) > Banking order (Example: iDEAL direct/redirect) -2. For <>, select a bank. -3. On the **Test platform** page, from the **Test scenario** list, select **Completed**. -4. Click **Test**. - The payment is processed in the test environment as **Successful**, with <> **Completed**, and <> **Completed**. - -You can also test the following scenarios: - -| Scenario | Description | -| --- | --- | -| **Declined** | The transaction was declined. | -| **Open** **Completed** | The transaction is initiated.
    After 1 minute, this changes to **Completed**. | -| **Open** **Declined** | The transaction is initiated.
    After 1 minute, this changes to **Declined**. | +2. For <> orders, open the payment link. +3. On the **Test platform** page, from the **Test scenario** list, select the desired transaction scenario. Refer to the table below for details. +4. Click **Test**. + +| Scenario | Description | +| ------------- | -------------------------------------------------------------------------- | +| **Success** | The transaction is initiated.
    Transaction will show as **Completed**. | +| **Failure** | The transaction is initiated.
    Transaction will show as **Declined**. | +| **Cancelled** | The transaction is initiated.
    Transaction will show as **Void**. | +| **Expired** | The transaction is initiated.
    Transaction will show as **Expired**. | From 9fb9d840279330d68b870f20622b21edd1ede4a0 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Tue, 28 Jan 2025 11:36:31 +0100 Subject: [PATCH 315/319] Docs 4146 (#3240) * DOCS-4146: Add POS terminal managemente instructions. Added refund feature to docs * DOCS-4146: Add POS terminal managemente instructions. Added refund feature to docs --- content/point-of-sale/smartPOS-features.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/content/point-of-sale/smartPOS-features.md b/content/point-of-sale/smartPOS-features.md index ad2bf73a1..86519c908 100644 --- a/content/point-of-sale/smartPOS-features.md +++ b/content/point-of-sale/smartPOS-features.md @@ -271,6 +271,21 @@ The QR reader is able to detect the following parameters: *** +## How to enable refunds + +1. Go to **Features** > **Payment**. +2. Click the **Allow refunds** toggle. +3. Enter your 4-digit PIN Code. + +Once this feature is activated, you can process refunds from your terminal. To do this: + +1. Go to **Features** > **History**. +2. Click the relevant transaction. +3. Click **Refund**. You can process full or partial refunds. +4. Click **Ok** > **Confirm**. + +*** + ## How to enable ❌ cancel 1. In the **Navigation** list, click the **Cancel button** toggle to the right. From 59c77e2a3b3eb926001d3d2f8293f9d9ce4b02fd Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Thu, 30 Jan 2025 14:01:13 +0100 Subject: [PATCH 316/319] DOCS-4444: Missing information about UBO IDs (#3241) * DOCS-4444: Missing information about UBO IDs * DOCS-4444: Missing information about UBO IDs * DOCS-4444: Missing information about UBO IDs --- api/multisafepay-api/getubo.md | 9 +++++++++ api/multisafepay-api/listubos.md | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 api/multisafepay-api/getubo.md create mode 100644 api/multisafepay-api/listubos.md diff --git a/api/multisafepay-api/getubo.md b/api/multisafepay-api/getubo.md new file mode 100644 index 000000000..9f60c1f39 --- /dev/null +++ b/api/multisafepay-api/getubo.md @@ -0,0 +1,9 @@ +--- +title: Get UBO +category: 62430422470152003dc86e53 +slug: getubo +--- + +## Authentication + +Authentication for this endpoint requires an account **API key**. To obtain your account **API key**, email . \ No newline at end of file diff --git a/api/multisafepay-api/listubos.md b/api/multisafepay-api/listubos.md new file mode 100644 index 000000000..a5cee26d8 --- /dev/null +++ b/api/multisafepay-api/listubos.md @@ -0,0 +1,9 @@ +--- +title: List UBO +category: 62430422470152003dc86e53 +slug: listaffiliateubos +--- + +## Authentication + +Authentication for this endpoint requires an account **API key**. To obtain your account **API key**, email . \ No newline at end of file From 42f97e7f3561017ff375dfd38743af950539478f Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Fri, 31 Jan 2025 12:55:00 +0100 Subject: [PATCH 317/319] update slug list transactions --- api/multisafepay-api/listpaymentmethods.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/multisafepay-api/listpaymentmethods.md b/api/multisafepay-api/listpaymentmethods.md index 0b5828ce2..cbc981d0a 100644 --- a/api/multisafepay-api/listpaymentmethods.md +++ b/api/multisafepay-api/listpaymentmethods.md @@ -1,7 +1,7 @@ --- title: List payment methods category: 62430422470152003dc86e53 -slug: listpaymentmethods-1 +slug: listpaymentmethods-1 --- ### Update iDeal 2.0 From e122c4fd57522b66c7ea84a9aeb5256bdd53d671 Mon Sep 17 00:00:00 2001 From: JesseSnnt Date: Wed, 5 Feb 2025 11:38:00 +0100 Subject: [PATCH 318/319] DOCS-4523: New MCP Website design (#3242) --- content/checkout/customization.md | 96 +++++++++++++++--- content/checkout/payment-pages.md | 162 +++++++++++++++++------------- content/getting-started/sites.md | 135 +++++++++++-------------- 3 files changed, 235 insertions(+), 158 deletions(-) diff --git a/content/checkout/customization.md b/content/checkout/customization.md index ff8057641..f4ed6d146 100644 --- a/content/checkout/customization.md +++ b/content/checkout/customization.md @@ -73,49 +73,112 @@ The payment component now looks like this: # Via the dashboard 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**, and then click the relevant site. -3. On the **Site profile** page, under **Style your checkout solution**, for **Payment component** click **Edit**. +2. Go to **Websites**, and then click the relevant website. +3. On the **Website profile** page, under **Style your checkout solution** > **Payment component**, click **Edit**. 4. On the **Components settings** page, under **Preview - Default**, select whether you want to: + - Apply the styling from another saved template. - Edit an existing template. - Style a new single payment method component. - Style a new multiple payment method component. - View the style in JSON format. -5. Under **Configure page style**, style the: + +5. Under **Configure page style**, you can customize the appearance of your payment components. Click on each section below to expand the options:
    - Container + Template simulator
    + The template simulator provides a preview of your payment page. Here, you can: - - To set the color of the container background, in the **Background color** field, enter the Hex color . - - To set the font for the field labels, from the **Font family** list, select a font. + - Set the Hex color for the background and text. + - Set the size in pixels (px) the font. + - Set the font family, style and weight. -
    +
    + +
    - Fields + Payment methods
    - - Set the Hex color for the background, placeholder text, label text, text entered by the customer, and the borders. - - Set the size in pixels (px) for the labels, font, border radius, and box shadow. + Customize the look of all payment methods and forms. Here, you can: + + - Set the Hex color for the background, text, and borders. You can also set a color for when the user hovers over each payment method. + - Set the size in pixels (px) for the font, border width and radius, and box shadow. + - Set the font family, style and weight. + - Set the border style. + +
    -
    - Settings for iDEAL issuers +
    + Payment form
    - - To add the default padding, border, and labels for the issuers container, select the **Embed mode** checkbox. - - To specify the layout of the issuers, from the **iDEAL issuer selection** list, choose **Select button**, **List**, or **Dropdown**. + Customize the appearance of your payment forms using the settings below. These options are divided into two categories: + + Under **General**: + + - Set the Hex color code for general background color, text, border, links and labels. + - Set the size in pixels (px) for the labels. + - Set the label's font weight. + +
    + + Under **Inputs**: + + - Set the Hex color code for the input's background, text, borders, placeholder text, focus and errors. + - Set the size in pixels (px) for the input's font, border width and radius. + - Set the font family, style and weight. Set the border style. + +
    - 6. To set this as your default template, select the **Set as default template** checkbox. +
    + Gateways settings +
    + + Customize the color and text for **Apple Pay** and **Google Pay** payment components. + To preview the changes, go to **Review - Default**, click **Select component view** > **Express methods (Google & Apple Pay)**. + + - Click on the **Style Apple Pay** checkbox to enable customization for **Apple Pay**. + - Click on the **Style Google Pay** checkbox to enable customization for the **Google Pay**. + +
    +
    + +
    + Settings +
    + + - Click the **Embed mode** checkbox to embed your payment component into your page. Enabling this settings will disable background and border customization for payment forms. Inputs can still be customized. + **⚠️ Note:** This only applies to **single components**. + - Enable the **MultiSafepay Payment Button** for multiple payment components clicking the checkbox. To customize the appearance of this button, go to the **Primary Button**. + +
    + +
    + +
    + Primary button +
    + + If you've enabled the **MultiSafepay Payment Button** in the **Settings** section, you can customize its appearance: + + - Set the Hex color code for the background, text and border. You can also change the color for mouseovers. + - Set the size in pixels (px) to change font size, border width, shadow and radius. + - Set the font weight clicking the **Font weight** dropdown menu. + +
    +6. To set this as your default template, select the **Set as default template** checkbox. 7. In the **Save template as** field, enter the name of the template (used as the `template_id`), and then click **Submit settings**. ---- +*** [block:html] { @@ -123,4 +186,5 @@ The payment component now looks like this: } [/block] + [Top of page](#) \ No newline at end of file diff --git a/content/checkout/payment-pages.md b/content/checkout/payment-pages.md index f18df9cb3..3c5e2c71a 100755 --- a/content/checkout/payment-pages.md +++ b/content/checkout/payment-pages.md @@ -204,118 +204,144 @@ If you include a `shopping_cart` object when you [create an order](/reference/cr
    -## Styling +## Styling -We recommend styling payment pages to be consistent with the look and feel of your site. +We recommend styling payment pages to be consistent with the look and feel of your website. ### Via the dashboard 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**, and then click the relevant site. -3. On the **Site profile** page, under **Functionality**, click **Edit template**. -4. On the **Payment page styling** page, under **Configure page style**: - +4. On the **Payv2 settings** page, under **Configure page style**, you can customize the appearance of various elements on your payment page. Click on the sections below to expand them and view the available options: -
    - How to style the header -
    + +
    -
    - How to style the body -
    +
    - Under **Configure page style** > **Body**, you can set the Hex color for the background, text, and links on the page and when the user mouses over them. +
    + How to style the header +
    -
    + Under **Configure page style** > **Header**, you can: -
    - How to style the body container -
    + - Set the header **Background** color. + - Select a **Background image** that you have uploaded under **Settings** > **Files**. - Under **Configure page style** > **Container**, you can set the Hex color for the background, text, labels, and links. +
    -
    +
    -
    - How to style the cart -
    - - Under **Configure page style** > **Cart**, you can set the Hex color for the background, border, text, and labels. +
    + How to style the body +
    -
    + Under **Configure page style** > **Body**, you can set the Hex color for the background, text, and links on the page and when the user hovers over them. -
    - How to style the payment form -
    +
    - Under **Configure page style** > **Payment form**, you can set the Hex color for the background, border, text, input border, and input labels. +
    -
    +
    + How to style the body container +
    -
    - How to style the buttons -
    + Under **Configure page style** > **Container**, you can set the Hex color for the background, text, labels, and links. - Under **Configure page style** > **Buttons**, you can set the Hex color for the background, border, text on the page and when moused over. +
    -
    +
    -
    - How to set a default template -
    +
    + How to style the cart +
    - If you have more than one template and want to set one as your default template, use the **Set default** option. You can also give this template a name, which is used as the `template_id`. + Under **Configure page style** > **Cart**, you can set the Hex color for the background, border, text, and labels. -
    +
    -
    - How to edit saved templates -
    +
    - Click **Edit template** (top-right corner). +
    + How to style the payment form +
    -
    + Under **Configure page style** > **Payment form**, you can set the Hex color for the background, border, text, input border, and input labels. -
    - How to duplicate styling to another template -
    +
    - - Click **Apply style from** (top-right corner). - - Select the relevant template. +
    -
    +
    + How to style the buttons +
    -
    - How to set a default template -
    + Under **Configure page style** > **Buttons**, you can set the Hex color for the background, border, text on the page and when hovered over. - To set this as the default template for this site, under **Configure page style**, click **Set as default template**. +
    -
    +
    -5. To save the finished template to the relevant site, enter a name in the **Save template as** field, and then click **Submit template**. +
    + How to set a default template +
    + If you have multiple templates, you can set one as your default: + + - Under **Configure page style**, click **Set as default template**. + - Enter a name for your template. This will define the `template_id`. + - Click **Submit settings**. + +
    + +
    + +
    + How to edit saved templates +
    + + To select a specific template you want to edit: + + - Click **Edit template** at the top-right corner. + - Select the relevant template you want to edit. + - You can change the settings, name, reset to default settings or delete your template. + +
    + +
    + +
    + How to duplicate styling to another template +
    + + - Select the template you want to apply the style to. + - Click **Apply style from** at the top-right corner. + - Select the relevant template. + - Click **Submit settings**. + +
    + +
    + +5. To save the finished template to the relevant website, enter a name in the **Save template as** field, and then click **Submit template**. ### Via the API You can dynamically style the payment page for specific order requests via our API. See: + - API reference – [Create order](/reference/createorder/) > Payment page/link > `payment_options` object - Recipes – Style the payment page . @@ -341,7 +367,7 @@ Some HTML tags and elements are supported and all others are stripped out. - table (width, border, bordercolor, cellpadding, cellspacing), thead, tbody, tfoot, th (width, scope, colspan, align), td (height, width, align, valign, colspan, bgcolor), tr (bgcolor, valign) - u, ul ---- +*** diff --git a/content/getting-started/sites.md b/content/getting-started/sites.md index 8376e52a8..2aa398111 100644 --- a/content/getting-started/sites.md +++ b/content/getting-started/sites.md @@ -7,101 +7,93 @@ parentDoc: 62b0845857c8ab006af6a4f7 slug: 'sites' --- -To set up your account, you must add at least one site (e.g. a website, app, or other application), for which we generate an API key. +To set up your account, you must add at least one website (e.g. a website, app, or other application), for which we generate an API key. -You can add an unlimited number of sites to your MultiSafepay account, but they must all be operated by the same legal entity linked to that account. +You can add an unlimited number of websites to your MultiSafepay account, but they must all be operated by the same legal entity linked to that account. -To process payments from a site operated by a separate legal entity, you must sign up for an additional MultiSafepay account. +To process payments from a website operated by a separate legal entity, you must sign up for an additional MultiSafepay account. -
    -How to add a site +
    +How to add a website
    1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**. -3. Click **Add new site**. - - From the **Category** list, select what type of products or services your site sells. - - In the **Description** field, enter the site name. - **⚠️ Note:** If relevant, this is displayed on MultiSafepay payment pages and the customer’s bank statement. - - In the **Base URL** field, add the site’s URL. This must be the URL where you receive payments. - - If you want to receive [status updates](/docs/payment-statuses/) via webhook, in the **Webhook URL** field, enter a URL for us to send them to. -4. Click **Save**. - A **Sites** page for the new site appears, including the site ID, API key, and security code. +2. Go to **Websites**. +3. Click **Add new website**. + - From the **Category** list, select what type of products or services your website sells. + - From the **Subcategory** list, select the specific products or services based on the chosen category. + - In the **Description** field, enter the website name. + **⚠️ Note:** This is displayed on MultiSafepay payment pages and the customer’s bank statement. + - In the **Base URL** field, add the website’s URL. This must be the URL where you receive payments. + - If you want to receive [status updates](/docs/payment-statuses/) via webhook, in the **Webhook URL** field, enter a URL for us to send them to. +4. Click **Save**. You will be redirected to the panel of your new **website**, where you can manage different functionalities. Here, you will also find the **Website ID**, **API key**, and **Security code**. 5. Optionally, provider your **Customer support phone** and **Customer support email**. -6. To style your payment page for this site, see Payment pages – [Styling](/docs/payment-pages/#styling). -
    +6. To learn how to style your payment page for this website, see Payment pages – [Styling](/docs/payment-pages/#styling). +
    How to connect a site to your backend
    -To connect a site to your <>, enter the required details: +To connect a website to your <>, enter the required details: -- Most [ready-made integrations](/docs/our-integrations/): Your [site ID, API key, and security code](#site-id-api-key-and-security-code), and account ID (top-right corner of your dashboard) -- [API integrations](/docs/api-integration/): Your [site API key](#site-id-api-key-and-security-code) +- Most [ready-made integrations](/docs/our-integrations/): Your [website ID, API key, and security code](#site-id-api-key-and-security-code), and account ID (top-right corner of your dashboard) +- [API integrations](/docs/api-integration/): Your [website API key](#site-id-api-key-and-security-code) To validate the connection, [place a test order](/docs/testing/).
    -
    -___ +*** # User guide -## Block/unblock a site +## Block/unblock a website -
    -How to block/unblock a site -
    +To block or unblock a website: 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**, and then click the relevant site. -3. On the **Sites** page, from the **Status** list: - - To block, select **Blocked**. - - To unblock, select **Active**. -4. Click **Save changes**. - ✅   On the **Sites** page, the site's status changes to **Blocked**. +2. Go to **Websites**, and then click the relevant website. +3. On the **Website** panel, from the **Status** list select: + - **Blocked**, to block the website. + - **Active**, to unblock the website. +4. Click **Save changes**. -
    +✅ On the **Websites** overview page, the website's status changes to **Blocked**. -## Delete/restore a site +*** -
    -How to delete/restore a site -
    +## Delete/restore a website -To delete a site: +To delete a website: 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**. -3. On the row of the relevant site, click ❌   **Disable payments** > **Delete**. - ✅   The site profile disappears from the **Sites** page. +2. Go to **Websites**. +3. On the row of the relevant site, click ❌   **Disable payments** > **Delete**. -To restore the site: +✅ The website profile disappears from the **Websites** page. -1. On the **Sites** page, select the **Show deleted sites** checkbox. -2. On the row of the relevant site, click the trash can icon **Restore site** > **Yes**. -3. To return to the **Sites** overview page, deselect the **Show deleted sites** checkbox. - ✅   The site profile reappears on the **Sites** page. +To restore a website: -
    +1. On the **Websites** overview page, click **Show deleted websites**. +2. From the list of websites, click **Restore website** > **Yes**. +3. To return to the **Websites** overview page, deselect the **Show deleted websites** checkbox. -## Disable/enable payments for a site +✅   The website profile reappears on the **Websites** page. -You can temporarily disable payments for a site, and then re-enable them. +*** -
    -How to disable/enable payments for a site -
    +## Disable/enable payments for a website + +You can temporarily disable payments for a website, and then re-enable them. 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**. -3. On the row of the relevant site: - - To disable payments, click ❌   **Disable payments** > **Yes**.
    On the **Sites** page, the site's status changes to **Blocked**. - - To enable payments, click ✅   **Enable payments** > **Yes**.
    On the **Sites** page, the site's status changes to **Active**. +2. Go to **Websites**. +3. On the row of the relevant website: + - To disable payments, click ❌   **Disable payments** > **Yes**.
    On the **Websites** page, the website's status changes to **Blocked**. + - To enable payments, click ✅   **Enable payments** > **Yes**.
    On the **Websites** page, the website's status changes to **Active**. -
    +*** ## Logos and icons @@ -113,7 +105,7 @@ For the logos and icons of all MultiSafepay payment methods, see our GitHub repo How to generate a PNG of logos
    -To generate a portable network graphic (PNG) of a payment method logo to display on your site, follow these steps: +To generate a portable network graphic (PNG) of a payment method logo to display on your website, follow these steps: 1. Sign in to your MultiSafepay dashboard . 2. Go to **Settings** > **Logo designer**. @@ -121,27 +113,23 @@ To generate a portable network graphic (PNG) of a payment method logo to display 4. From the **Select elements** window, select the logos you want to include. 5. Under **Result logo**, check the preview. 6. Under **Order icons**, you can: - - Drag and drop logos to change the order in which they display. - - Remove logos by clicking **Remove**. + - Drag and drop logos to change the order in which they display. + - Remove logos by clicking **Remove**. 7. When you are happy with the preview, to generate the PNG image, click **Download**. -## Site ID, API key, and security code +## Website ID, API key, and Security code To view the ID, API key, and security code for a website: 1. Sign in to your live or test MultiSafepay dashboard. 2. Go to **Websites**, and then click on the relevant website. -3. You can find the website ID, API key, and security code in the top-right corner of the page. - -To view the ID and API key for a terminal group: - -1. Sign in to your live or test MultiSafepay dashboard. -2. Go to **Devices** > **Terminals**. -3. Click on **Manage groups**. -4. A list of all available terminal groups will be displayed, showing the ID and API key for each group. - +3. You can find the website ID, API key, and security code in the top-right corner of the page. To view the ID and API key for a terminal group: +4. Sign in to your live or test MultiSafepay dashboard. +5. Go to **Devices** > **Terminals**. +6. Click on **Manage groups**. +7. A list of all available terminal groups will be displayed, showing the ID and API key for each group. ## Specify company name @@ -154,15 +142,13 @@ You can specify how your company name appears on customer bank statements (if su To set how your company name displays, follow these steps: 1. Sign in to your MultiSafepay dashboard . -2. Go to **Sites**, and then click the relevant site. -3. In the **Site name** field, enter the name to display (maximum 35 characters). +2. Go to **Websites**, and then click the relevant site. +3. In the **Website name** field, enter the name to display (maximum 35 characters). 4. Click **Save**. -
    - ---- +*** [block:html] { @@ -170,4 +156,5 @@ To set how your company name displays, follow these steps: } [/block] + [Top of page](#) \ No newline at end of file From 73f7c2e38f7eef83466398123e01f05181cb3d11 Mon Sep 17 00:00:00 2001 From: Jesse Sinnathamby Date: Thu, 6 Feb 2025 11:09:25 +0100 Subject: [PATCH 319/319] correct title for Websites --- content/getting-started/sites.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/getting-started/sites.md b/content/getting-started/sites.md index 2aa398111..c18c4458d 100644 --- a/content/getting-started/sites.md +++ b/content/getting-started/sites.md @@ -1,5 +1,5 @@ --- -title: "Sites" +title: "Websites" category: 627bbcf80c1c9c0050320b60 order: 12 hidden: false