From 2151e1394742c5e60309b2529a2c6cd749edfba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Tue, 5 Nov 2024 07:49:53 +0100 Subject: [PATCH 001/199] ACP-4047 Added Express Checkout Payment Flow to APIs overview. --- ...s-and-overview-diagrams-for-payment-service-providers.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md index ae594fbf293..deb22e71e9f 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md @@ -45,6 +45,12 @@ The following diagram explains the flow of a headless payment page based on Glue For information about endpoints and messages, see the following sections. +The following diagram explains the flow of a headless payment page with an express-checkout payment method based on Glue API. + +![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) + +The main difference here is that the customer skips most of the default checkout steps and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via another API call to get the customer's data. This data can then be used on SCOS side to update e.g. addresses. + ## Asynchronous API All PSP integrations are based on a asynchronous API. The asynchronous API is used to process payments and refunds. The following asynchronous messages are used: From d17df33024de1b9802f87ebb6452d524a69ea52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Tue, 5 Nov 2024 09:10:20 +0100 Subject: [PATCH 002/199] ACP-4350 Added Payment Method Strategy page. --- .../base-shop/payment-method-strategies.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md new file mode 100644 index 00000000000..c4ecaefe81a --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -0,0 +1,82 @@ +--- +title: Payment method strategies +description: This doc describes the different payment method strategies available in Spryker Commerce OS. +last_updated: Nov 5, 2024 +template: howto-guide-template +originalLink: ... +originalArticleId: ... +redirect_from: + - ... +--- + + +## Payment Method Strategies + +Spryker and the provided Payment Service Provide Apps (PSP) support various payment methods. Each of them is configured on the App side to use a different strategy. The strategy defines where and how the Payment Method or the Payment Service Provider elements (mostly the payment form) are displayed in the shop. + +The following strategies are available: + +- **hosted-payment-page**: The customer is redirected to the PSP page (Hosted Payment Page) after the order is submitted to complete the payment. +- **express-checkout**: One or more buttons are displayed e.g. on the Cart Page or the PDP Page. + +[//]: # (- **embedded**: The payment form is embedded in the shops summary page.) + +The strategy is defined in the PaymentMethodTransfer object. The PaymentMethodTransfer object is used to transfer the payment method data between the shop and the PSP. When the App is configured in the ACP App Catalog, the PaymentMethod data is sent via an AsyncAPI to SCOS and is persisted in the database. The configuration is a JSON string which will be mapped to the PaymentMethodTransfer object. + +The PaymentMethodTransfer contains a PaymentMethodAppConfigurationTransfer object. The PaymentMethodAppConfigurationTransfer object contains the CheckoutStrategyTransfer. The CheckoutStrategyTransfer contains the strategy name. The strategy name is used to determine where and how the Payment Method or the Payment Service Provider elements are displayed in the shop. + +When no strategy is used the `hosted-payment-page` strategy is used by default. + +## Express Checkout + +When the PaymentMethod is using the `express-checkout` strategy, specific buttons for this Payment Method are displayed in the shop. The buttons are displayed e.g. on the Cart Page or the PDP Page. The buttons are created by the PaymentMethodViewExpander. The PaymentMethodViewExpander is a part of the Payment module and is responsible for expanding the payment method data with the view data. The PaymentMethodViewExpander is used by the PaymentMethodViewPlugin. The PaymentMethodViewPlugin is a part of the Checkout module and is responsible for rendering the payment method data in the shop. + +To be able to display the buttons in the Shop, the CheckoutConfigurationTransfer contains all information needed to display the buttons. An example configuration looks as following: + +```json +{ + "base_url": "https://app-xyz.spryker.com", + "endpoints": [ + ... + ], + "checkout_configuration": { + "strategy": "express-checkout", + "scripts": [ + { + "url": "https://sandbox.paypal.com/sdk/js?client-id=AUn5n-...&merchant-id=3QK...&intent=authorize&commit=true&vault=false&disable-funding=card,sepa,bancontact&enable-funding=paylater", + "query_params": { + "currency": "currencyName", + "locale": "localeName" + } + } + ], + "payment_service_provider_data": { + "clientId": "AUn5n-...", + "merchantId": "3QK...", + "isLive": false + } + } +} +``` + +The main elements of this JSON configuration are the strategy and the scripts. + +The `strategy` is set to `express-checkout` to define that the Payment Method should be displayed as a button in the shop. + +The `scripts` array contains the URLs to the scripts that are needed to display the button. The URL is used to load the script in the shop. The query_params are used to add key=value pairs to the URL with the actual values. The actual values are taken from the `\SprykerShop\Yves\PaymentAppWidget\Reader\PaymentMethodScriptReaderInterface` which is used in the Storefront to expand the script as needed. The `key` is the name that has to be used as query param key in the URL and the value defines which value should be used. The `currency` and `locale` are the most common values that are used in the scripts. + +The `payment_service_provider_data` contains the data that can be used by projects to configure the Payment Method. Those value may differ for each different Payment Method. + +## Hosted Payment Page Flow + +The default checkout guides a customer through various steps such as the cart, the address, the shipment, and the payment step. After that the customer is shown the Summary Page where he submits the Order. After the order is successfully placed in the Back Office, the Customer is redirected to a Hosted Payment Page where he completes the Payment. + + +## Express Checkout Payment Flow + +The Express Checkout Payment Flow belongs to so called PreOrderPayments. PreOrderPayments are payments that are done before the actual order is placed. The Express Checkout Payment Flow is a two-step process. The first step is to authorize the payment and the second step is to capture the payment. The authorization is done when the customer clicks on the button in the shop. The capture is done when the order is placed. + +Here the flow is different to the Hosted Payment Page flow. The customer will see e.g. on the Product Detail Page or the Cart Page a button to pay with the Payment Method. When the customer clicks on the button, the payment is initialized and a model is opened where the customer completes the payment. After that the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. + +Additionally, those Express Checkout Payment Methods provide customer data that can be used to prefill the checkout form. This data can contain e.g. customer data, address data or alike. + From e2bc92e9382790266980f28afd6b6eb9f1920e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Tue, 5 Nov 2024 10:59:06 +0100 Subject: [PATCH 003/199] ACP-4350 Added PayOne PayPal Express checkout for headless applications. --- .../payone-acp-app.md | 168 +++++++++++++++++- 1 file changed, 163 insertions(+), 5 deletions(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 4c387ba214d..0fb429f88d8 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -87,11 +87,169 @@ When customers pay with PayPal, a shop owner can do the following: - Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. - Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. -## Current limitations - -- Payments can be properly canceled only from the the Back Office and not from the Payone PMI. -- Payments can't be partially canceled. One payment intent is created per order and it can either be authorized or fully cancelled. -- When an item is canceled on the order details page, all order items are canceled. +## Implementing PayOne PayPal Express for checkout in a headless application + +Use this approach for headless applications with third-party frontends. + +### Install modules + +Install or upgrade the modules to the specified or later versions: +- `spryker/kernel-app:1.2.0` +- `spryker/payment:5.27.0` +- `spryker/payments-rest-api:1.4.0` + +### Pre-order payment flow + +When PayOne PayPal Express is integrated into a headless application, orders are processed using a pre-order payment flow: + +1. The customer either selects PayPal Express as the payment method at the Product Detail page or the Cart Page. +2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: +* Payment provider name: Payone +* Payment method name: PayPal Express +* Payment amount +* Quote data +3. Back Office sends the quote data and the payment amount to the PayOne app through an API. +4. The payment with the given data is persisted in the PayOne app. +5. PayOne app makes a request through an API to PayOne to `preauthorize` the payment. +6. PayOne returns a JSON response with the following parameters: +* transactionId +* orderId +* workorderid +* token +* currency +* clientId +* merchantId +7. When the customer clicks "Complete Purchase" the modal closes and the customer data is requested. +8. After this the customer should be redirected to the summary page. +9. Here he should see his address data that was received from PayPal, and he can change the data or submit it which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. +10. The customer is redirected to the application's success page. +11. PayOne app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. + The `order_reference` is passed to the PayOne app to be connected with `transaction_id`. +12. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. +13. Depending on payment status, one of the following messages is returned through an asynchronous API: +* Payment is successful: `PaymentAuthorized` message. +* Payment is failed: `PaymentAuthorizationFailed` message. +14. Further on, the order is processed through the OMS. + +All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. + + +### Example of the headless checkout with PayOne + +The PaymentMethods which are returned by the `/checkout-data?include=payment-methods` endpoint are used to render the express-checkout buttons e.g. on the Product Detail Page or the Cart Page. The customer can select the payment method and proceed to the payment page. + +You can read more details about this in the [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html) document. + +When the custome clicks on "Pay with PayPal Express" button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. + +#### Pre-order payment initialization + +```JS + +async initializePreOrderPayment() { + const requestData = { + data: { + type: 'payments', + attributes: { + quote: QUOTE_DATA, + payment: { + amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint + paymentMethodName: 'PayPal Express', // taken from /checkout-data?include=payment-methods + paymentProviderName: 'PayOne', // taken from /checkout-data?include=payment-methods + }, + preOrderPaymentData: { + "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests + }, + }, + }, + }; + + const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, + }, + body: JSON.stringify(requestData), + }); + + // This gets passed back from the App server and is different for each PSP + this.preOrderPaymentData = responseData.data.attributes.preOrderPaymentData; + + return this.preOrderPaymentData; // This has to be forwarded in any upcoming request + } + +``` + +To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. + +After making a request to the PayOne API, the payment is created in the PayOne app. The response looks as follows: + +```JSON +{ + "data": { + "type": "payments", + "attributes": { + "isSuccessful": true, + "error": null, + "preOrderPaymentData": { + "transactionId": "...", + "orderId": "...", + "workorderid": "...", + "token": "...", + "currency": "USD", + "merchantId": "..." + } + } + } +} +``` + +After the customer clicks "Complete Purchase" in the PayPal Express modal he should be redirected to the summary page. + +Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs tpo be made to get the customer data. + +#### Getting the customer data + +```JAVASCRIPT +async getCustomerData() { + const url = `${this.SCOS_BASE_URL}/payment-customer`; + + const requestData = { + data: { + type: 'payment-customer', + attributes: { + "payment": { + paymentMethodName: 'paypal-express', + paymentProviderName: 'payone', + }, + "customerPaymentServiceProviderData": this.preOrderPaymentData + }, + }, + }; + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.accessToken}`, + }, + body: JSON.stringify(requestData), + }); + + const responseData = await response.json(); + + console.log(responseData); + + return responseData.data.attributes.customer; +} +``` + +This data must be used to fill the quote with the missing data of the custer. + +When the customer submits the order, the payment data is sent to PayOne. + +After this, the customer should be redirected to the success page or in case of a failure to an error page. ## Next steps From f03997d4a92d1cc4a2ef1bfaf501f24bef304775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Tue, 5 Nov 2024 11:02:00 +0100 Subject: [PATCH 004/199] ACp-4350 Updated outdated list of Apps --- docs/pbc/all/pbc.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/pbc/all/pbc.md b/docs/pbc/all/pbc.md index 2097fbf82d0..bd98822bd54 100644 --- a/docs/pbc/all/pbc.md +++ b/docs/pbc/all/pbc.md @@ -63,11 +63,12 @@ This section is in beta because not all the PBCs are covered. Marketplace functi
-| NAME | CATEGORY | -| --- | --- | -| [Algolia](/docs/pbc/all/search/{{site.version}}/base-shop/third-party-integrations/algolia/algolia.html) | Search | -| [Bazaarvoice](/docs/pbc/all/ratings-reviews/{{site.version}}/third-party-integrations/bazaarvoice.html) | Ratings and Reviews | +| NAME | CATEGORY | +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | +| [Algolia](/docs/pbc/all/search/{{site.version}}/base-shop/third-party-integrations/algolia/algolia.html) | Search | +| [Bazaarvoice](/docs/pbc/all/ratings-reviews/{{site.version}}/third-party-integrations/bazaarvoice.html) | Ratings and Reviews | | [Payone](/docs/pbc/all/payment-service-provider/{{site.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.html) | PSP (Payment Service Provider) | -| [Usercentrics](/docs/pbc/all/usercentrics/usercentrics.html) | CMP (Consent Management Platform) | +| [Stripe](/docs/pbc/all/payment-service-provider/{{site.version}}/base-shop/third-party-integrations/stripe/stripe.html) | PSP (Payment Service Provider) | +| [Usercentrics](/docs/pbc/all/usercentrics/usercentrics.html) | CMP (Consent Management Platform) |
From 3d6e21feefbaa0120f442d4864a47c82cd91b3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 6 Nov 2024 06:26:36 +0100 Subject: [PATCH 005/199] Update docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md Co-authored-by: Stanislav Matveyev --- .../app-composition-platform-integration/payone-acp-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 0fb429f88d8..f9fc16bfab0 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -131,7 +131,7 @@ When PayOne PayPal Express is integrated into a headless application, orders are * Payment is failed: `PaymentAuthorizationFailed` message. 14. Further on, the order is processed through the OMS. -All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. +All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. ### Example of the headless checkout with PayOne From f9279e7d521770006692823b9ea0268ac2a3d222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 6 Nov 2024 07:56:04 +0100 Subject: [PATCH 006/199] ACP-4047 Update after CodeReview. --- ...-diagrams-for-payment-service-providers.md | 2 +- .../base-shop/payment-method-strategies.md | 49 +++++++++++++++++++ .../payone-acp-app.md | 11 ++++- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md index deb22e71e9f..0e0ffe1a9b6 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md @@ -49,7 +49,7 @@ The following diagram explains the flow of a headless payment page with an expre ![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) -The main difference here is that the customer skips most of the default checkout steps and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via another API call to get the customer's data. This data can then be used on SCOS side to update e.g. addresses. +The main difference here is that the customer skips most of the default checkout steps such as enter addresses and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via the Glue `/payment-customer` API call. The returned data can then be used on SCOS side to update e.g. addresses. ## Asynchronous API diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index c4ecaefe81a..46db8fd9428 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -67,6 +67,55 @@ The `scripts` array contains the URLs to the scripts that are needed to display The `payment_service_provider_data` contains the data that can be used by projects to configure the Payment Method. Those value may differ for each different Payment Method. +### Query Params for Scripts + +It is important to understand who is responsible for what. The App itself knows only which query params (keys) are needed. The Shop knows which values are needed and where to get them from. + +For example the script must be like `https://example.com/js?currency=EUR`. The App knows that the `currency` is needed but can't know which one is used in the Shop. The Shop knows that the used `currency` is `EUR`. + +The App defines a Scrtipt like this + +```json +{ + "scripts": [ + { + "url": "https://example.com/js", + "query_params": { + "currency": "currencyName" + } + } + ] +} +``` + +The Shop loads this information and parses the `currencyName` to `EUR` and the final URL is `https://example.com/js?currency=EUR`. + +Why not simpler and only using a key? The answer is easy aURL could look like `https://example.com/js?c=EUR` where the key can't be used anymore to determine what the value should be. + +In this example the App would define the script like this + +```json +{ + "scripts": [ + { + "url": "https://example.com/js", + "query_params": { + "c": "currencyName" + } + } + ] +} +``` + +So that the Shop can understand that `c` has to be used as param key in the URL and the value is the name of the currency `currencyName`. + +Current on SCOS side supported query params: + +- `currencyName` +- `localeName` + +This list may extend over time when new query params are needed. + ## Hosted Payment Page Flow The default checkout guides a customer through various steps such as the cart, the address, the shipment, and the payment step. After that the customer is shown the Summary Page where he submits the Order. After the order is successfully placed in the Back Office, the Customer is redirected to a Hosted Payment Page where he completes the Payment. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index f9fc16bfab0..fae4db01947 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -168,7 +168,7 @@ async initializePreOrderPayment() { method: 'POST', headers: { 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, + Authorization: `Bearer ACCESS_TOKEN`, // taken from /access-tokens }, body: JSON.stringify(requestData), }); @@ -207,7 +207,7 @@ After making a request to the PayOne API, the payment is created in the PayOne a After the customer clicks "Complete Purchase" in the PayPal Express modal he should be redirected to the summary page. -Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs tpo be made to get the customer data. +Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs to be made to get the customer data. #### Getting the customer data @@ -251,6 +251,13 @@ When the customer submits the order, the payment data is sent to PayOne. After this, the customer should be redirected to the success page or in case of a failure to an error page. + +## Current limitations + +- Payments can be properly canceled only from the the Back Office and not from the Payone PMI. +- Payments can't be partially canceled. One payment intent is created per order and it can either be authorized or fully cancelled. +- When an item is canceled on the order details page, all order items are canceled. + ## Next steps [Integrate Payone](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/integrate-payone.html) From fbe2c8cfc12facefa36d4e8154d6910cbdfae208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 6 Nov 2024 13:15:18 +0100 Subject: [PATCH 007/199] ACP-4350 Fixed SCOS_BASE_URL to be GLUE_BASE_URL --- .../app-composition-platform-integration/payone-acp-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index fae4db01947..53813e0dbfc 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -213,7 +213,7 @@ Since we skipped some important checkout steps here (addresses, shipment method, ```JAVASCRIPT async getCustomerData() { - const url = `${this.SCOS_BASE_URL}/payment-customer`; + const url = `${this.GLUE_BASE_URL}/payment-customer`; const requestData = { data: { From d201f2d6a07b0ca318c866fdc94e8fd7d4117512 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 7 Nov 2024 17:01:07 +0200 Subject: [PATCH 008/199] ACP-3963: Algolia app features and configuration updates. --- .../algolia/configure-algolia.md | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index b865b779042..86236b636a3 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -28,23 +28,25 @@ To configure Algolia, do the following: 7. From the **Your API Keys** tab, copy the following keys: - Application ID - - Search-Only API Key + - Search API Key - Admin API Key 8. Go back to your store's Back Office, to the Algolia app details page. 9. In the top right corner of the Algolia app details page, click **Configure**. -10. In the **Configure** pane, fill in the **APPLICATION ID**, **SEARCH-ONLY API KEY**, and **ADMIN API KEY** fields with the values from step 7. +10. In the **Configure** pane, fill in the **APPLICATION ID**, **SEARCH API KEY**, and **ADMIN KEY** fields with the values from step 7. ![algolia-settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/algolia/integrate-algolia/algolia-settings.png) -11. Click **Save**. +12. "Use Algolia instead of Elasticsearch" checkbox enables Algolia search on your frontends (Yves or Glue API-based application). +You can postpone checking it until all your products are synchronized with Algolia. +13. Click **Save**. The Algolia app is now added to your store and starts exporting your product data automatically. {% info_block infoBox "Info" %} -You need to wait for a few minutes until Algolia finishes the product export. -The more products you have, the longer you have to wait. -The average export speed is around *100 products per minute*. +You need to wait some time until Algolia finishes the product export. +The more products you have, the longer you have to wait (from few minutes to several hours). +The average export speed is around *300 products per minute*. {% endinfo_block %} @@ -80,9 +82,13 @@ Algolia's **Searchable attributes** configuration determines which attributes ar Default fields for searchable attributes are the following: - `sku` +- `product_abstract_sku` - `name` +- `abstract_name` +- `category` - `description` - `keywords` +- `attributes.brand` ### Adjust the searchable attributes list in Algolia @@ -95,7 +101,7 @@ Default fields for searchable attributes are the following: ### Send additional fields to Algolia -Spryker's Algolia PBC integration allows adding additional data to exported products. +Spryker's Algolia App integration allows adding additional data to exported products. This is achieved using the pre-configured `searchMetadata` field on ProductConcrete and ProductAbstract transfers. #### Filling in the `searchMetadata` field @@ -164,6 +170,12 @@ The `prices` attribute is an object with nested fields. Algolia creates facets f #### Facet configuration +##### Facet display + +All configured index Facets will be displayed in the list of filter on Yves or via Glue API `/catalog-search`. +Also, Spryker's Algolia app supports `renderingContent` feature, which can be found in an index "Configuration > Facet display". +Here you can configure the order of facets and add only relevant for end-users facets. + ##### Searchable Attributes defined as searchable may be used while calling Algolia's `searchForFacetValues` method, which can be used for the Storefront integration. This method is necessary to display catalog page facets if many values are possible for each facet—in this case, only 100 of those values are displayed by default. Accessing other values requires searching for them using the `searchForFacetValues` method. Select this option if you plan on having a large number of different values for this facet, and if you use the Spryker Storefront. @@ -180,15 +192,21 @@ Setting an attribute as `filter only` prevents it from showing in the facets lis ##### Not searchable -Default option. This facet configuration enables aggregation of search results by facet values. `searchForFacetValues` method can't be used with facets configured this way. Use this option when you have limited facet values or plan on using something other than the Spryker Storefront. +Default option. This facet configuration enables aggregation of search results by facet values. +`searchForFacetValues` method can't be used with facets configured this way. +Use this option when you have limited facet values or plan on using something other than the Spryker Storefront. ##### After distinct checkbox -This checkbox is checked by default. Clearing this checkbox changes the calculation method for facet aggregation for the given field. By default, facet aggregation is calculated after search results for a given query are processed by deduplication or grouping process. It is not recommended to turn this checkbox off. +This checkbox is checked by default. Clearing this checkbox changes the calculation method for facet aggregation for the given field. +By default, facet aggregation is calculated after search results for a given query are processed by deduplication or grouping process. +It is not recommended to turn this checkbox off. -#### Algolia and Glue API facets interaction +#### Spryker Filter Preferences and Algolia app -When used with Algolia PBC, Spryker facets configuration is ignored and Algolia facets configuration is used instead. This means that Glue API response fields `"valueFacets"` and `"rangeFacets"` include facets configured in Algolia. Be wary that setting any Algolia facet to `"filter only"` mode removes it from the corresponding field in Glue API response. +When used with Algolia ACP, Spryker facets configuration is ignored and Algolia facets configuration is used instead +Use "Configuration > Facet display" to configure the list of filter. +Be wary that setting any Algolia facet to `"filter only"` mode removes it from the list of visible filters. ### Add new attributes for faceting @@ -203,7 +221,8 @@ When used with Algolia PBC, Spryker facets configuration is ignored and Algolia ![algolia-ranking](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-ranking.png) -Algolia's **Ranking and sorting** configuration determines which products can be shown before others when customers search your catalog. Learn more about Custom Ranking and Sorting in the [Algolia documentation](https://www.algolia.com/doc/guides/managing-results/must-do/custom-ranking/). +Algolia's **Ranking and sorting** configuration determines which products can be shown before others when customers search your catalog. +Learn more about Custom Ranking and Sorting in the [Algolia documentation](https://www.algolia.com/doc/guides/managing-results/must-do/custom-ranking/). ## Retain Algolia configuration after a destructive deployment From e7084df18ae51ca11c133b032b32d5f46de253a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Fri, 8 Nov 2024 11:05:44 +0100 Subject: [PATCH 009/199] ACP-4350 Separated pages. --- ...for-payment-service-providers-async-api.md | 45 +++++++++ ...vice-providers-configure-and-disconnect.md | 32 +++++++ ...ice-providers-headless-express-checkout.md | 24 +++++ ...-for-payment-service-providers-headless.md | 26 ++++++ ...t-service-providers-hosted-payment-page.md | 22 +++++ ...ment-service-providers-oms-payment-flow.md | 27 ++++++ ...-for-payment-service-providers-sync-api.md | 34 +++++++ ...-diagrams-for-payment-service-providers.md | 92 ++----------------- 8 files changed, 219 insertions(+), 83 deletions(-) create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md new file mode 100644 index 00000000000..96141214850 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md @@ -0,0 +1,45 @@ +--- +title: Asynchronous API overview for payment service providers +description: Overview of PSP Asynchronous API +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +## Asynchronous API + +All PSP integrations are based on a asynchronous API. The asynchronous API is used to process payments and refunds. The following asynchronous messages are used: + +Sent from the app: +* `AddPaymentMethod`: A new payment method is added. +* `UpdatePaymentMethod`: A payment method is updated. +* `DeletePaymentMethod`: A payment method is deleted. +* `PaymentAuthorized`: A payment is authorized. +* `PaymentAuthorizationFailed`: Payment authorization fails. +* `PaymentCaptured`: Payment is captured. +* `PaymentCaptureFailed`: Payment capture fails. +* `PaymentRefunded`: A payment is refunded. +* `PaymentRefundFailed`: Payment refund fails. +* `PaymentCanceled`: A payment is canceled. +* `PaymentCancellationFailed`: Payment cancellation fails. +* `PaymentCreated`: A payment is created. +* `PaymentUpdated`: A payment is updated. +* `ReadyForMerchantAppOnboarding`: App is ready to onboard merchants. +* `MerchantAppOnboardingStatusChanged`: Merchant app onboarding status changes. +* `AppConfigUpdated`: App configuration is updated. + +Sent from Spryker: +* `CancelPayment`: Initiates payment cancellation. +* `CapturePayment`: Initiates payment capture. +* `RefundPayment`: Initiates payment refund. + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md new file mode 100644 index 00000000000..208073c0d95 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md @@ -0,0 +1,32 @@ +--- +title: API and overview diagram the configure and disconnect flows for payment service providers +description: Overview of configuration and disconnect flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +The following diagram explains the configuration and disconnect flows for a payment app. + +![configure-and-disconnect-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/configure-and-disconnect-flows.png) + +The following messages are optional: +* `AddPaymentMethod` +* `UpdatePaymentMethod` +* `DeletePaymentMethod` +* `ReadyForMerchantAppOnboarding` + +The Payment Method related messages are used to manage payment methods in Spryker. These messages are sent only when a payment method configuration changes or when the list of available payment methods changes. + +The `ReadyForMerchantAppOnboarding` message is used to inform Spryker that the app is ready to onboard merchants; used only for marketplace projects. + +### Further reading + +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md new file mode 100644 index 00000000000..ae04b3ef1fb --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md @@ -0,0 +1,24 @@ +--- +title: API and overview diagram the Headless express-checkout payment flow for payment service providers +description: Overview of the Headless payment flow with express-checkout payment methods +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +The following diagram explains the flow of a headless payment page with an express-checkout payment method based on Glue API. + +![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) + +The main difference here is that the customer skips most of the default checkout steps such as enter addresses and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via the Glue `/payment-customer` API call. The returned data can then be used on SCOS side to update e.g. addresses. + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md new file mode 100644 index 00000000000..c81c7c0e91f --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md @@ -0,0 +1,26 @@ +--- +title: API and overview diagram the Headless payment flow for payment service providers +description: Overview of the Headless payment flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +The following diagram explains the flow of a headless payment page based on Glue API. + +![headless-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-payment-flow.png) + +`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when the headless implementation requires a cancellation. + +For information about endpoints and messages, see the following sections. + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md new file mode 100644 index 00000000000..9eeeba89c8c --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md @@ -0,0 +1,22 @@ +--- +title: API and overview diagram the Hosted payment page flow for payment service providers +description: Overview of the Hosted payment page flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +The following diagram explains the hosted payment page flow. + +![hosted-payment-page-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/hosted-payment-page-flow.png) + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md new file mode 100644 index 00000000000..ffa746a8de5 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md @@ -0,0 +1,27 @@ +--- +title: API and overview diagram the OMS payment flow for payment service providers +description: Overview of POMS payment flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + +The following diagram shows the flow of an order in the OMS together with an app. + +![oms-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/oms-payment-flow.png) + +Optional elements: +* `/payments/transfers` transfers request: used only in marketplaces. +* `CancelPayment` message: used only when a payment needs to be canceled. +* `RefundPayment` message: used only when the refund process is triggered for one or more order items. + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md new file mode 100644 index 00000000000..433c089d990 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md @@ -0,0 +1,34 @@ +--- +title: Synchronous API overview +description: Overview of Synchronous API endpoints +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: APIs and overview diagrams for payment service providers + link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html +--- + + +## Synchronous API + +All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and refunds. The following endpoints are used: + +* `/configure`: Used from the ACP app catalog to configure an app. +* `/disconnect`: Used from the ACP app catalog to disconnect an app. +* `/initialize-payment`: Used from the Spryker backend after an order was created and before the hosted payment page is shown to the customer. Initialize the payment in the PSP app, and the PSP app returns the URL to the hosted payment page. +* `/payments`: Glue API endpoint to initialize a payment. +* `/payment-cancellations`: Glue API endpoint to cancel a previously created payment. +* `/confirm-pre-order-payment`: Used from the Spryker backend after an order was created using a headless approach where the payment gets created before the order persists. This connects a previously created (preOrder) payment on the app side with the order on the Zed side. +* `/cancel-pre-order-payment`: Used from the Glue API application in a headless approach when a customer clicks cancel or in case the headless implementation requires a cancellation. This cancels the payment on the PSP side. +* `/payments/transfers`: Used from the Back Office or OMS with the app being used in a marketplace. This initiates the transfer of money from the marketplace to the merchant. +* `/webhooks`: Used from external applications to send requests to an app. +* `/webhooks/test`: Used from external applications in test mode to send requests to an app. + +### Further reading + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md index 0e0ffe1a9b6..728fe74d388 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md @@ -10,86 +10,12 @@ related: This document provides an overview of Payment Service Provider (PSP) APIs. All PSPs use both synchronous and asynchronous APIs. -The following diagram explains the configuration and disconnect flows for a payment app. - -![configure-and-disconnect-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/configure-and-disconnect-flows.png) - -The following messages are optional: -* `AddPaymentMethod` -* `UpdatePaymentMethod` -* `DeletePaymentMethod` -* `ReadyForMerchantAppOnboarding` - -The Payment Method related messages are used to manage payment methods in Spryker. These messages are sent only when a payment method configuration changes or when the list of available payment methods changes. - -The `ReadyForMerchantAppOnboarding` message is used to inform Spryker that the app is ready to onboard merchants; used only for marketplace projects. - -The following diagram shows the flow of an order in the OMS together with an app. - -![oms-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/oms-payment-flow.png) - -Optional elements: -* `/payments/transfers` transfers request: used only in marketplaces. -* `CancelPayment` message: used only when a payment needs to be canceled. -* `RefundPayment` message: used only when the refund process is triggered for one or more order items. - -The following diagram explains the hosted payment page flow. - -![hosted-payment-page-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/hosted-payment-page-flow.png) - -The following diagram explains the flow of a headless payment page based on Glue API. - -![headless-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-payment-flow.png) - -`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when the headless implementation requires a cancellation. - -For information about endpoints and messages, see the following sections. - -The following diagram explains the flow of a headless payment page with an express-checkout payment method based on Glue API. - -![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) - -The main difference here is that the customer skips most of the default checkout steps such as enter addresses and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via the Glue `/payment-customer` API call. The returned data can then be used on SCOS side to update e.g. addresses. - -## Asynchronous API - -All PSP integrations are based on a asynchronous API. The asynchronous API is used to process payments and refunds. The following asynchronous messages are used: - -Sent from the app: -* `AddPaymentMethod`: A new payment method is added. -* `UpdatePaymentMethod`: A payment method is updated. -* `DeletePaymentMethod`: A payment method is deleted. -* `PaymentAuthorized`: A payment is authorized. -* `PaymentAuthorizationFailed`: Payment authorization fails. -* `PaymentCaptured`: Payment is captured. -* `PaymentCaptureFailed`: Payment capture fails. -* `PaymentRefunded`: A payment is refunded. -* `PaymentRefundFailed`: Payment refund fails. -* `PaymentCanceled`: A payment is canceled. -* `PaymentCancellationFailed`: Payment cancellation fails. -* `PaymentCreated`: A payment is created. -* `PaymentUpdated`: A payment is updated. -* `ReadyForMerchantAppOnboarding`: App is ready to onboard merchants. -* `MerchantAppOnboardingStatusChanged`: Merchant app onboarding status changes. -* `AppConfigUpdated`: App configuration is updated. - -Sent from Spryker: -* `CancelPayment`: Initiates payment cancellation. -* `CapturePayment`: Initiates payment capture. -* `RefundPayment`: Initiates payment refund. - - -## Synchronous API - -All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and refunds. The following endpoints are used: - -* `/configure`: Used from the ACP app catalog to configure an app. -* `/disconnect`: Used from the ACP app catalog to disconnect an app. -* `/initialize-payment`: Used from the Spryker backend after an order was created and before the hosted payment page is shown to the customer. Initialize the payment in the PSP app, and the PSP app returns the URL to the hosted payment page. -* `/payments`: Glue API endpoint to initialize a payment. -* `/payment-cancellations`: Glue API endpoint to cancel a previously created payment. -* `/confirm-pre-order-payment`: Used from the Spryker backend after an order was created using a headless approach where the payment gets created before the order persists. This connects a previously created (preOrder) payment on the app side with the order on the Zed side. -* `/cancel-pre-order-payment`: Used from the Glue API application in a headless approach when a customer clicks cancel or in case the headless implementation requires a cancellation. This cancels the payment on the PSP side. -* `/payments/transfers`: Used from the Back Office or OMS with the app being used in a marketplace. This initiates the transfer of money from the marketplace to the merchant. -* `/webhooks`: Used from external applications to send requests to an app. -* `/webhooks/test`: Used from external applications in test mode to send requests to an app. +The following pages contain detailed information about the PSP APIs: + +* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file From 66778c979ecc1b23b48aaeee9bdcdb323813a240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Fri, 8 Nov 2024 11:17:20 +0100 Subject: [PATCH 010/199] ACP-4350 Separated pages. --- .../payment-method-flows/credit-card.md | 39 ++++ .../payment-method-flows/pay-pal-express.md | 182 +++++++++++++++ .../payment-method-flows/pay-pal.md | 37 +++ .../payone-acp-app.md | 214 +----------------- 4 files changed, 265 insertions(+), 207 deletions(-) create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md new file mode 100644 index 00000000000..cd3867b5c3f --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md @@ -0,0 +1,39 @@ +--- +title: Payone Credit Card +description: Payone offers your customers to pay with Credit Card. +template: howto-guide-template +last_updated: Now 8, 2024 +redirect_from: + - /docs/aop/user/apps/payone.html + - /docs/acp/user/apps/payone.html + - /docs/pbc/all/payment-service-providers/payone/payone.html + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html + - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +--- + +## Credit card payment flow + +When customers pay with a credit card (with optional support of 3DS), the flow is as follows: + +1. Customer provides their credit card payment credentials and pays the required amount for the placed order. +2. The customer's credit card data is validated. +3. Customer receives a payment message, whether the payment or authorization was successful. + +When paying with a credit card, customers can do the following: + +- Repeat payments as often as they want if the payment (preauthorization) has failed, or cancel and close the payment page. +- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. +- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. + +When customers pay with a credit card, a shop owner can do the following: + + +- Charge customers once the order is ready to be shipped, that is, capture the funds. +- Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. +- Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. + +## Other Payment method flows + +* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md new file mode 100644 index 00000000000..392cf578334 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -0,0 +1,182 @@ +--- +title: Payone PayPal Express in a headless application +description: Payone offers your customers to pay with PayPal Express. +template: howto-guide-template +last_updated: Now 8, 2024 +redirect_from: + - /docs/aop/user/apps/payone.html + - /docs/acp/user/apps/payone.html + - /docs/pbc/all/payment-service-providers/payone/payone.html + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html + - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +--- + +## PayPal Express for checkout in a headless application + +Use this approach for headless applications with third-party frontends. + +### Install modules + +Install or upgrade the modules to the specified or later versions: +- `spryker/kernel-app:1.2.0` +- `spryker/payment:5.27.0` +- `spryker/payments-rest-api:1.4.0` + +### Pre-order payment flow + +When PayOne PayPal Express is integrated into a headless application, orders are processed using a pre-order payment flow: + +1. The customer either selects PayPal Express as the payment method at the Product Detail page or the Cart Page. +2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: +* Payment provider name: Payone +* Payment method name: PayPal Express +* Payment amount +* Quote data +3. Back Office sends the quote data and the payment amount to the PayOne app through an API. +4. The payment with the given data is persisted in the PayOne app. +5. PayOne app makes a request through an API to PayOne to `preauthorize` the payment. +6. PayOne returns a JSON response with the following parameters: +* transactionId +* orderId +* workorderid +* token +* currency +* clientId +* merchantId +7. When the customer clicks "Complete Purchase" the modal closes and the customer data is requested. +8. After this the customer should be redirected to the summary page. +9. Here he should see his address data that was received from PayPal, and he can change the data or submit it which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. +10. The customer is redirected to the application's success page. +11. PayOne app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. + The `order_reference` is passed to the PayOne app to be connected with `transaction_id`. +12. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. +13. Depending on payment status, one of the following messages is returned through an asynchronous API: +* Payment is successful: `PaymentAuthorized` message. +* Payment is failed: `PaymentAuthorizationFailed` message. +14. Further on, the order is processed through the OMS. + +All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. + + +### Example of the headless checkout with PayOne + +The PaymentMethods which are returned by the `/checkout-data?include=payment-methods` endpoint are used to render the express-checkout buttons e.g. on the Product Detail Page or the Cart Page. The customer can select the payment method and proceed to the payment page. + +You can read more details about this in the [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html) document. + +When the custome clicks on "Pay with PayPal Express" button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. + +#### Pre-order payment initialization + +```JS + +async initializePreOrderPayment() { + const requestData = { + data: { + type: 'payments', + attributes: { + quote: QUOTE_DATA, + payment: { + amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint + paymentMethodName: 'PayPal Express', // taken from /checkout-data?include=payment-methods + paymentProviderName: 'PayOne', // taken from /checkout-data?include=payment-methods + }, + preOrderPaymentData: { + "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests + }, + }, + }, + }; + + const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, // taken from /access-tokens + }, + body: JSON.stringify(requestData), + }); + + // This gets passed back from the App server and is different for each PSP + this.preOrderPaymentData = responseData.data.attributes.preOrderPaymentData; + + return this.preOrderPaymentData; // This has to be forwarded in any upcoming request + } + +``` + +To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. + +After making a request to the PayOne API, the payment is created in the PayOne app. The response looks as follows: + +```JSON +{ + "data": { + "type": "payments", + "attributes": { + "isSuccessful": true, + "error": null, + "preOrderPaymentData": { + "transactionId": "...", + "orderId": "...", + "workorderid": "...", + "token": "...", + "currency": "USD", + "merchantId": "..." + } + } + } +} +``` + +After the customer clicks "Complete Purchase" in the PayPal Express modal he should be redirected to the summary page. + +Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs to be made to get the customer data. + +#### Getting the customer data + +```JAVASCRIPT +async getCustomerData() { + const url = `${this.GLUE_BASE_URL}/payment-customer`; + + const requestData = { + data: { + type: 'payment-customer', + attributes: { + "payment": { + paymentMethodName: 'paypal-express', + paymentProviderName: 'payone', + }, + "customerPaymentServiceProviderData": this.preOrderPaymentData + }, + }, + }; + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.accessToken}`, + }, + body: JSON.stringify(requestData), + }); + + const responseData = await response.json(); + + console.log(responseData); + + return responseData.data.attributes.customer; +} +``` + +This data must be used to fill the quote with the missing data of the custer. + +When the customer submits the order, the payment data is sent to PayOne. + +After this, the customer should be redirected to the success page or in case of a failure to an error page. + + +## Other Payment method flows + +* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md new file mode 100644 index 00000000000..08dd0a6b9f8 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md @@ -0,0 +1,37 @@ +--- +title: Payone PayPal +description: Payone offers your customers to pay with PayPal. +template: howto-guide-template +last_updated: Now 8, 2024 +redirect_from: + - /docs/aop/user/apps/payone.html + - /docs/acp/user/apps/payone.html + - /docs/pbc/all/payment-service-providers/payone/payone.html + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html + - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +--- + +## PayPal payment flow + +When customers pay with PayPal, the flow is as follows: + +1. Customer is redirected to the PayPal website, where they have to log in. +2. On the PayPal website, the customer either cancels or validates the transaction. +3. Customer is taken to the checkout page with the message of either a successfully placed or canceled order. + +When paying with PayPal, customers can: + +- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization, without being charged a fee. +- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. +- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. + +When customers pay with PayPal, a shop owner can do the following: + +- Charge customers once the order is ready to be shipped, that is, capture the funds. +- Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. +- Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. + +## Other Payment method flows + +* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 53813e0dbfc..4ab97b0b9dd 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -2,7 +2,7 @@ title: Payone ACP app description: With Payone, your customers can pay with common payment methods, such as credit card, PayPal, Prepayment and Klarna. template: howto-guide-template -last_updated: Aug 30, 2024 +last_updated: Now 8, 2024 redirect_from: - /docs/aop/user/apps/payone.html - /docs/acp/user/apps/payone.html @@ -45,217 +45,17 @@ The payment modes like Preauthorization and Capture must be set via the Spryker {% endinfo_block %} -## Credit card payment flow +## Payment method flows -When customers pay with a credit card (with optional support of 3DS), the flow is as follows: - -1. Customer provides their credit card payment credentials and pays the required amount for the placed order. -2. The customer's credit card data is validated. -3. Customer receives a payment message, whether the payment or authorization was successful. - -When paying with a credit card, customers can do the following: - -- Repeat payments as often as they want if the payment (preauthorization) has failed, or cancel and close the payment page. -- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. -- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. - -When customers pay with a credit card, a shop owner can do the following: - - -- Charge customers once the order is ready to be shipped, that is, capture the funds. -- Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. -- Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. - -## PayPal payment flow - -When customers pay with PayPal, the flow is as follows: - -1. Customer is redirected to the PayPal website, where they have to log in. -2. On the PayPal website, the customer either cancels or validates the transaction. -3. Customer is taken to the checkout page with the message of either a successfully placed or canceled order. - -When paying with PayPal, customers can: - -- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization, without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. -- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. - -When customers pay with PayPal, a shop owner can do the following: - -- Charge customers once the order is ready to be shipped, that is, capture the funds. -- Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. -- Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. - -## Implementing PayOne PayPal Express for checkout in a headless application - -Use this approach for headless applications with third-party frontends. - -### Install modules - -Install or upgrade the modules to the specified or later versions: -- `spryker/kernel-app:1.2.0` -- `spryker/payment:5.27.0` -- `spryker/payments-rest-api:1.4.0` - -### Pre-order payment flow - -When PayOne PayPal Express is integrated into a headless application, orders are processed using a pre-order payment flow: - -1. The customer either selects PayPal Express as the payment method at the Product Detail page or the Cart Page. -2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: -* Payment provider name: Payone -* Payment method name: PayPal Express -* Payment amount -* Quote data -3. Back Office sends the quote data and the payment amount to the PayOne app through an API. -4. The payment with the given data is persisted in the PayOne app. -5. PayOne app makes a request through an API to PayOne to `preauthorize` the payment. -6. PayOne returns a JSON response with the following parameters: -* transactionId -* orderId -* workorderid -* token -* currency -* clientId -* merchantId -7. When the customer clicks "Complete Purchase" the modal closes and the customer data is requested. -8. After this the customer should be redirected to the summary page. -9. Here he should see his address data that was received from PayPal, and he can change the data or submit it which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. -10. The customer is redirected to the application's success page. -11. PayOne app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. - The `order_reference` is passed to the PayOne app to be connected with `transaction_id`. -12. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. -13. Depending on payment status, one of the following messages is returned through an asynchronous API: -* Payment is successful: `PaymentAuthorized` message. -* Payment is failed: `PaymentAuthorizationFailed` message. -14. Further on, the order is processed through the OMS. - -All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. - - -### Example of the headless checkout with PayOne - -The PaymentMethods which are returned by the `/checkout-data?include=payment-methods` endpoint are used to render the express-checkout buttons e.g. on the Product Detail Page or the Cart Page. The customer can select the payment method and proceed to the payment page. - -You can read more details about this in the [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html) document. - -When the custome clicks on "Pay with PayPal Express" button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. - -#### Pre-order payment initialization - -```JS - -async initializePreOrderPayment() { - const requestData = { - data: { - type: 'payments', - attributes: { - quote: QUOTE_DATA, - payment: { - amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint - paymentMethodName: 'PayPal Express', // taken from /checkout-data?include=payment-methods - paymentProviderName: 'PayOne', // taken from /checkout-data?include=payment-methods - }, - preOrderPaymentData: { - "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests - }, - }, - }, - }; - - const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, // taken from /access-tokens - }, - body: JSON.stringify(requestData), - }); - - // This gets passed back from the App server and is different for each PSP - this.preOrderPaymentData = responseData.data.attributes.preOrderPaymentData; - - return this.preOrderPaymentData; // This has to be forwarded in any upcoming request - } - -``` - -To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. - -After making a request to the PayOne API, the payment is created in the PayOne app. The response looks as follows: - -```JSON -{ - "data": { - "type": "payments", - "attributes": { - "isSuccessful": true, - "error": null, - "preOrderPaymentData": { - "transactionId": "...", - "orderId": "...", - "workorderid": "...", - "token": "...", - "currency": "USD", - "merchantId": "..." - } - } - } -} -``` - -After the customer clicks "Complete Purchase" in the PayPal Express modal he should be redirected to the summary page. - -Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs to be made to get the customer data. - -#### Getting the customer data - -```JAVASCRIPT -async getCustomerData() { - const url = `${this.GLUE_BASE_URL}/payment-customer`; - - const requestData = { - data: { - type: 'payment-customer', - attributes: { - "payment": { - paymentMethodName: 'paypal-express', - paymentProviderName: 'payone', - }, - "customerPaymentServiceProviderData": this.preOrderPaymentData - }, - }, - }; - - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${this.accessToken}`, - }, - body: JSON.stringify(requestData), - }); - - const responseData = await response.json(); - - console.log(responseData); - - return responseData.data.attributes.customer; -} -``` - -This data must be used to fill the quote with the missing data of the custer. - -When the customer submits the order, the payment data is sent to PayOne. - -After this, the customer should be redirected to the success page or in case of a failure to an error page. +* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) ## Current limitations -- Payments can be properly canceled only from the the Back Office and not from the Payone PMI. -- Payments can't be partially canceled. One payment intent is created per order and it can either be authorized or fully cancelled. +- Payments can be properly canceled only from the Back Office and not from the Payone PMI. +- Payments can't be partially canceled. One payment intent is created per order, and it can either be authorized or fully cancelled. - When an item is canceled on the order details page, all order items are canceled. ## Next steps From a50438dcd1d797f26c12174a1d4f23212924d6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Fri, 8 Nov 2024 11:55:41 +0100 Subject: [PATCH 011/199] ACP-4350 Separated pages. --- .../stripe/project-guidelines-for-stripe.md | 608 +----------------- .../project-guidelines-for-stripe/headless.md | 304 +++++++++ .../hosted-payment-page.md | 68 ++ .../project-guidelines-for-stripe/iframe.md | 146 +++++ .../project-guidelines-for-stripe/oms.md | 99 +++ .../project-guidelines-for-stripe/refunds.md | 37 ++ .../sending-additional-data-to-stripe.md | 79 +++ 7 files changed, 746 insertions(+), 595 deletions(-) create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md index 77e739fbdb8..c06a8a25ea2 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md @@ -1,7 +1,7 @@ --- title: Project guidelines for Stripe description: Learn how to implement Stripe using ACP -last_updated: Jul 22, 2024 +last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe @@ -13,602 +13,20 @@ redirect_from: --- -This document provides guidelines for projects using Stripe through the Stripe app. +This document provides comprehensive guidelines for integrating and utilizing Stripe in your projects through the Stripe App. -## OMS configuration +Whether you are looking to implement Stripe for checkout in a headless application, as a hosted payment page, or using an iframe, this guide has you covered. -The complete default payment OMS configuration is available at `vendor/spryker/sales-payment/config/Zed/Oms/ForeignPaymentStateMachine01.xml`. +Additionally, you will find detailed instructions on sending additional data to Stripe, retrieving and using payment details, and configuring the Order Management System (OMS). -The payment flow of the default OMS involves authorizing the initial payment. The amount is temporarily blocked when the payment method permits. Then, the OMS sends requests to capture, that is, transfer of the previously blocked amount from the customer's account to the store account. +Each section is designed to help you maximize the potential of Stripe in your projects. Explore the links below to dive into the detailed guides and enhance your Stripe implementation with best practices and advanced techniques. -The `Payment/Capture` command initiates the capture action. By default, this command is initiated when a Back Office user clicks **Ship** on the **Order Overview** page. -Optionally, you can change and configure your own payment OMS based on `ForeignPaymentStateMachine01.xml` from the core package and change this behavior according to your business flow. For more information about OMS configuration, see [Install the Order Management feature](/docs/pbc/all/order-management-system/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-order-management-feature.html). - -To configure your payment OMS based on `ForeignPaymentStateMachine01.xml`, copy `ForeignPaymentStateMachine01.xml` with the `Subprocess` folder to the project root `config/Zed/oms`. Then, change the file's name and the value of ` - State machine example - -```xml - - - - - - - - - - - - - - - - - - - - - - - ready for dispatch - payment capture pending - capture payment - - - - - - - - - - - - - - - - - - - -``` - - - -By default, the timeout for the payment authorization action is set to seven days. If the order is in the `payment authorization pending` state, after a day the order state is changed to `payment authorization failed`. Another day later, the order is transitioned to the `payment authorization canceled` state. - -To decrease or increase timeouts or change the states, update `config/Zed/oms/Subprocess/PaymentAuthorization01.xml`. - -For more information on the integration of ACP payment methods with OMS configuration, see [Integrate ACP payment apps with Spryker OMS configuration](/docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html). - - -## Implementing Stripe for checkout in a headless application - -Use this approach for headless applications with third-party frontends. - -### Install modules - -Install or upgrade the modules to the specified or later versions: -- `spryker/kernel-app:1.2.0` -- `spryker/payment:5.24.0` -- `spryker/payments-rest-api:1.3.0` - -### Pre-order payment flow - -When Stripe is integrated into a headless application, orders are processed using a pre-order payment flow: - -1. The customer either selects Stripe as the payment method or [Stripe Elements](https://docs.stripe.com/payments/elements) is loaded by default. -2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: - * Payment provider name: Stripe - * Payment method name: Stripe - * Payment amount - * Quote data -3. Back Office sends the quote data and the payment amount to Stripe app through an API. -4. The payment with the given data is persisted in the Stripe app. -5. Stripe app requests `ClientSecret` and `PublishableKey` keys from Stripe through an API. -6. Stripe returns a JSON response with the following parameters: - * TransactionId - * ClientSecret - * PublishableKey - * Only for marketplaces: AccountId -7. Stripe Elements is rendered on the order summary page. See [Rendering the Stripe Elements on the summary page](#rendering-the-stripe-elements-on-the-summary-page) for rendering Stripe Elements. -8. The customer selects a payment method in Stripe Elements and submits the data. -9. The customer is redirected to the configured `return_url`, which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. -10. The customer is redirected to the application's success page. -11. Stripe app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. - The `order_reference` is passed to the Stripe app to be connected with `transaction_id`. -12. Stripe app processes the payment and sends a `PaymentUpdated` message to Spryker. -13. Depending on payment status, one of the following messages is returned through an asynchronous API: - * Payment is successful: `PaymentAuthorized` message. - * Payment is failed: `PaymentAuthorizationFailed` message. -14. Further on, the order is processed through the OMS. - -All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. - - -### Example of the headless checkout with Stripe - -The Payment selection in this example will be used on the Summary page. The following examples show how to implement the Stripe Payment App in a headless application. - -Before the customer is redirected to the summary page, all required data is collected: customer data, addresses, and selected shipment method. When the customer goes to the summary page, to get the data required for rendering the Stripe Elements, the application needs to call the `InitializePreOrderPayment` Glue API endpoint. - -#### Pre-order payment initialization - -```JS - -async initializePreOrderPayment() { - const requestData = { - data: { - type: 'payments', - attributes: { - quote: QUOTE_DATA, - payment: { - amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint - paymentMethodName: 'stripe', // taken from /checkout-data?include=payment-methods - paymentProviderName: 'stripe', // taken from /checkout-data?include=payment-methods - }, - preOrderPaymentData: { - "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests - }, - }, - }, - }; - - const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, - }, - body: JSON.stringify(requestData), - }); - - const paymentProviderData = - responseData.data.attributes.preOrderPaymentData; - - this.transactionId = paymentProviderData.transactionId; - this.accountId = paymentProviderData.accountId; // only be used on the Direct business model. When using a Marketplace business model this will not be present. - - await this.setupStripe(); - } - -``` - -To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. - -After a `PaymentIntent` is created using the Stripe API, a payment is created in the Stripe app. The response looks as follows: - -```JSON -{ - "data": { - "type": "payments", - "attributes": { - "isSuccessful": true, - "error": null, - "preOrderPaymentData": { - "transactionId": "pi_3Q3............", - "clientSecret": "pi_3Q3............_secret_R3WC2........", - "publishableKey": "pk_test_51OzEfB..............." - } - } - } -} -``` - -#### Rendering the Stripe Elements on the summary page - -The `preOrderPaymentData` from the previous example is used to render Stripe Elements on the summary page: - -```JAVASCRIPT -async setupStripe() { - const paymentElementOptions = { - layout: 'accordion', // Change this to your needs - }; - - let stripeAccountDetails = {}; - - if (this.accountId) { // Only in Direct business model not in the Marketplace business model - stripeAccountDetails = { stripeAccount: this.accountId } - } - - const stripe = Stripe(this.publishableKey, stripeAccountDetails); - - const elements = stripe.elements({ - clientSecret: this.clientSecret, - }); - - const paymentElement = elements.create('payment', paymentElementOptions); - paymentElement.mount('#payment-element'); // Change this to the id of the HTML element you want to render the Stripe Elements to - - SUBMIT_BUTTON.addEventListener('click', async () => { - const { error } = await stripe.confirmPayment({ - elements, - confirmParams: { - return_url: `APPLICATION_URL/return-url?id=${idCart}`, // You need to pass the id of the cart to this request - }, - }); - if (error) { - // Add your error handling to this block. - } - }); - } -``` - -This sets up Stripe Elements on the summary page of your application. The customer can now select the Payment Method in Stripe Elements and submit the data. Then, the customer is redirected to the configured `return_url`, which makes another Glue API request to persist the order in the Back Office. After this, the customer should see the success page. - -When the customer submits the order, the payment data is sent to Stripe. Stripe may redirect them to another page, for example — PayPal, or redirect the customer to the specified `return_url`. The `return_url` must make another Glue API request to persist the order in the Back Office. - -#### Persisting orders in the Back Office through the return URL - -Because an order can be persisted in the Back Office only after a successful payment, the application needs to handle the `return_url` and make a request to the Glue API to persist the order. - -
- Request example - -```JAVASCRIPT -app.get('/return-url', async (req, res) => { - const paymentIntentId = req.query.payment_intent; - const clientSecret = req.query.payment_intent_client_secret; - const idCart = req.query.id; - - if (paymentIntentId) { - try { - const data = await fetchHandler(`GLUE_APPLICATION_URL/checkout`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN` - }, - body: JSON.stringify({ - data: { - type: 'checkout', - attributes: { - customer: CUSTOMER_DATA, - idCart: idCart, - billingAddress: BILLING_ADDRESS, - shippingAddress: SHIPPING_ADDRESS, - payments: [ - { - paymentMethodName: 'Stripe', - paymentProviderName: 'Stripe', - }, - ], - shipment: SHIPMENT_DATA, - preOrderPaymentData: { - transactionId: paymentIntentId, - clientSecret: clientSecret, - }, - }, - }, - }), - }); - - if (data) { - res.send('

Order Successful!

'); - } else { - res.send('

Order Failed!

'); - } - } catch (error) { - console.error(error); - res.send('

Order Failed!

'); - } - } else { - res.send('

Invalid Payment Intent!

'); - } -}); -``` - -
- -After this, the customer should be redirected to the success page or in case of a failure to an error page. - - -{% info_block infoBox %} -- When the customer reloads the summary page, which renders `PaymentElements`, an extra unnecessary API request is sent to initiate `preOrder Payment`. Stripe can handle these without issues. However, you can also prevent unnecessary API calls from being sent on the application side by, for example, checking if relevant data has changed. -- When the customer leaves the summary page, the payment is created in Stripe app and Stripe. However, in the Back Office, there is a stale payment without an order. -- To enable the customer to abort the payment process, you can implement the cancellation of payments through Glue API. - -{% endinfo_block %} - - - -#### Cancelling payments through Glue API - -The following request cancels a PaymentIntent on the Stripe side and shows a `canceled` PaymentIntent in the Stripe Dashboard. You can implement this in your application to enable the customer to cancel the payment process. - -
- Cancel a payment through Glue API - -```JAVASCRIPT -async cancelPreOrderPayment() { - const requestData = { - data: { - type: 'payment-cancellations', - attributes: { - payment: { - paymentMethodName: 'stripe', - paymentProviderName: 'stripe', - }, - preOrderPaymentData: { - transactionId: this.transactionId, - }, - }, - }, - }; - - const url = `GLUE_APPLICATION_URL/payment-cancellations`; - - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, - }, - body: JSON.stringify(requestData), - }); - - if (!response.ok) { - throw new Error('Network response was not ok'); - } - - const responseData = await response.json(); - - if (responseData.data.attributes.isSuccessful === true) { - // Add your logic here when the payment cancellation was successful - } else { - // Add your logic here when the payment cancellation has failed - } - } -``` - -
- - -### Implementing Stripe checkout as a hosted payment page - -If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project level, do the following: - -1. Make sure that a form molecule uses the following code for the payment selection choices: - -```twig -{% raw %} - -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... - {% embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.name], - ... - } - {% endembed %} -{% endfor %} -{% endraw %} -``` - -2. If you want to change the default payment provider or method names, do the following: - 1. Make sure the names are translated in your payment step template: - -```twig -{% raw %} -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... -
{{ name | trans }}
-{% endfor %} -{% endraw %} -``` - - 2. Add translations to your glossary data import file: - -```csv -... -Stripe,Pay Online with Stripe,en_US -``` - 3. Run the data import command for the glossary: - -```bash -console data:import glossary -``` - -## Processing refunds - -In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. - -During this period, Stripe attempts to process the request, which results in success or failure: -* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. -* Failure: the items transition to the `payment refund failed` state. - -These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. - -If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. - -In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. - -## Retrieving and using payment details from Stripe - -For instructions on using payment details, like the payment reference, from Stripe, see [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) - -## Embed the Stripe payment page using iframe - -By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: - - -1. Create or update `src/Pyz/Zed/Payment/PaymentConfig.php` with the following configuration: -```php -namespace Pyz\Zed\Payment; - -class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig -{ - public function getStoreFrontPaymentPage(): string - { - // Please make sure that domain is whitelisted in the config_default.php `$config[KernelConstants::DOMAIN_WHITELIST]` - return '/payment'; //or any other URL on your storefront domain e.g. https://your-site.com/payment-with-stripe - } -} -``` - -In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. - - -2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: - -* Use the following minimal page regardless of the frontend technology used. -* If your Storefront is based on a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. -* If your Storefront is based on Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). - -```php - - - - - Order payment page - - - - - -``` - - -### Create an Yves page for rendering the Stripe payment page - - -1. Create a controller to render the payment page: - -**src/Pyz/Yves/PaymentPage/Controller/PaymentController.php** -```php - -namespace Pyz\Yves\PaymentPage\Controller; - -use Spryker\Yves\Kernel\Controller\AbstractController; -use Spryker\Yves\Kernel\View\View; -use Symfony\Component\HttpFoundation\Request; - -class PaymentController extends AbstractController -{ - /** - * @return \Spryker\Yves\Kernel\View\View - */ - public function indexAction(Request $request): View - { - return $this->view( - [ - 'iframeUrl' => base64_decode($request->query->getString('url', '')), - ], - [], - '@PaymentPage/views/payment.twig', - ); - } -} - -``` - -2. Create a template for the page: - -**src/Pyz/Yves/PaymentPage/Theme/default/views/payment.twig** -```twig -{% raw %} -{% extends template('page-layout-checkout', 'CheckoutPage') %} - -{% define data = { - iframeUrl: _view.iframeUrl, - title: 'Order Payment' | trans, -} %} - -{% block content %} - -{% endblock %} -{% endraw %} -``` - -3. Create a route for the controller: - -**src/Pyz/Yves/PaymentPage/Plugin/Router/EmbeddedPaymentPageRouteProviderPlugin.php** -```php -namespace Pyz\Yves\PaymentPage\Plugin\Router; - -use Spryker\Yves\Router\Plugin\RouteProvider\AbstractRouteProviderPlugin; -use Spryker\Yves\Router\Route\RouteCollection; - -class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin -{ - /** - * @param \Symfony\Component\Routing\RouteCollection $routeCollection - * - * @return \Symfony\Component\Routing\RouteCollection - */ - public function addRoutes(RouteCollection $routeCollection): RouteCollection - { - $route = $this->buildRoute('/payment', 'PaymentPage', 'Payment', 'indexAction'); - $routeCollection->add('payment-page', $route); - - return $routeCollection; - } -} -``` - -4. In `src/Pyz/Yves/Router/RouterDependencyProvider.php`, add a router plugin to `RouterDependencyProvider::getRouteProvider()`. - - -## Sending additional data to Stripe - -Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. - -```text -POST https://api.your-site.com/checkout -Content-Type: application/json -Accept-Language: en-US -Authorization: Bearer {{access_token}} - -{ - "data": { - "type": "checkout", - "attributes": { - "customer": { - ... - }, - "idCart": "{{idCart}}", - "billingAddress": { - ... - }, - "shippingAddress": { - ... - }, - "payments": [ - { - "paymentMethodName": "Stripe", - "paymentProviderName": "Stripe", - "additionalPaymentData": { - "custom-field-1": "my custom value 1", - "custom-field-2": "my custom value 2" - } - } - ], - "shipment": { - "idShipmentMethod": {{idMethod}} - } - } - } -} -``` - -The metadata sent using the field must meet the following criteria: - -| ATTRIBUTE | MAXIMUM VALUE | -| - | - | -| Key length | 40 characters | -| Value length | 500 characters | -| Key-value pairs | 50 pairs | - -When you pass metadata to Stripe, it's stored in the payment object and can be retrieved later. For example, this way you can pass an external ID to Stripe. - -When a `PaymentIntent` is created on the Stripe side, you can see your passed `additionalPaymentData` in the Stripe Dashboard. +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md new file mode 100644 index 00000000000..1047552370e --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md @@ -0,0 +1,304 @@ +--- +title: Project guidelines for Stripe - Headless implementation +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +## Implementing Stripe for checkout in a headless application + +Use this approach for headless applications with third-party frontends. + +### Install modules + +Install or upgrade the modules to the specified or later versions: +- `spryker/kernel-app:1.2.0` +- `spryker/payment:5.24.0` +- `spryker/payments-rest-api:1.3.0` + +### Pre-order payment flow + +When Stripe is integrated into a headless application, orders are processed using a pre-order payment flow: + +1. The customer either selects Stripe as the payment method or [Stripe Elements](https://docs.stripe.com/payments/elements) is loaded by default. +2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: + * Payment provider name: Stripe + * Payment method name: Stripe + * Payment amount + * Quote data +3. Back Office sends the quote data and the payment amount to Stripe app through an API. +4. The payment with the given data is persisted in the Stripe app. +5. Stripe app requests `ClientSecret` and `PublishableKey` keys from Stripe through an API. +6. Stripe returns a JSON response with the following parameters: + * TransactionId + * ClientSecret + * PublishableKey + * Only for marketplaces: AccountId +7. Stripe Elements is rendered on the order summary page. See [Rendering the Stripe Elements on the summary page](#rendering-the-stripe-elements-on-the-summary-page) for rendering Stripe Elements. +8. The customer selects a payment method in Stripe Elements and submits the data. +9. The customer is redirected to the configured `return_url`, which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. +10. The customer is redirected to the application's success page. +11. Stripe app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. + The `order_reference` is passed to the Stripe app to be connected with `transaction_id`. +12. Stripe app processes the payment and sends a `PaymentUpdated` message to Spryker. +13. Depending on payment status, one of the following messages is returned through an asynchronous API: + * Payment is successful: `PaymentAuthorized` message. + * Payment is failed: `PaymentAuthorizationFailed` message. +14. Further on, the order is processed through the OMS. + +All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. + + +### Example of the headless checkout with Stripe + +The Payment selection in this example will be used on the Summary page. The following examples show how to implement the Stripe Payment App in a headless application. + +Before the customer is redirected to the summary page, all required data is collected: customer data, addresses, and selected shipment method. When the customer goes to the summary page, to get the data required for rendering the Stripe Elements, the application needs to call the `InitializePreOrderPayment` Glue API endpoint. + +#### Pre-order payment initialization + +```JS + +async initializePreOrderPayment() { + const requestData = { + data: { + type: 'payments', + attributes: { + quote: QUOTE_DATA, + payment: { + amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint + paymentMethodName: 'stripe', // taken from /checkout-data?include=payment-methods + paymentProviderName: 'stripe', // taken from /checkout-data?include=payment-methods + }, + preOrderPaymentData: { + "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests + }, + }, + }, + }; + + const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, + }, + body: JSON.stringify(requestData), + }); + + const paymentProviderData = + responseData.data.attributes.preOrderPaymentData; + + this.transactionId = paymentProviderData.transactionId; + this.accountId = paymentProviderData.accountId; // only be used on the Direct business model. When using a Marketplace business model this will not be present. + + await this.setupStripe(); + } + +``` + +To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. + +After a `PaymentIntent` is created using the Stripe API, a payment is created in the Stripe app. The response looks as follows: + +```JSON +{ + "data": { + "type": "payments", + "attributes": { + "isSuccessful": true, + "error": null, + "preOrderPaymentData": { + "transactionId": "pi_3Q3............", + "clientSecret": "pi_3Q3............_secret_R3WC2........", + "publishableKey": "pk_test_51OzEfB..............." + } + } + } +} +``` + +#### Rendering the Stripe Elements on the summary page + +The `preOrderPaymentData` from the previous example is used to render Stripe Elements on the summary page: + +```JAVASCRIPT +async setupStripe() { + const paymentElementOptions = { + layout: 'accordion', // Change this to your needs + }; + + let stripeAccountDetails = {}; + + if (this.accountId) { // Only in Direct business model not in the Marketplace business model + stripeAccountDetails = { stripeAccount: this.accountId } + } + + const stripe = Stripe(this.publishableKey, stripeAccountDetails); + + const elements = stripe.elements({ + clientSecret: this.clientSecret, + }); + + const paymentElement = elements.create('payment', paymentElementOptions); + paymentElement.mount('#payment-element'); // Change this to the id of the HTML element you want to render the Stripe Elements to + + SUBMIT_BUTTON.addEventListener('click', async () => { + const { error } = await stripe.confirmPayment({ + elements, + confirmParams: { + return_url: `APPLICATION_URL/return-url?id=${idCart}`, // You need to pass the id of the cart to this request + }, + }); + if (error) { + // Add your error handling to this block. + } + }); + } +``` + +This sets up Stripe Elements on the summary page of your application. The customer can now select the Payment Method in Stripe Elements and submit the data. Then, the customer is redirected to the configured `return_url`, which makes another Glue API request to persist the order in the Back Office. After this, the customer should see the success page. + +When the customer submits the order, the payment data is sent to Stripe. Stripe may redirect them to another page, for example — PayPal, or redirect the customer to the specified `return_url`. The `return_url` must make another Glue API request to persist the order in the Back Office. + +#### Persisting orders in the Back Office through the return URL + +Because an order can be persisted in the Back Office only after a successful payment, the application needs to handle the `return_url` and make a request to the Glue API to persist the order. + +
+ Request example + +```JAVASCRIPT +app.get('/return-url', async (req, res) => { + const paymentIntentId = req.query.payment_intent; + const clientSecret = req.query.payment_intent_client_secret; + const idCart = req.query.id; + + if (paymentIntentId) { + try { + const data = await fetchHandler(`GLUE_APPLICATION_URL/checkout`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN` + }, + body: JSON.stringify({ + data: { + type: 'checkout', + attributes: { + customer: CUSTOMER_DATA, + idCart: idCart, + billingAddress: BILLING_ADDRESS, + shippingAddress: SHIPPING_ADDRESS, + payments: [ + { + paymentMethodName: 'Stripe', + paymentProviderName: 'Stripe', + }, + ], + shipment: SHIPMENT_DATA, + preOrderPaymentData: { + transactionId: paymentIntentId, + clientSecret: clientSecret, + }, + }, + }, + }), + }); + + if (data) { + res.send('

Order Successful!

'); + } else { + res.send('

Order Failed!

'); + } + } catch (error) { + console.error(error); + res.send('

Order Failed!

'); + } + } else { + res.send('

Invalid Payment Intent!

'); + } +}); +``` + +
+ +After this, the customer should be redirected to the success page or in case of a failure to an error page. + + +{% info_block infoBox %} +- When the customer reloads the summary page, which renders `PaymentElements`, an extra unnecessary API request is sent to initiate `preOrder Payment`. Stripe can handle these without issues. However, you can also prevent unnecessary API calls from being sent on the application side by, for example, checking if relevant data has changed. +- When the customer leaves the summary page, the payment is created in Stripe app and Stripe. However, in the Back Office, there is a stale payment without an order. +- To enable the customer to abort the payment process, you can implement the cancellation of payments through Glue API. + +{% endinfo_block %} + + + +#### Cancelling payments through Glue API + +The following request cancels a PaymentIntent on the Stripe side and shows a `canceled` PaymentIntent in the Stripe Dashboard. You can implement this in your application to enable the customer to cancel the payment process. + +
+ Cancel a payment through Glue API + +```JAVASCRIPT +async cancelPreOrderPayment() { + const requestData = { + data: { + type: 'payment-cancellations', + attributes: { + payment: { + paymentMethodName: 'stripe', + paymentProviderName: 'stripe', + }, + preOrderPaymentData: { + transactionId: this.transactionId, + }, + }, + }, + }; + + const url = `GLUE_APPLICATION_URL/payment-cancellations`; + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, + }, + body: JSON.stringify(requestData), + }); + + if (!response.ok) { + throw new Error('Network response was not ok'); + } + + const responseData = await response.json(); + + if (responseData.data.attributes.isSuccessful === true) { + // Add your logic here when the payment cancellation was successful + } else { + // Add your logic here when the payment cancellation has failed + } + } +``` + +
+ +### Further reading + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md new file mode 100644 index 00000000000..a83cddf1a15 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md @@ -0,0 +1,68 @@ +--- +title: Project guidelines for Stripe - Hosted Payment Page +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +### Implementing Stripe checkout as a hosted payment page + +If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project level, do the following: + +1. Make sure that a form molecule uses the following code for the payment selection choices: + +```twig +{% raw %} + +{% for name, choices in data.form.paymentSelection.vars.choices %} + ... + {% embed molecule('form') with { + data: { + form: data.form[data.form.paymentSelection[key].vars.name], + ... + } + {% endembed %} +{% endfor %} +{% endraw %} +``` + +2. If you want to change the default payment provider or method names, do the following: + 1. Make sure the names are translated in your payment step template: + +```twig +{% raw %} +{% for name, choices in data.form.paymentSelection.vars.choices %} + ... +
{{ name | trans }}
+{% endfor %} +{% endraw %} +``` + + 2. Add translations to your glossary data import file: + +```csv +... +Stripe,Pay Online with Stripe,en_US +``` + 3. Run the data import command for the glossary: + +```bash +console data:import glossary +``` + +### Further reading + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md new file mode 100644 index 00000000000..8c98453cbc7 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md @@ -0,0 +1,146 @@ +--- +title: Project guidelines for Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +## Embed the Stripe payment page using iframe + +By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: + + +1. Create or update `src/Pyz/Zed/Payment/PaymentConfig.php` with the following configuration: +```php +namespace Pyz\Zed\Payment; + +class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig +{ + public function getStoreFrontPaymentPage(): string + { + // Please make sure that domain is whitelisted in the config_default.php `$config[KernelConstants::DOMAIN_WHITELIST]` + return '/payment'; //or any other URL on your storefront domain e.g. https://your-site.com/payment-with-stripe + } +} +``` + +In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. + + +2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: + +* Use the following minimal page regardless of the frontend technology used. +* If your Storefront is based on a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. +* If your Storefront is based on Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). + +```php + + + + + Order payment page + + + + + +``` + + +### Create an Yves page for rendering the Stripe payment page + + +1. Create a controller to render the payment page: + +**src/Pyz/Yves/PaymentPage/Controller/PaymentController.php** +```php + +namespace Pyz\Yves\PaymentPage\Controller; + +use Spryker\Yves\Kernel\Controller\AbstractController; +use Spryker\Yves\Kernel\View\View; +use Symfony\Component\HttpFoundation\Request; + +class PaymentController extends AbstractController +{ + /** + * @return \Spryker\Yves\Kernel\View\View + */ + public function indexAction(Request $request): View + { + return $this->view( + [ + 'iframeUrl' => base64_decode($request->query->getString('url', '')), + ], + [], + '@PaymentPage/views/payment.twig', + ); + } +} + +``` + +2. Create a template for the page: + +**src/Pyz/Yves/PaymentPage/Theme/default/views/payment.twig** +```twig +{% raw %} +{% extends template('page-layout-checkout', 'CheckoutPage') %} + +{% define data = { + iframeUrl: _view.iframeUrl, + title: 'Order Payment' | trans, +} %} + +{% block content %} + +{% endblock %} +{% endraw %} +``` + +3. Create a route for the controller: + +**src/Pyz/Yves/PaymentPage/Plugin/Router/EmbeddedPaymentPageRouteProviderPlugin.php** +```php +namespace Pyz\Yves\PaymentPage\Plugin\Router; + +use Spryker\Yves\Router\Plugin\RouteProvider\AbstractRouteProviderPlugin; +use Spryker\Yves\Router\Route\RouteCollection; + +class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin +{ + /** + * @param \Symfony\Component\Routing\RouteCollection $routeCollection + * + * @return \Symfony\Component\Routing\RouteCollection + */ + public function addRoutes(RouteCollection $routeCollection): RouteCollection + { + $route = $this->buildRoute('/payment', 'PaymentPage', 'Payment', 'indexAction'); + $routeCollection->add('payment-page', $route); + + return $routeCollection; + } +} +``` + +4. In `src/Pyz/Yves/Router/RouterDependencyProvider.php`, add a router plugin to `RouterDependencyProvider::getRouteProvider()`. + + +### Further reading + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md new file mode 100644 index 00000000000..8765e97631f --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md @@ -0,0 +1,99 @@ +--- +title: Project guidelines for Stripe - OMS +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +## OMS configuration + +The complete default payment OMS configuration is available at `vendor/spryker/sales-payment/config/Zed/Oms/ForeignPaymentStateMachine01.xml`. + +The payment flow of the default OMS involves authorizing the initial payment. The amount is temporarily blocked when the payment method permits. Then, the OMS sends requests to capture, that is, transfer of the previously blocked amount from the customer's account to the store account. + +The `Payment/Capture` command initiates the capture action. By default, this command is initiated when a Back Office user clicks **Ship** on the **Order Overview** page. + +Optionally, you can change and configure your own payment OMS based on `ForeignPaymentStateMachine01.xml` from the core package and change this behavior according to your business flow. For more information about OMS configuration, see [Install the Order Management feature](/docs/pbc/all/order-management-system/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-order-management-feature.html). + +To configure your payment OMS based on `ForeignPaymentStateMachine01.xml`, copy `ForeignPaymentStateMachine01.xml` with the `Subprocess` folder to the project root `config/Zed/oms`. Then, change the file's name and the value of ` + State machine example + +```xml + + + + + + + + + + + + + + + + + + + + + + + ready for dispatch + payment capture pending + capture payment + + + + + + + + + + + + + + + + + + + +``` + + + +By default, the timeout for the payment authorization action is set to seven days. If the order is in the `payment authorization pending` state, after a day the order state is changed to `payment authorization failed`. Another day later, the order is transitioned to the `payment authorization canceled` state. + +To decrease or increase timeouts or change the states, update `config/Zed/oms/Subprocess/PaymentAuthorization01.xml`. + +For more information on the integration of ACP payment methods with OMS configuration, see [Integrate ACP payment apps with Spryker OMS configuration](/docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html). + +### Further reading + +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md new file mode 100644 index 00000000000..175d83155da --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md @@ -0,0 +1,37 @@ +--- +title: Project guidelines for Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +## Processing refunds + +In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. + +During this period, Stripe attempts to process the request, which results in success or failure: +* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. +* Failure: the items transition to the `payment refund failed` state. + +These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. + +If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. + +In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. + +### Further reading + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md new file mode 100644 index 00000000000..8f92cfa19ac --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md @@ -0,0 +1,79 @@ +--- +title: Project guidelines for Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +## Sending additional data to Stripe + +Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. + +```text +POST https://api.your-site.com/checkout +Content-Type: application/json +Accept-Language: en-US +Authorization: Bearer {{access_token}} + +{ + "data": { + "type": "checkout", + "attributes": { + "customer": { + ... + }, + "idCart": "{{idCart}}", + "billingAddress": { + ... + }, + "shippingAddress": { + ... + }, + "payments": [ + { + "paymentMethodName": "Stripe", + "paymentProviderName": "Stripe", + "additionalPaymentData": { + "custom-field-1": "my custom value 1", + "custom-field-2": "my custom value 2" + } + } + ], + "shipment": { + "idShipmentMethod": {{idMethod}} + } + } + } +} +``` + +The metadata sent using the field must meet the following criteria: + +| ATTRIBUTE | MAXIMUM VALUE | +| - | - | +| Key length | 40 characters | +| Value length | 500 characters | +| Key-value pairs | 50 pairs | + +When you pass metadata to Stripe, it's stored in the payment object and can be retrieved later. For example, this way you can pass an external ID to Stripe. + +When a `PaymentIntent` is created on the Stripe side, you can see your passed `additionalPaymentData` in the Stripe Dashboard. + +### Further reading + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file From 8bb2d9576eb25bb3b8b325fe809e9f79b549c3a3 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Fri, 8 Nov 2024 22:31:31 +0200 Subject: [PATCH 012/199] ACP-3963: Algolia personalization guide. --- .../algolia/algolia-personalization.md | 118 ++++++++++++++++++ .../algolia/algolia.md | 3 +- .../algolia/configure-algolia.md | 6 +- .../algolia/integrate-algolia.md | 27 ++-- 4 files changed, 134 insertions(+), 20 deletions(-) create mode 100644 docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md new file mode 100644 index 00000000000..7558b07f7f5 --- /dev/null +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -0,0 +1,118 @@ +--- +title: Algolia Personalization +description: Find out how you can enable Algolia personalization in your Spryker shop +last_updated: Nov 24, 2024 +template: howto-guide-template +--- + +{% info_block infoBox "Info" %} + +Default Spryker setup supports Algolia personalization only with YVES frontend. +If you plan to use it with customer headless frontend or mobile application follow [this guide](#todo) + +{% endinfo_block %} + +## Prerequisites + +Your shop already has [integrated](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) +and [configured](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) ACP Algolia App +and your Algolia search indexes have some products. + +## Update Spryker Shop + + +### Install new Spryker packages + +```bash +composer install spryker-shop/traceable-event-widget +``` + +### Update Spryker packages + +```bash +composer update --with-dependencies spryker/search-http spryker/customer \ +spryker-shop/shop-ui spryker-shop/catalog-page spryker-shop/cart-page spryker-shop/checkout-page spryker-shop/home-page \ +spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page +``` + +if the command does now work, try with `--with-all-dependencies` instead. + +### Enabled new features +1. Update project config +```php +// config_default.php + +$config[KernelAppConstants::TENANT_IDENTIFIER] + //.. + = getenv('SPRYKER_TENANT_IDENTIFIER') ?: ''; +``` + +2. New widget will trigger events for user actions, that will be sent to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/) +```php +// src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php + +class ShopApplicationDependencyProvider extends SprykerShopApplicationDependencyProvider +{ + + protected function getGlobalWidgets(): array + { + return [ + //... + SprykerShop\Yves\TraceableEventWidget\Widget\TraceableEventWidget::class + ]; +} +``` + +3. The plugin that will generate an anonymous token for guest users in the session. +```php +// src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php + +class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependencyProvider +{ + + protected function getEventDispatcherPlugins(): array + { + return [ + //... + new Spryker\Yves\Customer\Plugin\EventDispatcher\AnonymousIdSessionAssignEventDispatcherPlugin(), + ]; +} +``` + +4. Build a new javascript for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. + Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment. + + +5Check project Yves compatibility and customizations + +* TODO: updated after the implementation of debugger. +`TraceableEventWidgetConfig::getIsDebugEnabled()` set to `true`. + +* Run the project locally or deploy to testing environment. +* Open your Shop storefront home page +* Open browser's development console and check "Preserve log" in the settings. + +Test the correctness of data in the triggered events in the browser console: +* (if applicable) Click on a product on the home page - PRODUCT_CLICK +* (if applicable) Click on a product add to cart button on the home page - ADD_TO_CART +* Open product details page (PDP) - PAGE_LOAD + * ADD_TO_CART + * ADD_TO_SHOPPING_LIST + * ADD_TO_WISHLIST + +### Add consent for your site users + +You have to update the text of your site agreement and ask for a user's consent that they agree that their site interactions will be tracked and sent + +### Test it + +Deploy to testing environment. Go to + +## Last checks + +{% warning_block warningBox "Make sure" %} + +If you previously had ACP Algolia App connected and used, you will need to disconnect and connect it again with the same Algolia credentials in the ACP App Catalog. +This action will update your Spryker shop config to be able to send events to Algolia. + +{% endinfo_block %} \ No newline at end of file diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md index 50bb1621b52..e03abcbaffc 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md @@ -1,7 +1,7 @@ --- title: Algolia description: Algolia empowers Builders with Search and Recommendation services to create world-class digital experiences. -last_updated: June 26 2023 +last_updated: Nov 24, 2024 template: howto-guide-template redirect_from: - /docs/pbc/all/search/202311.0/third-party-integrations/algolia.html - @@ -29,6 +29,7 @@ Your users can search for active concrete products by the following attributes: - Name - Description - Keywords +- or any other attribute that your products have (when it's configured in Algolia Dashboard) {% info_block infoBox "Note" %} diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 86236b636a3..9bac3b23e83 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -1,7 +1,7 @@ --- title: Configure Algolia description: Find out how you can configure Algolia in your Spryker shop -last_updated: Feb 21 2023 +last_updated: Nov 24, 2024 template: howto-guide-template redirect_from: - /docs/pbc/all/search/202311.0/third-party-integrations/configure-algolia.html - @@ -165,6 +165,7 @@ Default attributes for faceting are as follows: - `label` - `prices` - `rating` +- `merchant_name` (for Marketplace shops) The `prices` attribute is an object with nested fields. Algolia creates facets for each nested field and creates facets for all the currencies and pricing modes available in product entities. @@ -176,6 +177,9 @@ All configured index Facets will be displayed in the list of filter on Yves or v Also, Spryker's Algolia app supports `renderingContent` feature, which can be found in an index "Configuration > Facet display". Here you can configure the order of facets and add only relevant for end-users facets. +Please pay attention that Spryker has additional UI configuration for filters in the Backoffice > Merchandising > Filter Preferences, +where you can change a filter type: single-select, multi-select or range. That will be applied also for Algolia search results. + ##### Searchable Attributes defined as searchable may be used while calling Algolia's `searchForFacetValues` method, which can be used for the Storefront integration. This method is necessary to display catalog page facets if many values are possible for each facet—in this case, only 100 of those values are displayed by default. Accessing other values requires searching for them using the `searchForFacetValues` method. Select this option if you plan on having a large number of different values for this facet, and if you use the Spryker Storefront. diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md index 32babd0d325..fc400b420c1 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md @@ -2,7 +2,7 @@ title: Integrate Algolia description: Find out how you can integrate Algolia into your Spryker shop template: howto-guide-template -last_updated: Jan 09, 2024 +last_updated: Nov 24, 2024 redirect_from: - /docs/pbc/all/search/202400.0/base-shop/third-party-integrations/integrate-algolia.html - /docs/pbc/all/search/202311.0/base-shop/third-party-integrations/integrate-algolia.html @@ -18,6 +18,9 @@ Before integrating Algolia, ensure the following prerequisites are met: - Make sure your project is ACP-enabled. See [App Composition Platform installation](/docs/acp/user/app-composition-platform-installation.html) for details. - The Algolia app catalog page lists specific packages that must be installed or upgraded before you can use the Algolia app. To check the list of the necessary packages, in the Back Office, go to **Apps**-> **Algolia**. + +Example: + ![list-of-algolia-modules](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/algolia/integrate-algolia/list-of-algolia-modules.png) ## Integrate Algolia @@ -363,7 +366,6 @@ Add the following code to `src/Pyz/Zed/MessageBroker/MessageBrokerDependencyProv ```php //... -use Spryker\Zed\Merchant\Communication\Plugin\MessageBroker\MerchantMessageHandlerPlugin; use Spryker\Zed\Product\Communication\Plugin\MessageBroker\InitializeProductExportMessageHandlerPlugin; use Spryker\Zed\SearchHttp\Communication\Plugin\MessageBroker\SearchEndpointAvailableMessageHandlerPlugin; use Spryker\Zed\SearchHttp\Communication\Plugin\MessageBroker\SearchEndpointRemovedMessageHandlerPlugin; @@ -383,7 +385,6 @@ class MessageBrokerDependencyProvider extends SprykerMessageBrokerDependencyProv //... new ProductExportMessageHandlerPlugin(), new SearchEndpointMessageHandlerPlugin(), - new MerchantMessageHandlerPlugin(), # for marketplace only ]; } @@ -517,16 +518,13 @@ To trigger custom events in Spryker, use the `EventFacade::trigger('event-name', {% endinfo_block %} -#### Configure product dependencies in `Zed` +#### Configure Product dependencies in `Zed` Add the following code to `src/Pyz/Zed/Product/ProductDependencyProvider.php`: ```php -//... -# MerchantProductOffer is used only for Marketplace use Spryker\Zed\MerchantProductOffer\Communication\Plugin\Product\MerchantProductOfferProductConcreteExpanderPlugin; -//... use Spryker\Zed\PriceProduct\Communication\Plugin\Product\PriceProductConcreteMergerPlugin; use Spryker\Zed\ProductCategory\Communication\Plugin\Product\ProductConcreteCategoriesExpanderPlugin; use Spryker\Zed\ProductImage\Communication\Plugin\Product\ImageSetProductConcreteMergerPlugin; @@ -534,8 +532,6 @@ use Spryker\Zed\ProductReview\Communication\Plugin\Product\ProductReviewProductC use Spryker\Zed\ProductApproval\Communication\Plugin\Product\ApprovalStatusProductConcreteMergerPlugin; use Spryker\Zed\ProductLabel\Communication\Plugin\Product\ProductLabelProductConcreteExpanderPlugin; -//... - class ProductDependencyProvider extends SprykerProductDependencyProvider { //... @@ -708,21 +704,16 @@ class SynchronizationDependencyProvider extends SprykerSynchronizationDependency } ``` -### Receive ACP messages - -Now, you can start receiving ACP messages in SCOS. See [Receive messages](/docs/acp/user/receive-acp-messages.html) for details on how to do that. - ## Additional information on Algolia integration When integrating Algolia, you should keep in mind some peculiarities of the SearchHTTP plugins setup and differences of the default facets. ### SearchHTTP plugins setup -Spryker's `SearchHTTP` module transfers Glue search requests to external search providers, one of which is Algolia. The `SearchHTTP` query is built using the `QueryExpanderPlugin` classes. Their order is defined in the `CatalogDependencyProvider::createCatalogSearchQueryExpanderPluginVariants()` method. The order of execution of those plugins might be customized on the project level. By default, all module-specific query builder plugins will be executed before parsing `GET` query parameters, so any `GET` query parameters may overwrite search query parameters set before. - -### Default facets differences - -There is a difference in how default facets behave on Algolia and on the default Spryker installation using Elasticsearch. Some default Spryker facets like `brand` only accept one value as a filter, so it is impossible to specify multiple brands to filter on in one search request. This is not the case with Algolia, as multiple brands can be specified in the same search requests. This also applies to other configured facets. +Spryker's `SearchHTTP` module transfers Glue search requests to external search providers, one of which is Algolia. +The `SearchHTTP` query is built using the `QueryExpanderPlugin` classes. Their order is defined in the `CatalogDependencyProvider::createCatalogSearchQueryExpanderPluginVariants()` method. +The order of execution of those plugins might be customized on the project level. +By default, all module-specific query builder plugins will be executed before parsing `GET` query parameters, so any `GET` query parameters may overwrite search query parameters set before. ## Next steps From 66de4465396e1882d3a9f42f0106c6edc1306aee Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Fri, 8 Nov 2024 22:41:07 +0200 Subject: [PATCH 013/199] ACP-3963: Algolia signup wording --- .../third-party-integrations/algolia/configure-algolia.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 9bac3b23e83..5aca5462d63 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -11,7 +11,7 @@ Once you have [integrated the Algolia app](/docs/pbc/all/search/{{page.version}} ## Prerequisites -To start using Algolia for your shop, you need an account with Algolia. You can create the account on the [Algolia website](https://www.algolia.com). +To start using Algolia for your shop, you need an account with Algolia. Please contact the Spryker sales team for sign up today. ## Configure Algolia From d2b69526a364ef0326e08bd9c3ee641297fd7c09 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 11 Nov 2024 13:24:40 +0200 Subject: [PATCH 014/199] last updates --- .../algolia/algolia-personalization.md | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 7558b07f7f5..43971a38ffb 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -8,15 +8,15 @@ template: howto-guide-template {% info_block infoBox "Info" %} Default Spryker setup supports Algolia personalization only with YVES frontend. -If you plan to use it with customer headless frontend or mobile application follow [this guide](#todo) +If your plan is Algolia personalization usage in headless frontend or mobile application follow [this guide](#todo) {% endinfo_block %} ## Prerequisites Your shop already has [integrated](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) -and [configured](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) ACP Algolia App -and your Algolia search indexes have some products. +and [configured](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/configure-algolia.html) ACP Algolia App +and your Algolia search indexes have products. ## Update Spryker Shop @@ -63,7 +63,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` -3. The plugin that will generate an anonymous token for guest users in the session. +3. The plugin that will generate an anonymous token for guest users in the session. ```php // src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php @@ -79,11 +79,15 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency } ``` -4. Build a new javascript for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. - Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment. +4. Build a new javascript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. + Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment first. -5Check project Yves compatibility and customizations +5. Check Yves's compatibility + +In case of customizations your codebase could have updated Yves templates on project level (src/Pyz/Yves/). +It could be a reason that some events won't be triggered or triggered with incorrect data. +To check it you need to run * TODO: updated after the implementation of debugger. `TraceableEventWidgetConfig::getIsDebugEnabled()` set to `true`. @@ -102,17 +106,19 @@ Test the correctness of data in the triggered events in the browser console: ### Add consent for your site users -You have to update the text of your site agreement and ask for a user's consent that they agree that their site interactions will be tracked and sent +You have to update the text of your site agreement and ask for a user's consent that they agree that their site interactions will be tracked and sent. ### Test it -Deploy to testing environment. Go to - -## Last checks +1. Deploy to testing environment. +2. Make sure that Algolia is connected and configured in the Backoffice > Apps. {% warning_block warningBox "Make sure" %} If you previously had ACP Algolia App connected and used, you will need to disconnect and connect it again with the same Algolia credentials in the ACP App Catalog. This action will update your Spryker shop config to be able to send events to Algolia. -{% endinfo_block %} \ No newline at end of file +{% endinfo_block %} + +3. Open Yves, act as a guest and logged-in user, do searches, filter results, open product pages after search, add products to cart, do order placement. +4. Go to Algolia and From ea3b9613e772c9293575c3e63bb3cf29c88ec3ea Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 11 Nov 2024 15:55:04 +0200 Subject: [PATCH 015/199] ACP-3963: Check your Yves's compatibility with the feature --- .../algolia/algolia-personalization.md | 57 +++++++++++++------ 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 43971a38ffb..3adb7c89865 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -7,8 +7,8 @@ template: howto-guide-template {% info_block infoBox "Info" %} -Default Spryker setup supports Algolia personalization only with YVES frontend. -If your plan is Algolia personalization usage in headless frontend or mobile application follow [this guide](#todo) +Default Spryker setup supports Algolia personalization only for YVES frontend. +If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](#todo). {% endinfo_block %} @@ -35,10 +35,10 @@ spryker-shop/shop-ui spryker-shop/catalog-page spryker-shop/cart-page spryker-sh spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page ``` -if the command does now work, try with `--with-all-dependencies` instead. +if the command does now work, try it with `--with-all-dependencies` flag instead. ### Enabled new features -1. Update project config +1. Update project config: ```php // config_default.php @@ -47,7 +47,7 @@ $config[KernelAppConstants::TENANT_IDENTIFIER] = getenv('SPRYKER_TENANT_IDENTIFIER') ?: ''; ``` -2. New widget will trigger events for user actions, that will be sent to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/) +2. Enable new widget, that will trigger events for user actions and send them to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/): ```php // src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php @@ -63,7 +63,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` -3. The plugin that will generate an anonymous token for guest users in the session. +3. Enabled the plugin that will generate an anonymous token for guest users in the session: ```php // src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php @@ -83,30 +83,50 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment first. -5. Check Yves's compatibility +5. Check your Yves's compatibility with the feature: In case of customizations your codebase could have updated Yves templates on project level (src/Pyz/Yves/). It could be a reason that some events won't be triggered or triggered with incorrect data. -To check it you need to run + * TODO: updated after the implementation of debugger. `TraceableEventWidgetConfig::getIsDebugEnabled()` set to `true`. * Run the project locally or deploy to testing environment. -* Open your Shop storefront home page +* Open your Shop Storefront home page. * Open browser's development console and check "Preserve log" in the settings. Test the correctness of data in the triggered events in the browser console: -* (if applicable) Click on a product on the home page - PRODUCT_CLICK -* (if applicable) Click on a product add to cart button on the home page - ADD_TO_CART -* Open product details page (PDP) - PAGE_LOAD - * ADD_TO_CART - * ADD_TO_SHOPPING_LIST - * ADD_TO_WISHLIST +* Open Home page + * (if applicable) Click on a product - `PRODUCT_CLICK` + * (if applicable) Click on a product add to cart button - `ADD_TO_CART` +* Open product detail page (PDP), you should see events for actions: + * `PAGE_LOAD` + * `ADD_TO_CART` + * `ADD_TO_SHOPPING_LIST` + * `ADD_TO_WISHLIST` +* Open any Category page or Search results page: + * `PAGE_LOAD` with displayed products SKUs and displayed search filters + * `PRODUCT_CLICK` when user clicks on results + * `ADD_TO_CART` with product SKU, currency and price, when user clicks Add to cart from the catalog page. +* Open Cart page + * (if applicable) add a new product from add to cart widget `ADD_TO_CART` + * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` +* Open Quick Order page + * (if applicable) add a new product from add to cart widget `ADD_TO_CART` + * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` + + +If you find some events are not triggered or data in the event payload is incorrect check your updated Yves templates on project level (src/Pyz/Yves/). +Find the original template in the core `/vendor/spryker/spryker-shop/...` and check what selectors are used in `{% block eventTracker %}`, +adjust the block code in your project templates when needed. + +//TODO: example will be helpful here. + -### Add consent for your site users +### Update site's agreement text -You have to update the text of your site agreement and ask for a user's consent that they agree that their site interactions will be tracked and sent. +You should update the site agreement text and ask for user consent to have their interactions with the site tracked and sent to Algolia. ### Test it @@ -121,4 +141,5 @@ This action will update your Spryker shop config to be able to send events to Al {% endinfo_block %} 3. Open Yves, act as a guest and logged-in user, do searches, filter results, open product pages after search, add products to cart, do order placement. -4. Go to Algolia and +4. Go to [Algolia Dashboard](https://dashboard.algolia.com/) and open Events from Data Sources section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. +5. Check that you see events from your site here. From 50370a470ee82cd2884974227d25c606c74016e8 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 11 Nov 2024 17:04:58 +0200 Subject: [PATCH 016/199] ACP-3963: Personalization search IG and headless frontends application guides. --- .../algolia-personalization-headless.md | 46 +++++++++++++++++++ .../algolia/algolia-personalization.md | 26 +++++++---- 2 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md new file mode 100644 index 00000000000..c55a1135527 --- /dev/null +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md @@ -0,0 +1,46 @@ +--- +title: Algolia Personalization for headless frontends +description: Find out how you can enable Algolia personalization in your Spryker shop based on headless approach (custom frontend or mobile application). +last_updated: Nov 24, 2024 +template: howto-guide-template +--- + +{% info_block infoBox "Info" %} + +Default Spryker installation supports Algolia personalization only for YVES frontend. + +{% endinfo_block %} + +The events from your site/application are required to enable Algolia premium features such as + +- Personalization +- Dynamic Re-Ranking +- Query Categorization +- Search analytics +- Revenue analytics +- A/B Testing + + +For custom frontends or mobile application it's recommended to use Algolia SDK for specific framework or platform and use built-in Algolia UI components. +They already support event tracking for most of the required events. + +For Web +* Any JavaScript applications: + * https://www.algolia.com/doc/api-reference/widgets/js/ + * standalone client for events (Insights): https://www.algolia.com/doc/api-client/methods/insights/?client=javascript +* React: + * https://www.algolia.com/doc/api-reference/widgets/react/ +* Vue: + * https://www.algolia.com/doc/guides/building-search-ui/getting-started/vue/ +* Angular: + * https://www.algolia.com/doc/guides/building-search-ui/getting-started/angular/ +* Flutter: + * https://www.algolia.com/doc/guides/building-search-ui/getting-started/flutter/ + +For mobile applications: +* Android https://www.algolia.com/doc/guides/building-search-ui/getting-started/android/ +* iOS https://www.algolia.com/doc/guides/building-search-ui/getting-started/ios/ + + +For additional "conversion" events such as "Add to Cart", "Add to Shopping List", or "Add to Wishlist" use Insights API client for your framework/platform +and the methods from this page https://www.algolia.com/doc/api-client/methods/insights/. diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 3adb7c89865..77483af90df 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -7,8 +7,17 @@ template: howto-guide-template {% info_block infoBox "Info" %} -Default Spryker setup supports Algolia personalization only for YVES frontend. -If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](#todo). +Default Spryker installation supports Algolia personalization only for YVES frontend. +If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). + +This feature also enables other Algolia premium features: + +- Personalization +- Dynamic Re-Ranking +- Query Categorization +- Search analytics +- Revenue analytics +- A/B Testing {% endinfo_block %} @@ -82,14 +91,12 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency 4. Build a new javascript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment first. - 5. Check your Yves's compatibility with the feature: In case of customizations your codebase could have updated Yves templates on project level (src/Pyz/Yves/). It could be a reason that some events won't be triggered or triggered with incorrect data. - -* TODO: updated after the implementation of debugger. +// TODO (@matweew/@supproduction): updated after the implementation of debugger. `TraceableEventWidgetConfig::getIsDebugEnabled()` set to `true`. * Run the project locally or deploy to testing environment. @@ -121,12 +128,11 @@ If you find some events are not triggered or data in the event payload is incorr Find the original template in the core `/vendor/spryker/spryker-shop/...` and check what selectors are used in `{% block eventTracker %}`, adjust the block code in your project templates when needed. -//TODO: example will be helpful here. - +// TODO (@supproduction): example will be helpful here. -### Update site's agreement text +### Update website agreement text -You should update the site agreement text and ask for user consent to have their interactions with the site tracked and sent to Algolia. +You should update the website agreement text and ask for user consent to have their interactions with the website tracked and sent to Algolia. ### Test it @@ -142,4 +148,4 @@ This action will update your Spryker shop config to be able to send events to Al 3. Open Yves, act as a guest and logged-in user, do searches, filter results, open product pages after search, add products to cart, do order placement. 4. Go to [Algolia Dashboard](https://dashboard.algolia.com/) and open Events from Data Sources section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. -5. Check that you see events from your site here. +5. Check that you see events from your website here. From ac84e7f777c82d87a1b64005d67ad7ef471dfe16 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 11 Nov 2024 17:09:34 +0200 Subject: [PATCH 017/199] ACP-3963: typos --- .../third-party-integrations/algolia/configure-algolia.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 5aca5462d63..010bce7db9a 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -32,7 +32,7 @@ To configure Algolia, do the following: - Admin API Key 8. Go back to your store's Back Office, to the Algolia app details page. 9. In the top right corner of the Algolia app details page, click **Configure**. -10. In the **Configure** pane, fill in the **APPLICATION ID**, **SEARCH API KEY**, and **ADMIN KEY** fields with the values from step 7. +10. In the **Configure** pane, fill in the **APPLICATION ID**, **SEARCH API KEY**, and **ADMIN API KEY** fields with the values from step 7. ![algolia-settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/algolia/integrate-algolia/algolia-settings.png) @@ -208,7 +208,7 @@ It is not recommended to turn this checkbox off. #### Spryker Filter Preferences and Algolia app -When used with Algolia ACP, Spryker facets configuration is ignored and Algolia facets configuration is used instead +When used with Algolia app, Spryker facets configuration is ignored and Algolia facets configuration is used instead. Use "Configuration > Facet display" to configure the list of filter. Be wary that setting any Algolia facet to `"filter only"` mode removes it from the list of visible filters. From 73294a30cc4f786375a2ff92e1831a44c02b0dc2 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:29:48 +0200 Subject: [PATCH 018/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../algolia/algolia-personalization-headless.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md index c55a1135527..6971fd51ea7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md @@ -21,7 +21,7 @@ The events from your site/application are required to enable Algolia premium fea - A/B Testing -For custom frontends or mobile application it's recommended to use Algolia SDK for specific framework or platform and use built-in Algolia UI components. +For custom frontends or mobile applications, it's recommended to use the Algolia SDK for a specific framework or platform and the built-in Algolia UI components. They already support event tracking for most of the required events. For Web From d67a606dcb2a1d67b54f5c4a3be205e4946676c8 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:30:06 +0200 Subject: [PATCH 019/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../algolia/algolia-personalization-headless.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md index 6971fd51ea7..cea32f693e3 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md @@ -22,7 +22,7 @@ The events from your site/application are required to enable Algolia premium fea For custom frontends or mobile applications, it's recommended to use the Algolia SDK for a specific framework or platform and the built-in Algolia UI components. -They already support event tracking for most of the required events. +The Algolia UI components already support event tracking for most of the required events. For Web * Any JavaScript applications: From 3766655d49877368f5c47269099869e706fe1760 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:38:34 +0200 Subject: [PATCH 020/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../algolia/algolia-personalization-headless.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md index cea32f693e3..25c61bcc853 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md @@ -42,5 +42,5 @@ For mobile applications: * iOS https://www.algolia.com/doc/guides/building-search-ui/getting-started/ios/ -For additional "conversion" events such as "Add to Cart", "Add to Shopping List", or "Add to Wishlist" use Insights API client for your framework/platform +For additional "conversion" events such as "Add to Cart", "Add to Shopping List", or "Add to Wishlist" use the Insights API client for your framework/platform and the methods from this page https://www.algolia.com/doc/api-client/methods/insights/. From 17dec502ce3eef066b9f741433f4a09187965db5 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:39:38 +0200 Subject: [PATCH 021/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 77483af90df..25a636ba9cc 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -88,7 +88,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency } ``` -4. Build a new javascript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. +4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment first. 5. Check your Yves's compatibility with the feature: From 224f20c1ddc7a85235a4d8b0685d7bdf4d9ae857 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:40:03 +0200 Subject: [PATCH 022/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 25a636ba9cc..a16b3ea14ff 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -89,7 +89,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency ``` 4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. - Usually it's executed automatically during Spryker Cloud deployment pipeline. But it's better to check this command on local development environment first. + Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. 5. Check your Yves's compatibility with the feature: From 4ee8ed91dc5709cd9d776a9baa4d36c8e1a7a9bf Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:40:30 +0200 Subject: [PATCH 023/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index a16b3ea14ff..490f8cfc761 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -93,7 +93,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency 5. Check your Yves's compatibility with the feature: -In case of customizations your codebase could have updated Yves templates on project level (src/Pyz/Yves/). +In case of customizations, your codebase could have updated Yves templates on the project level (src/Pyz/Yves/). It could be a reason that some events won't be triggered or triggered with incorrect data. // TODO (@matweew/@supproduction): updated after the implementation of debugger. From 0ea4c156d7a1f6910cdad78049333aad6a72688c Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:42:06 +0200 Subject: [PATCH 024/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 490f8cfc761..31088f8a96b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -107,7 +107,7 @@ Test the correctness of data in the triggered events in the browser console: * Open Home page * (if applicable) Click on a product - `PRODUCT_CLICK` * (if applicable) Click on a product add to cart button - `ADD_TO_CART` -* Open product detail page (PDP), you should see events for actions: +* Open the product detail page (PDP), you should see events for the actions: * `PAGE_LOAD` * `ADD_TO_CART` * `ADD_TO_SHOPPING_LIST` From 03f7112ee7698d1db54bd4f1ee73b45718d3e82b Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:52:04 +0200 Subject: [PATCH 025/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/configure-algolia.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 010bce7db9a..25d3472c459 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -208,7 +208,7 @@ It is not recommended to turn this checkbox off. #### Spryker Filter Preferences and Algolia app -When used with Algolia app, Spryker facets configuration is ignored and Algolia facets configuration is used instead. +When used with the Algolia app, the Spryker facets configuration is ignored and the Algolia facets configuration is used instead. Use "Configuration > Facet display" to configure the list of filter. Be wary that setting any Algolia facet to `"filter only"` mode removes it from the list of visible filters. From d580c4706674f8ef4d80a495d503d60d1a2e076d Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:52:30 +0200 Subject: [PATCH 026/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Klatt --- .../third-party-integrations/algolia/configure-algolia.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 25d3472c459..01b0ed8477d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -175,7 +175,7 @@ The `prices` attribute is an object with nested fields. Algolia creates facets f All configured index Facets will be displayed in the list of filter on Yves or via Glue API `/catalog-search`. Also, Spryker's Algolia app supports `renderingContent` feature, which can be found in an index "Configuration > Facet display". -Here you can configure the order of facets and add only relevant for end-users facets. +Here you can configure the order of facets and add only for end-users relevant facets. Please pay attention that Spryker has additional UI configuration for filters in the Backoffice > Merchandising > Filter Preferences, where you can change a filter type: single-select, multi-select or range. That will be applied also for Algolia search results. From bd69888d700236030a6a50d0d7aad8bd938065f0 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 12:53:43 +0200 Subject: [PATCH 027/199] ACP-3963: review changes --- .../algolia/algolia-personalization-headless.md | 1 - .../algolia/algolia-personalization.md | 12 ++++++------ .../algolia/configure-algolia.md | 4 +++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md index 25c61bcc853..a7c701d1736 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md @@ -13,7 +13,6 @@ Default Spryker installation supports Algolia personalization only for YVES fron The events from your site/application are required to enable Algolia premium features such as -- Personalization - Dynamic Re-Ranking - Query Categorization - Search analytics diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 31088f8a96b..6ed3e7a2880 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -12,7 +12,6 @@ If you plan to use Algolia personalization in headless frontend or mobile applic This feature also enables other Algolia premium features: -- Personalization - Dynamic Re-Ranking - Query Categorization - Search analytics @@ -105,16 +104,17 @@ It could be a reason that some events won't be triggered or triggered with incor Test the correctness of data in the triggered events in the browser console: * Open Home page - * (if applicable) Click on a product - `PRODUCT_CLICK` - * (if applicable) Click on a product add to cart button - `ADD_TO_CART` -* Open the product detail page (PDP), you should see events for the actions: + * (if home page has products) Click on a product - `PRODUCT_CLICK` + * (if home page has the add to cart button) Click on a product add to cart button - `ADD_TO_CART` +* Open any product detail page (PDP), you should see events for the actions: * `PAGE_LOAD` * `ADD_TO_CART` * `ADD_TO_SHOPPING_LIST` * `ADD_TO_WISHLIST` * Open any Category page or Search results page: - * `PAGE_LOAD` with displayed products SKUs and displayed search filters - * `PRODUCT_CLICK` when user clicks on results + * `QueryID` should be present in the event payload on this page type. + * `PAGE_LOAD` with displayed products SKUs and displayed search filters. + * `PRODUCT_CLICK` when user clicks on results. * `ADD_TO_CART` with product SKU, currency and price, when user clicks Add to cart from the catalog page. * Open Cart page * (if applicable) add a new product from add to cart widget `ADD_TO_CART` diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 01b0ed8477d..3afdfa210dd 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -178,7 +178,9 @@ Also, Spryker's Algolia app supports `renderingContent` feature, which can be fo Here you can configure the order of facets and add only for end-users relevant facets. Please pay attention that Spryker has additional UI configuration for filters in the Backoffice > Merchandising > Filter Preferences, -where you can change a filter type: single-select, multi-select or range. That will be applied also for Algolia search results. +where you can change a filter type: single-select, multi-select or range. That will be applied to Catalog/Search pages filters UI. +E.g. you can set the "Brand" type to single or multi-select, both options are supported by Algolia. +Default type is multi-select for all facets provided in the Algolia. ##### Searchable From 5c3df14b246e7f655a557db4b4f2b1434f1f99bb Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 16:05:27 +0200 Subject: [PATCH 028/199] ACP-3963: updated text --- .../algolia/algolia-personalization.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 6ed3e7a2880..918999f3448 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -133,6 +133,12 @@ adjust the block code in your project templates when needed. ### Update website agreement text You should update the website agreement text and ask for user consent to have their interactions with the website tracked and sent to Algolia. +Something similar to + +> **User Data analytics** +> +> To enhance your experience, we use data and analytics to understand how you interact with our site. +> By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. ### Test it From d62fe417b7cc1a476704cb04f562be2b97e206bb Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 12 Nov 2024 17:20:26 +0200 Subject: [PATCH 029/199] ACP-3963: TODO for module list --- .../third-party-integrations/algolia/algolia-personalization.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 918999f3448..7393de2a5ae 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -42,6 +42,7 @@ composer update --with-dependencies spryker/search-http spryker/customer \ spryker-shop/shop-ui spryker-shop/catalog-page spryker-shop/cart-page spryker-shop/checkout-page spryker-shop/home-page \ spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page ``` +TODO: the list should be revalidated after final code review. if the command does now work, try it with `--with-all-dependencies` flag instead. From ca5c7a12e83e9b9c766eebe5525cf70e9a434faa Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Wed, 13 Nov 2024 11:52:39 +0200 Subject: [PATCH 030/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 7393de2a5ae..908f589feaa 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -96,8 +96,8 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency In case of customizations, your codebase could have updated Yves templates on the project level (src/Pyz/Yves/). It could be a reason that some events won't be triggered or triggered with incorrect data. -// TODO (@matweew/@supproduction): updated after the implementation of debugger. -`TraceableEventWidgetConfig::getIsDebugEnabled()` set to `true`. +// TODO (@matweew/@supproduction) +`TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. * Run the project locally or deploy to testing environment. * Open your Shop Storefront home page. From 42f83d7ac25eec6b9adbbe10dcc9b3ebd86305b4 Mon Sep 17 00:00:00 2001 From: Aleksey Belan Date: Thu, 14 Nov 2024 12:41:18 +0200 Subject: [PATCH 031/199] ACP-3963: Add FE support --- .../algolia/algolia-personalization.md | 76 ++++++++++++++++--- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 908f589feaa..247ca974ff0 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -39,8 +39,10 @@ composer install spryker-shop/traceable-event-widget ```bash composer update --with-dependencies spryker/search-http spryker/customer \ -spryker-shop/shop-ui spryker-shop/catalog-page spryker-shop/cart-page spryker-shop/checkout-page spryker-shop/home-page \ -spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page +spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/payment-page spryker-shop/home-page \ +spryker-shop/price-product-volume-widget spryker-shop/product-detail-page spryker-shop/product-group-widget \ +spryker-shop/product-review-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page \ +spryker-shop/shop-ui ``` TODO: the list should be revalidated after final code review. @@ -92,11 +94,12 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. 5. Check your Yves's compatibility with the feature: +`npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. + In case of customizations, your codebase could have updated Yves templates on the project level (src/Pyz/Yves/). It could be a reason that some events won't be triggered or triggered with incorrect data. -// TODO (@matweew/@supproduction) `TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. * Run the project locally or deploy to testing environment. @@ -108,28 +111,83 @@ Test the correctness of data in the triggered events in the browser console: * (if home page has products) Click on a product - `PRODUCT_CLICK` * (if home page has the add to cart button) Click on a product add to cart button - `ADD_TO_CART` * Open any product detail page (PDP), you should see events for the actions: - * `PAGE_LOAD` - * `ADD_TO_CART` - * `ADD_TO_SHOPPING_LIST` - * `ADD_TO_WISHLIST` + * `PAGE_LOAD` with sku of viewed product. + * `ADD_TO_CART` with product SKU, currency, price and quantity, when user clicks Add to cart. + * `ADD_TO_SHOPPING_LIST` with product SKU when user clicks Add to shopping list. + * `ADD_TO_WISHLIST` with product SKU when user clicks Add to wishlist list. * Open any Category page or Search results page: * `QueryID` should be present in the event payload on this page type. * `PAGE_LOAD` with displayed products SKUs and displayed search filters. * `PRODUCT_CLICK` when user clicks on results. * `ADD_TO_CART` with product SKU, currency and price, when user clicks Add to cart from the catalog page. + * `FILTER_CLICK` with filters list, when user clicks any filter from the filter section. * Open Cart page * (if applicable) add a new product from add to cart widget `ADD_TO_CART` * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` * Open Quick Order page * (if applicable) add a new product from add to cart widget `ADD_TO_CART` * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` - +* Open Order Success page + * `PAGE_LOAD` with currency, order total, skus, prices, quantities of purchased products. If you find some events are not triggered or data in the event payload is incorrect check your updated Yves templates on project level (src/Pyz/Yves/). Find the original template in the core `/vendor/spryker/spryker-shop/...` and check what selectors are used in `{% block eventTracker %}`, adjust the block code in your project templates when needed. -// TODO (@supproduction): example will be helpful here. +You can find API description and event configuration example in `traceable-events-orchestrator` [Readme file](spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) +The full list of events you can find in `traceable-events-algolia` [Readme file](spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md) + +### Algolia Adapter Extending +If you need to extend existing events with custom logic or/and add new event you can extend adapter on project level. + +```typescript +declare global { + interface SPRYKER_EVENTS { + NEW_EVENT: undefined; + } +} + +interface EventData extends EventsHandlerData { + // Add params for specific event +} + +export default class ProjectEventsAdapter extends TraceableEventsAlgolia { + override getHandlers(): Partial { + const events = super.getHandlers(); + + return { + ...events, + PRODUCT_CLICK: [...events['PRODUCT_CLICK'], this.additionalLogicClickEvent], + NEW_EVENT: [this.projectEvent], + }; + } + + protected projectEvent(data: EventData): void { + // Custom handler for new event + } + + protected additionalLogicClickEvent(data: ProductEventData): void { + // Custom handler for product click event + } +} +``` + +Then you can add it to twig events configuration. + +```twig +{% block eventTracker %} + {% set events = { + list: events.list | merge([{ + event: 'NEW_EVENT', + name: event handler name, + triggers: [...event triggers], + }]), + data: events.data, + } %} + + {{ parent() }} +{% endblock %} +``` ### Update website agreement text From 2c5564a658b766cf5c53023c0f65c504935a66bf Mon Sep 17 00:00:00 2001 From: Aleksey Belan Date: Thu, 14 Nov 2024 17:10:29 +0200 Subject: [PATCH 032/199] ACP-3963: Add FE support --- .../algolia/algolia-personalization.md | 184 ++++++++++++++---- 1 file changed, 146 insertions(+), 38 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 247ca974ff0..1172f937aea 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -130,63 +130,171 @@ Test the correctness of data in the triggered events in the browser console: * Open Order Success page * `PAGE_LOAD` with currency, order total, skus, prices, quantities of purchased products. -If you find some events are not triggered or data in the event payload is incorrect check your updated Yves templates on project level (src/Pyz/Yves/). -Find the original template in the core `/vendor/spryker/spryker-shop/...` and check what selectors are used in `{% block eventTracker %}`, -adjust the block code in your project templates when needed. +To view a full list of available events, refer to the `traceable-events-algolia` [Readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). -You can find API description and event configuration example in `traceable-events-orchestrator` [Readme file](spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) -The full list of events you can find in `traceable-events-algolia` [Readme file](spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md) +When debug mode is enabled, you can see event logs in the console to help with inspection. -### Algolia Adapter Extending -If you need to extend existing events with custom logic or/and add new event you can extend adapter on project level. +#### Common Issues and Solutions -```typescript -declare global { - interface SPRYKER_EVENTS { - NEW_EVENT: undefined; - } -} +##### Prerequisites -interface EventData extends EventsHandlerData { - // Add params for specific event -} +If you need to add, modify, or fix events at the project level, start with these two steps: -export default class ProjectEventsAdapter extends TraceableEventsAlgolia { - override getHandlers(): Partial { - const events = super.getHandlers(); +- Locate the page template or view that is used for the current page. +- Override the `{% block eventTracker %}` block in your project’s template at the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level). - return { - ...events, - PRODUCT_CLICK: [...events['PRODUCT_CLICK'], this.additionalLogicClickEvent], - NEW_EVENT: [this.projectEvent], - }; - } +For comprehensive details about the **event configuration API**, visit the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). - protected projectEvent(data: EventData): void { - // Custom handler for new event - } +##### Issue: Event Not Triggering on User Action - protected additionalLogicClickEvent(data: ProductEventData): void { - // Custom handler for product click event - } -} +If an event is not firing, verify that the desired action (e.g., 'click', 'change') is configured for the specific event (e.g., `PRODUCT_CLICK`). + +1. Check the Configuration + +Spryker provides default configurations for built-in components. For new components, you need to add the appropriate event configuration. + +```twig +{% block eventTracker %} + {% set events = { + list: events.list | merge([ + { + event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK + name: 'NEEDED_EVENT_LISTENER', // e.g., click/change + triggers: [...event triggers data], + }, + ]), + data: events.data, + } %} + + {{ parent() }} +{% endblock %} ``` -Then you can add it to twig events configuration. +Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. + +2. Check Event Selector + +Spryker includes default CSS selectors. If selectors have changed, update the configuration accordingly. ```twig {% block eventTracker %} {% set events = { - list: events.list | merge([{ - event: 'NEW_EVENT', - name: event handler name, - triggers: [...event triggers], - }]), + list: events.list | merge([ + { + event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK + name: 'NEEDED_EVENT_LISTENER', // e.g., click/change/load + triggers: [ + { + selector: 'new_css_selector_path', // The element selector to monitor + /* event data configuration */ + }, + ], + }, + ]), data: events.data, } %} {{ parent() }} {% endblock %} + +``` + +##### Issue: Incorrect Event Payload + +You can view the event payload in the console under `Adapter Data:`. If the payload is incorrect, check the static and dynamic data configurations. + +1. Static Data + +Adjust static data in the eventTracker block as needed: + +```twig +{% block eventTracker %} + {% set events = { + list: events.list, + data: events.data | merge({ + existing_key_to_override: New Data, + new_key: New Data, + }), + } %} + + {{ parent() }} +{% endblock %} +``` + +1. Dynamic Data + +For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. + +```twig +{% set events = { + list: events.list | merge([{ + event: 'EVENT_EXAMPLE', + name: 'click', + triggers: [ + { + selector: '.js-related-products', + groupAs: { + key: 'relatedProducts', // Group data under the 'relatedProducts' key + toArray: true, // Convert the grouped data into an array format + }, + data: { + details: { + selector: 'self', // Look for the 'details' attribute within the current element + flatten: true, // Flatten the structure of the object to simplify it + }, + name: { + selector: '.product-name', // Search for an element with the 'product-name' class within the monitored element + attribute: 'price', // Use the 'price' attribute as the value; if absent, fallback to the element's text content + }, + price: { + value: 'static value', // Assign a fixed value to the 'price' attribute + }, + attributes: { + selector: '.attribute-selector', + multi: true, // Collect all matching elements and return their data as an array + }, + metadata: { + multi: true, + selector: '.metadata-row', + composed: { // Create nested structures for more detailed data gathering and start searching elements from `.metadata-row` selector. + brand: { + selector: '.product-brand', + attribute: 'textContent' + }, + category: { + selector: '.product-category', + }, + }, + }, + }, + }, + ], + }]), + data: events.data, +} %} + +{# Expected transformed data format in the console: + { + ...global data/event metadata, + relatedProducts: { + // Flattened data from the 'details' attribute + name: VALUE, // The value taken from the 'name' selector or attribute + price: 'static value', // The fixed 'price' value + attributes: [VALUE, VALUE, VALUE, ...], // Array of values collected from elements matching '.attribute-selector' + metadata: [ + { + brand: VALUE, // 'brand' data extracted from the '.metadata-row .product-brand' element + category: VALUE, // 'category' data from the '.metadata-row .product-category' element + }, + { + brand: VALUE, // 'brand' data extracted from the '.metadata-row .product-brand' element + category: VALUE, // 'category' data from the '.metadata-row .product-category' element + }, + ... + ] + } + } +#} ``` ### Update website agreement text From 0cde4fe6a7def63b9f4b5ec324b97626a6ec60ec Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 14 Nov 2024 17:52:52 +0200 Subject: [PATCH 033/199] ACP-3963: updates --- .../algolia/algolia-personalization.md | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 1172f937aea..0aa89b8b412 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -92,21 +92,26 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency 4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. + + Check that required modulule`npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. -5. Check your Yves's compatibility with the feature: -`npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. +### Check your Yves's compatibility with new functionality -In case of customizations, your codebase could have updated Yves templates on the project level (src/Pyz/Yves/). +In case of customizations, your codebase could have updated Yves templates on the project level (`src/Pyz/Yves/`). It could be a reason that some events won't be triggered or triggered with incorrect data. -`TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. - +#### Run the project +* Set `TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. * Run the project locally or deploy to testing environment. * Open your Shop Storefront home page. * Open browser's development console and check "Preserve log" in the settings. -Test the correctness of data in the triggered events in the browser console: +#### Check triggered events and their payload + +When debug mode is enabled, you can see event logs in the console to help with inspection. + +Monitor the browser's console and execute following cases: * Open Home page * (if home page has products) Click on a product - `PRODUCT_CLICK` * (if home page has the add to cart button) Click on a product add to cart button - `ADD_TO_CART` @@ -132,7 +137,6 @@ Test the correctness of data in the triggered events in the browser console: To view a full list of available events, refer to the `traceable-events-algolia` [Readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). -When debug mode is enabled, you can see event logs in the console to help with inspection. #### Common Issues and Solutions @@ -151,7 +155,7 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang 1. Check the Configuration -Spryker provides default configurations for built-in components. For new components, you need to add the appropriate event configuration. +Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig {% block eventTracker %} @@ -205,7 +209,7 @@ You can view the event payload in the console under `Adapter Data:`. If the payl 1. Static Data -Adjust static data in the eventTracker block as needed: +Adjust static data in the `eventTracker` block as needed: ```twig {% block eventTracker %} @@ -221,7 +225,7 @@ Adjust static data in the eventTracker block as needed: {% endblock %} ``` -1. Dynamic Data +2. Dynamic Data For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. From 547475af1e2c6ad35a4c1038c623f3dc241204ff Mon Sep 17 00:00:00 2001 From: Oleksii Bilan Date: Thu, 14 Nov 2024 19:16:13 +0200 Subject: [PATCH 034/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 0aa89b8b412..55bfec6a99d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -93,7 +93,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency 4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. - Check that required modulule`npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. + Check that required dependency is installed `npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. ### Check your Yves's compatibility with new functionality From f21ee99ed8df27a0a18bf879c3dfec2342c908fb Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 18 Nov 2024 12:38:48 +0200 Subject: [PATCH 035/199] ACP-3963: A/b tests for new features --- .../algolia/algolia-personalization.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 55bfec6a99d..a1deb4529c2 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -326,3 +326,13 @@ This action will update your Spryker shop config to be able to send events to Al 3. Open Yves, act as a guest and logged-in user, do searches, filter results, open product pages after search, add products to cart, do order placement. 4. Go to [Algolia Dashboard](https://dashboard.algolia.com/) and open Events from Data Sources section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. 5. Check that you see events from your website here. + + +### Configure Algolia Features + +When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. +Then you can start configuration of Personalization, Dynamic Re-Ranking and Query Categorization features (find Algolia docs and guides on their website). + +**It's important** that you need to first create A/B tests with new personalized configuration of your search (A/B Testing tab in Algolia Dashboard). +It will allow you to see how new features influence your site conversion rate only for some limit audience of your site. When the results are good, +you can change the settings globally in the indexes configuration, so it will work for all users. From 203d34ff73037961b07b7be93268362dc75ee881 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 18 Nov 2024 17:13:45 +0200 Subject: [PATCH 036/199] ACP-3963: module list is updated --- .../algolia/algolia-personalization.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index a1deb4529c2..bc6597ced0e 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -39,12 +39,10 @@ composer install spryker-shop/traceable-event-widget ```bash composer update --with-dependencies spryker/search-http spryker/customer \ -spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/payment-page spryker-shop/home-page \ -spryker-shop/price-product-volume-widget spryker-shop/product-detail-page spryker-shop/product-group-widget \ -spryker-shop/product-review-widget spryker-shop/product-set-detail-page spryker-shop/quick-order-page \ -spryker-shop/shop-ui +spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/home-page spryker-shop/payment-page \ +spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-review-widget \ +spryker-shop/product-set-detail-page spryker-shop/quick-order-page spryker-shop/shop-ui ``` -TODO: the list should be revalidated after final code review. if the command does now work, try it with `--with-all-dependencies` flag instead. From 94abc1697b211d23c5fe9d9f809504ddfcbe3042 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 19 Nov 2024 13:20:58 +0200 Subject: [PATCH 037/199] Update configure-algolia.md --- .../algolia/configure-algolia.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 3afdfa210dd..6df5a78e642 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -11,7 +11,7 @@ Once you have [integrated the Algolia app](/docs/pbc/all/search/{{page.version}} ## Prerequisites -To start using Algolia for your shop, you need an account with Algolia. Please contact the Spryker sales team for sign up today. +To sign up for Algolia, contact our sales team. ## Configure Algolia @@ -26,27 +26,25 @@ To configure Algolia, do the following: ![algolia-keys](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/algolia/integrate-algolia/algolia-keys.png) -7. From the **Your API Keys** tab, copy the following keys: - - Application ID - - Search API Key - - Admin API Key -8. Go back to your store's Back Office, to the Algolia app details page. +7. In the **Your API Keys** tab, take note of following keys: + - **Application ID** + - **Search API Key** + - **Admin API Key** +8. In the Back Office, go to the Algolia app details page. 9. In the top right corner of the Algolia app details page, click **Configure**. -10. In the **Configure** pane, fill in the **APPLICATION ID**, **SEARCH API KEY**, and **ADMIN API KEY** fields with the values from step 7. +10. In the **Configure** pane, for **APPLICATION ID**, **SEARCH API KEY**, and **ADMIN API KEY**, enter the values you've retrieved in step 7. ![algolia-settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/algolia/integrate-algolia/algolia-settings.png) -12. "Use Algolia instead of Elasticsearch" checkbox enables Algolia search on your frontends (Yves or Glue API-based application). -You can postpone checking it until all your products are synchronized with Algolia. +12. To enable Algolia, select **Use Algolia instead of Elasticsearch**. +After you save the settings, this enables Algolia search on your frontends: Yves or Glue API-based application. You can also enable it later , for example–after all your products are synced with Algolia. 13. Click **Save**. The Algolia app is now added to your store and starts exporting your product data automatically. {% info_block infoBox "Info" %} -You need to wait some time until Algolia finishes the product export. -The more products you have, the longer you have to wait (from few minutes to several hours). -The average export speed is around *300 products per minute*. +Depending on the size of your product catalog, Algolia can take from few minutes to several hours to export it. The average export speed is around 300 products per minute. {% endinfo_block %} @@ -85,7 +83,7 @@ Default fields for searchable attributes are the following: - `product_abstract_sku` - `name` - `abstract_name` -- `category` +- `category` - `description` - `keywords` - `attributes.brand` @@ -101,10 +99,10 @@ Default fields for searchable attributes are the following: ### Send additional fields to Algolia -Spryker's Algolia App integration allows adding additional data to exported products. -This is achieved using the pre-configured `searchMetadata` field on ProductConcrete and ProductAbstract transfers. +You can add additional data to exported products using the pre-configured `searchMetadata` field on `ProductConcrete` and `ProductAbstract` transfers. #### Filling in the `searchMetadata` field + There're multiple ways of adding search metadata. For the sake of an example, we'll implement `ProductConcreteExpanderPlugin`. Create a new plugin implementing `ProductConcreteExpanderPluginInterface`. Then you can add any logic inside that plugin's `expand` method to add necessary metadata to ProductConcrete transfers: @@ -165,7 +163,7 @@ Default attributes for faceting are as follows: - `label` - `prices` - `rating` -- `merchant_name` (for Marketplace shops) +- Only for marketplaces: `merchant_name` The `prices` attribute is an object with nested fields. Algolia creates facets for each nested field and creates facets for all the currencies and pricing modes available in product entities. From 49d5819676a383be41c45e58f00f2306d2e965de Mon Sep 17 00:00:00 2001 From: Anton Smarovydlo Date: Tue, 19 Nov 2024 19:21:33 +0100 Subject: [PATCH 038/199] FRW-8550 Dynamic Multistore documentation. --- _data/sidebars/pbc_all_sidebar.yml | 6 + .../202410.0/enable-dynamic-multistore.md | 56 +++++++ .../202410.0/install-dynamic-multistore.md | 9 +- .../base-shop/difference-between-modes.md | 143 ++++++++++++++++++ .../base-shop/enable-dynamic-multistore.md | 8 + .../202410.0/base-shop/faq.md | 35 +++++ 6 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 _includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md create mode 100644 docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md create mode 100644 docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.md create mode 100644 docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 3bff7bf80fd..4cbc8ed9807 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -1226,6 +1226,12 @@ entries: - title: Add fields to Back Office forms url: /docs/pbc/all/dynamic-multistore/base-shop/add-fields-to-back-office-forms.html + - title: Difference between Dynamic Multistore ON and OFF mode + url: /docs/pbc/all/dynamic-multistore/base-shop/difference-between-modes.html + - title: Enable / Disable Dynamic Multistore + url: /docs/pbc/all/dynamic-multistore/base-shop/enable-dynamic-multistore.html + - title: FAQ Dynamic Multistore + url: /docs/pbc/all/dynamic-multistore/base-shop/faq.html - title: Delete stores url: /docs/pbc/all/dynamic-multistore/base-shop/delete-stores.html - title: Import stores diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md new file mode 100644 index 00000000000..18344d9efe9 --- /dev/null +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -0,0 +1,56 @@ +This document describes how to enable [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/dynamic-multistore-feature-overview.html) on the latest codebase. + +## Enable Dynamic Multistore + +{% info_block warningBox "Project version" %} +If your project version is below 202307.0, you need to update to the latest codebase first, see [Install Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/install-dynamic-multistore.html) page. +{% endinfo_block %} + +### Here are the steps that needs to be performed to enable Dynamic Multistore. + +{% info_block warningBox "Staging environment" %} + Make sure that **all** steps above are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. +{% endinfo_block %} + + +1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. +2. Make sure that you custom console commands (and the places where they are executed) updated to the new format, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Deployment file difference). +3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region, make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. +4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. +5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: + - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. + - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. + (Expected downtime is limited to the deployment time, normally it takes less than 1hr) +5. Update deployment your AWS deployment files to Dynamic Multistore mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). +6. Run normal deploy for your server pipeline. + + +{% info_block warningBox "Verification" %} +- Make sure your store is accessible at `https://yves.eu.mysprykershop.com` or `https://backoffice.eu.mysprykershop.com`. +- Make sure the store switcher is displayed on the Storefront. + + +Congratulations! Now you have Dynamic Multistore feature up and running. +{% endinfo_block %} + +## Rollout + +### Rollout procedure is opposite, and contains the following steps: + +{% info_block warningBox "Staging environment" %} +Make sure that **all** steps above are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. +{% endinfo_block %} + +1. Be aware that after disabling Dynamic Multistore mode, your basic domain structure will change from region to store, make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. +2. Disabling Dynamic Store feature itself does not require any database changes. +3. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: + - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. + - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. + (Expected downtime is limited to the deployment time, normally it takes less than 1hr) +4. Revert changes for you deployment files to Dynamic Multistore OFF mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). +6. Run normal deploy for your server pipeline. + +{% info_block warningBox "Verification" %} +- Make sure your store is accessible at `https://yves.de.mysprykershop.com` or `https://backoffice.de.mysprykershop.com`. +- Make sure the store switcher is **not** displayed on the Storefront. +{% endinfo_block %} \ No newline at end of file diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index 165dd1e34f8..955dad707d6 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -7,7 +7,7 @@ Follow the steps below to install the Dynamic Multistore feature core. ### Prerequisites for projects below version 202307.0 {% info_block warningBox "Project version" %} -If your project is of version 202307.0 or later, go to [Enable the dynamic store feature]. +If your project is of version 202307.0 or later you can skip steps below and go directly to [enabling process]([here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.html)). {% endinfo_block %} 1. Upgrade the following modules: @@ -1528,7 +1528,12 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` -## Launch and set up environment + +## Launch and set up environment (locally) + +{% info_block warningBox "Project version" %} +For enabling Dynamic Multistore on production environment please read [enabling process]([here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.html)). +{% endinfo_block %} Rebuild the application with assets and activate new endpoints: diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md new file mode 100644 index 00000000000..335b13f4528 --- /dev/null +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md @@ -0,0 +1,143 @@ +--- +title: Difference in deployment files +description: This document describes the difference between Dynamic Multistore ON and OFF mode. +past_updated: Nov 1, 2024 +template: howto-guide-template +last_updated: Nov 1, 2024 +--- + +This document describes the difference between Dynamic Multistore ON and OFF mode. + + +## Deployment file difference + +### Environment variable section + +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy.dynamic-store-off -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r production.dynamic-store-off --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive.dynamic-store-off --no-ansi -vvv' +SPRYKER_YVES_HOST_DE: de.{{DOMAIN_ZONE}} +SPRYKER_YVES_HOST_AT: at.{{DOMAIN_ZONE}} +``` + +changed to: + +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r dynamic-store --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive --no-ansi -vvv' +SPRYKER_DYNAMIC_STORE_MODE: true +SPRYKER_YVES_HOST_EU: yves.eu.{{DOMAIN_ZONE}} +``` + +### Regions section + +```yaml +regions: + stores: + DE: + services: + broker: + namespace: de_queue + key_value_store: + namespace: 1 + search: + namespace: de_search + session: + namespace: 2 + AT: + services: + broker: + namespace: at_queue + key_value_store: + namespace: 3 + search: + namespace: at_search + session: + namespace: 4 +``` +converted to: + +```yaml +regions: + broker: + namespace: eu-docker + key_value_store: + namespace: 1 + search: + namespace: eu_search +``` + + +### Applications section + +{% info_block infoBox "Info" %} + The same pattern is valid for all applications +{% endinfo_block %} + +```yaml + mportal: + application: merchant-portal + endpoints: + mp.de.{{DOMAIN_ZONE}}: + entry-point: MerchantPortal + store: DE + primal: true + services: + session: + namespace: 7 + mp.at.{{DOMAIN_ZONE}}: + entry-point: MerchantPortal + store: AT + services: + session: + namespace: 8 +``` + +converted to: + +```yaml +mportal: + application: merchant-portal + endpoints: + mp.eu.{{DOMAIN_ZONE}}: + region: EU + <<: *frontend-auth + entry-point: MerchantPortal + primal: true + services: + session: + namespace: 7 +``` + +{% info_block infoBox "Verification" %} +Please make sure that you've migrated all the application by the pattern provided above. +{% endinfo_block %} + +{% info_block infoBox "Info" %} + The domain structure is changed to have an ability to switch between stores withing one domain. +{% endinfo_block %} + +## Difference in console commands execution + +In disabled Dynamic Multistore mode, console commands which somehow depends on store, were executed with `APPLICATION_STORE` environment variable, example: + +```shell +APPLICATION_STORE=DE console search:setup:sources +``` + +In Dynamic Multistore mode, all the store aware console commands should be executed with `--store` parameter, example: + +```shell +console search:setup:sources --store=DE +``` + +In case if store is not provided as a parameter, the command is executed for all stores within the current region. + +For the custom console commands please follow the next rules: +- `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. +- All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. +- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. \ No newline at end of file diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.md new file mode 100644 index 00000000000..bb991fec894 --- /dev/null +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/enable-dynamic-multistore.md @@ -0,0 +1,8 @@ +--- +title: Enable Dynamic Multistore +description: Learn how to enable the Dynamic Store feature on the latest codebase +last_updated: Nov 19, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/enable-dynamic-multistore.md %} diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md new file mode 100644 index 00000000000..ef58ddd3af1 --- /dev/null +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md @@ -0,0 +1,35 @@ +--- +title: Dynamic Multistore FAQ +description: This document contains frequently asked questions for Dynamic Multistore. +past_updated: Nov 1, 2024 +template: howto-guide-template +last_updated: Nov 1, 2024 +--- + +This document contains frequently asked questions about Dynamic Multistore feature. + +## Questions + +### How to check if Dynamic Multistore is enabled on your environment? + +#### Option #1 (On env side) +- Verify the value of `SPRYKER_DYNAMIC_STORE_MODE` environment variable, if it's exists and it equals to `true` then you project operates in Dynamic Multistore mode. +#### Option #2 (On interface side) +- Navigate to + http://backoffice.eu.spryker.local/store-gui/list, verify if `Edit` button is available on each store on the page. + +### What is the difference of how Storefront and GlueStorefront (as well as Glue) vs Backoffice and Merchant Portal works in Dynamic Multistore mode? + +In both cases, the applications works with the several stores withing the one region, but: +* Backoffice, MerchantPortal operates with data from all the stores withing the specific region without requirement to provide the specific store. +* Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) + + +### Infrastructure in PaaS: is there anything that needs to be done in PaaS? + +The only difference is in the deployment files. More details that can be found [here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). + + +### How store-specific entities should be managed in Data Exchange API? + +There are no specific requirements, all depends on the database structure. Should be handled the same way as any other exposed through Data Exchange API database table. \ No newline at end of file From 6767fd1015e89a5467ef708118357dbe1a0dcc28 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Wed, 20 Nov 2024 15:41:57 +0200 Subject: [PATCH 039/199] ACP-3963: added A/B testing training link --- .../algolia/algolia-personalization.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index bc6597ced0e..eafe80f6eb8 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -331,6 +331,7 @@ This action will update your Spryker shop config to be able to send events to Al When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. Then you can start configuration of Personalization, Dynamic Re-Ranking and Query Categorization features (find Algolia docs and guides on their website). -**It's important** that you need to first create A/B tests with new personalized configuration of your search (A/B Testing tab in Algolia Dashboard). -It will allow you to see how new features influence your site conversion rate only for some limit audience of your site. When the results are good, +**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) +with new personalized configuration of your search ("A/B Testing" page in Algolia Dashboard). +It will allow you to see how new features influence your search conversion rate only for some limit audience of your site. When the results are good, you can change the settings globally in the indexes configuration, so it will work for all users. From a404e31137286a0ea9d6adf2709500de29b2ce52 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 20 Nov 2024 17:06:54 +0200 Subject: [PATCH 040/199] customize --- _data/sidebars/pbc_all_sidebar.yml | 4 + .../algolia/configure-algolia.md | 176 +----------------- .../algolia/customize-algolia.md | 174 +++++++++++++++++ 3 files changed, 180 insertions(+), 174 deletions(-) create mode 100644 docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 68f177ca90e..c95748ecb80 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -3808,6 +3808,10 @@ entries: url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/integrate-algolia.html - title: Configure Algolia url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/configure-algolia.html + - title: Customize Algolia + url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/customize-algolia.html + include_versions: + - "202410.0" - title: Disconnect Algolia url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/disconnect-algolia.html - title: Getting access to Algolia dashboard diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 6df5a78e642..2425bff4af3 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -4,7 +4,7 @@ description: Find out how you can configure Algolia in your Spryker shop last_updated: Nov 24, 2024 template: howto-guide-template redirect_from: - - /docs/pbc/all/search/202311.0/third-party-integrations/configure-algolia.html - + - /docs/pbc/all/search/202311.0/third-party-integrations/configure-algolia.html - /docs/pbc/all/search/202311.0/base-shop/third-party-integrations/configure-algolia.html --- Once you have [integrated the Algolia app](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html), you can configure it. @@ -37,7 +37,7 @@ To configure Algolia, do the following: ![algolia-settings](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/algolia/integrate-algolia/algolia-settings.png) 12. To enable Algolia, select **Use Algolia instead of Elasticsearch**. -After you save the settings, this enables Algolia search on your frontends: Yves or Glue API-based application. You can also enable it later , for example–after all your products are synced with Algolia. + After you save the settings, this enables Algolia search on your frontends: Yves or Glue API-based application. You can also enable it later, for example–after all your products are synced with Algolia. 13. Click **Save**. The Algolia app is now added to your store and starts exporting your product data automatically. @@ -67,175 +67,3 @@ Verify that your index is populated with data from your store: {% endinfo_block %} For details about the created index data, see [Indexes](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia.html#indexes). - -## Optional: Adjust Algolia configuration - -The default Algolia app configuration mimics the default Spryker search configuration. However, you may want to adjust some of those settings to your needs. - -### Overview of searchable attributes - -![algolia-searchable-attributes](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-searchable-attributes.png) - -Algolia's **Searchable attributes** configuration determines which attributes are used to find results while searching with a search query. - -Default fields for searchable attributes are the following: -- `sku` -- `product_abstract_sku` -- `name` -- `abstract_name` -- `category` -- `description` -- `keywords` -- `attributes.brand` - -### Adjust the searchable attributes list in Algolia - -1. In the side pane, go to **Search > Index**. -2. Open the Algolia indices list and find all primary indices. -3. On the **Configuration** tab, select **Searchable attributes**. -4. To adjust the **Searchable attributes** list, add and remove needed searchable attributes. -5. Click **Review and save settings**. This opens the **Review and save settings** window. -6. Enable **Copy these settings to other indices and/or replicas** and click **Save settings**. - -### Send additional fields to Algolia - -You can add additional data to exported products using the pre-configured `searchMetadata` field on `ProductConcrete` and `ProductAbstract` transfers. - -#### Filling in the `searchMetadata` field - -There're multiple ways of adding search metadata. For the sake of an example, we'll implement `ProductConcreteExpanderPlugin`. - -Create a new plugin implementing `ProductConcreteExpanderPluginInterface`. Then you can add any logic inside that plugin's `expand` method to add necessary metadata to ProductConcrete transfers: - -```php - -use Spryker\Zed\Kernel\Communication\AbstractPlugin; -use Spryker\Zed\ProductExtension\Dependency\Plugin\ProductConcreteExpanderPluginInterface; - -class SearchMetadataExampleProductConcreteExpanderPlugin extends AbstractPlugin implements ProductConcreteExpanderPluginInterface -{ - /** - * @param array<\Generated\Shared\Transfer\ProductConcreteTransfer> $productConcreteTransfers - * - * @return array<\Generated\Shared\Transfer\ProductConcreteTransfer> - */ - public function expand(array $productConcreteTransfers): array - { - foreach ($productConcreteTransfers as $productConcreteTransfer) - { - $productConcreteTransfer->addSearchMetadata('isBestseller', true); - // ... - // OR - // ... - $searchMetadata = [ - 'isBestseller' => true, - 'popularity' => 100, - ]; - - $productConcreteTransfer->setSearchMetadata($searchMetadata); - } - - return $productConcreteTransfers; - } -} -``` - -{% info_block warningBox "Associative array" %} - -The `searchMetadata` field must be an associative array. Allowed values are all scalars and arrays. - -{% endinfo_block %} - -##### Using `searchMetadata` field in Algolia - -Algolia product object `searchMetadata` field is a simple object that can be used in any index configuration just like any other field. - -### Overview of facets list - -![algolia-facets](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-facets.png) - -Algolia **Facets** configuration determines which attributes are used for search faceting. - -Default attributes for faceting are as follows: -- `attributes.brand` -- `attributes.color` -- `category` -- `label` -- `prices` -- `rating` -- Only for marketplaces: `merchant_name` - -The `prices` attribute is an object with nested fields. Algolia creates facets for each nested field and creates facets for all the currencies and pricing modes available in product entities. - -#### Facet configuration - -##### Facet display - -All configured index Facets will be displayed in the list of filter on Yves or via Glue API `/catalog-search`. -Also, Spryker's Algolia app supports `renderingContent` feature, which can be found in an index "Configuration > Facet display". -Here you can configure the order of facets and add only for end-users relevant facets. - -Please pay attention that Spryker has additional UI configuration for filters in the Backoffice > Merchandising > Filter Preferences, -where you can change a filter type: single-select, multi-select or range. That will be applied to Catalog/Search pages filters UI. -E.g. you can set the "Brand" type to single or multi-select, both options are supported by Algolia. -Default type is multi-select for all facets provided in the Algolia. - -##### Searchable - -Attributes defined as searchable may be used while calling Algolia's `searchForFacetValues` method, which can be used for the Storefront integration. This method is necessary to display catalog page facets if many values are possible for each facet—in this case, only 100 of those values are displayed by default. Accessing other values requires searching for them using the `searchForFacetValues` method. Select this option if you plan on having a large number of different values for this facet, and if you use the Spryker Storefront. - -##### Filter only - -Attributes defined as filters only are not used for aggregation and can only be used to narrow down search result lists. This approach can be used with attributes for which aggregated counts are not important. - -{% info_block warningBox "Glue API search response" %} - -Setting an attribute as `filter only` prevents it from showing in the facets list in the Glue API search response. - -{% endinfo_block %} - -##### Not searchable - -Default option. This facet configuration enables aggregation of search results by facet values. -`searchForFacetValues` method can't be used with facets configured this way. -Use this option when you have limited facet values or plan on using something other than the Spryker Storefront. - -##### After distinct checkbox - -This checkbox is checked by default. Clearing this checkbox changes the calculation method for facet aggregation for the given field. -By default, facet aggregation is calculated after search results for a given query are processed by deduplication or grouping process. -It is not recommended to turn this checkbox off. - -#### Spryker Filter Preferences and Algolia app - -When used with the Algolia app, the Spryker facets configuration is ignored and the Algolia facets configuration is used instead. -Use "Configuration > Facet display" to configure the list of filter. -Be wary that setting any Algolia facet to `"filter only"` mode removes it from the list of visible filters. - -### Add new attributes for faceting - -1. In the side pane, go to **Search > Index**. -2. Find all primary indices. -3. On the **Configuration** tab, select **Facets**. -4. To adjust the **Attributes for faceting** list, add and remove attributes. -5. Click **Review and save settings**. This opens the **Review and save settings** window. -6. Enable **Copy these settings to other indices and/or replicas** and click **Save Settings**. - -### Custom ranking and sorting - -![algolia-ranking](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-ranking.png) - -Algolia's **Ranking and sorting** configuration determines which products can be shown before others when customers search your catalog. -Learn more about Custom Ranking and Sorting in the [Algolia documentation](https://www.algolia.com/doc/guides/managing-results/must-do/custom-ranking/). - -## Retain Algolia configuration after a destructive deployment - -{% info_block errorBox "" %} -[Destructive deployment](https://spryker.com/docs/dg/dev/acp/retaining-acp-apps-when-running-destructive-deployments.html) permanently deletes the configuration of Algolia. - -To run a destructive deployment, follow the steps: -1. Disconnect Algolia. -2. Run a destructive deployment. -3. Reconnect Algolia. - -{% endinfo_block %} diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md new file mode 100644 index 00000000000..2d457dcabff --- /dev/null +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md @@ -0,0 +1,174 @@ +--- +title: Customize Algolia +description: Find out how you can customize Algolia in your Spryker shop +last_updated: Nov 24, 2024 +template: howto-guide-template +--- + + +The default Algolia app configuration mimics the default Spryker search configuration. However, you may want to adjust some of those settings to your needs. + +## Overview of searchable attributes + +![algolia-searchable-attributes](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-searchable-attributes.png) + +Algolia's **Searchable attributes** configuration determines which attributes are used to find results while searching with a search query. + +Default fields for searchable attributes are the following: +- `sku` +- `product_abstract_sku` +- `name` +- `abstract_name` +- `category` +- `description` +- `keywords` +- `attributes.brand` + +## Adjust the searchable attributes list in Algolia + +1. In the side pane, go to **Search > Index**. +2. Open the Algolia indices list and find all primary indices. +3. On the **Configuration** tab, select **Searchable attributes**. +4. To adjust the **Searchable attributes** list, add and remove needed searchable attributes. +5. Click **Review and save settings**. This opens the **Review and save settings** window. +6. Enable **Copy these settings to other indices and/or replicas** and click **Save settings**. + +## Send additional fields to Algolia + +You can add additional data to exported products using the pre-configured `searchMetadata` field on `ProductConcrete` and `ProductAbstract` transfers. + +### Filling in the `searchMetadata` field + +There're multiple ways of adding search metadata. For the sake of an example, we'll implement `ProductConcreteExpanderPlugin`. + +Create a new plugin implementing `ProductConcreteExpanderPluginInterface`. Then you can add any logic inside that plugin's `expand` method to add necessary metadata to ProductConcrete transfers: + +```php + +use Spryker\Zed\Kernel\Communication\AbstractPlugin; +use Spryker\Zed\ProductExtension\Dependency\Plugin\ProductConcreteExpanderPluginInterface; + +class SearchMetadataExampleProductConcreteExpanderPlugin extends AbstractPlugin implements ProductConcreteExpanderPluginInterface +{ + /** + * @param array<\Generated\Shared\Transfer\ProductConcreteTransfer> $productConcreteTransfers + * + * @return array<\Generated\Shared\Transfer\ProductConcreteTransfer> + */ + public function expand(array $productConcreteTransfers): array + { + foreach ($productConcreteTransfers as $productConcreteTransfer) + { + $productConcreteTransfer->addSearchMetadata('isBestseller', true); + // ... + // OR + // ... + $searchMetadata = [ + 'isBestseller' => true, + 'popularity' => 100, + ]; + + $productConcreteTransfer->setSearchMetadata($searchMetadata); + } + + return $productConcreteTransfers; + } +} +``` + +{% info_block warningBox "Associative array" %} + +The `searchMetadata` field must be an associative array. Allowed values are all scalars and arrays. + +{% endinfo_block %} + +#### Using `searchMetadata` field in Algolia + +Algolia product object `searchMetadata` field is a simple object that can be used in any index configuration just like any other field. + +## Overview of facets list + +![algolia-facets](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-facets.png) + +Algolia **Facets** configuration determines which attributes are used for search faceting. + +Default attributes for faceting are as follows: +- `attributes.brand` +- `attributes.color` +- `category` +- `label` +- `prices` +- `rating` +- Only for marketplaces: `merchant_name` + +The `prices` attribute is an object with nested fields. Algolia creates facets for each nested field and creates facets for all the currencies and pricing modes available in product entities. + +### Facet configuration + +Algolia uses facets for categorizing and grouping your data. + +#### Facet display + +All configured index facets will be displayed in the list of filter on Yves or via Glue API `/catalog-search`. +Algolia app supports the `renderingContent` feature, which can be found in an index "Configuration > Facet display". +Here you can configure the order of facets and add only for end-users relevant facets. + +In the **Merchandising** > **Filter Preferences** of the Back Office, you can configure define the filter types to be displayed on the Catalog and Search pages: single-select, multi-select, or range. By default, the multi-select type is set for all facets provided by Algolia. + +#### Searchable + +Attributes defined as searchable may be used while calling Algolia's `searchForFacetValues` method, which can be used for the Storefront integration. This method is necessary to display catalog page facets if many values are possible for each facet—in this case, only 100 of those values are displayed by default. Accessing other values requires searching for them using the `searchForFacetValues` method. Select this option if you plan on having a large number of different values for this facet, and if you use the Spryker Storefront. + +#### Filter only + +Attributes defined as filters only are not used for aggregation and can only be used to narrow down search result lists. This approach can be used with attributes for which aggregated counts are not important. + +{% info_block warningBox "Glue API search response" %} + +Setting an attribute as `filter only` prevents it from showing in the facets list in the Glue API search response. + +{% endinfo_block %} + +#### Not searchable + +This is the default option. This facet configuration enables aggregation of search results by facet values. The `searchForFacetValues` method can't be used with facets configured this way. Use this option with third-party frontends or if you have limited facet values. + +#### After distinct + +By default, facet aggregation is calculated after search results for a given query are processed by deduplication or grouping process. Disabling this option changes the calculation method for facet aggregation for the given field. We don't recomment disabling it. + +### Filter preferences with Algolia app + +When used with the Algolia app, Algolia's facets configuration is used instead of that of Spryker. + +In Algolia, you can configure the list of filters in **Configuration** > **Facet display**. + +Setting any Algolia facet to **filter only** mode removes it from the list of visible filters. + +## Add new attributes for faceting + +1. In the side pane, go to **Search > Index**. +2. Find all primary indices. +3. On the **Configuration** tab, select **Facets**. +4. To adjust the **Attributes for faceting** list, add and remove attributes. +5. Click **Review and save settings**. This opens the **Review and save settings** window. +6. Enable **Copy these settings to other indices and/or replicas** and click **Save Settings**. + +## Custom ranking and sorting + +![algolia-ranking](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-ranking.png) + +Algolia's **Ranking and sorting** configuration determines which products can be shown before others when customers search your catalog. +Learn more about Custom Ranking and Sorting in the [Algolia documentation](https://www.algolia.com/doc/guides/managing-results/must-do/custom-ranking/). + +## Retain Algolia configuration after a destructive deployment + +{% info_block errorBox "" %} +[Destructive deployment](https://spryker.com/docs/dg/dev/acp/retaining-acp-apps-when-running-destructive-deployments.html) permanently deletes the configuration of Algolia. + +To run a destructive deployment, follow the steps: +1. Disconnect Algolia. +2. Run a destructive deployment. +3. Reconnect Algolia. + +{% endinfo_block %} From d2af5edc720be5685c3f3fb828bd2c9d9e0972b6 Mon Sep 17 00:00:00 2001 From: Anton Smarovydlo Date: Thu, 21 Nov 2024 17:42:49 +0100 Subject: [PATCH 041/199] FRW-8550 Adjustments after review. --- .../202410.0/enable-dynamic-multistore.md | 10 +++++----- .../202410.0/base-shop/difference-between-modes.md | 7 +++++++ .../base-shop/dynamic-multistore-feature-overview.md | 2 ++ .../all/dynamic-multistore/202410.0/base-shop/faq.md | 7 ++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md index 18344d9efe9..5e575cc5828 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -15,13 +15,13 @@ If your project version is below 202307.0, you need to update to the latest code 1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. 2. Make sure that you custom console commands (and the places where they are executed) updated to the new format, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Deployment file difference). -3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region, make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. +3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region for all the applications(Example https://yves.de.mysprykershop.com => https://yves.eu.mysprykershop.com), make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. 4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. 5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) -5. Update deployment your AWS deployment files to Dynamic Multistore mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). +5. Update AWS deployment files to Dynamic Multistore mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). 6. Run normal deploy for your server pipeline. @@ -33,9 +33,9 @@ If your project version is below 202307.0, you need to update to the latest code Congratulations! Now you have Dynamic Multistore feature up and running. {% endinfo_block %} -## Rollout +## Rollback -### Rollout procedure is opposite, and contains the following steps: +### Rollback procedure is opposite, and contains the following steps: {% info_block warningBox "Staging environment" %} Make sure that **all** steps above are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. @@ -44,7 +44,7 @@ Make sure that **all** steps above are performed (and fully tested) on staging b 1. Be aware that after disabling Dynamic Multistore mode, your basic domain structure will change from region to store, make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. 2. Disabling Dynamic Store feature itself does not require any database changes. 3. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: - - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. + - During server migration you do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) 4. Revert changes for you deployment files to Dynamic Multistore OFF mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md index 335b13f4528..659ebb3ab8e 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md @@ -11,6 +11,13 @@ This document describes the difference between Dynamic Multistore ON and OFF mod ## Deployment file difference +### What is the difference of how Storefront and GlueStorefront (as well as Glue) vs Backoffice and Merchant Portal works in Dynamic Multistore mode? + +In both cases, the applications works with the several stores within the one region, but: +* Backoffice, MerchantPortal operates with data from all the stores within the specific region without requirement to provide the specific store. +* Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) + + ### Environment variable section ```yaml diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md index 577015b062a..01bed3ad3e9 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md @@ -135,6 +135,8 @@ In this example, EU region has DE and AT stores. US region has a US store. Dynam ![storefront-store-switcher](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/storefront-store-switcher.png) +See more details [here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). + ## Data import performance The number of stores affects data import speed: the more stores you have, the slower the data import. Importing products for 40 stores takes approximately 5 times longer than for 8 stores. diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md index ef58ddd3af1..12fe0e5f807 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md @@ -18,12 +18,9 @@ This document contains frequently asked questions about Dynamic Multistore featu - Navigate to http://backoffice.eu.spryker.local/store-gui/list, verify if `Edit` button is available on each store on the page. -### What is the difference of how Storefront and GlueStorefront (as well as Glue) vs Backoffice and Merchant Portal works in Dynamic Multistore mode? - -In both cases, the applications works with the several stores withing the one region, but: -* Backoffice, MerchantPortal operates with data from all the stores withing the specific region without requirement to provide the specific store. -* Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) +### What is the difference between Dynamic Multistore ON and OFF modes. +[See details](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). ### Infrastructure in PaaS: is there anything that needs to be done in PaaS? From b5e9c9fbd3853fd1d42e31be890658f4f8033470 Mon Sep 17 00:00:00 2001 From: Anton Smarovydlo Date: Thu, 21 Nov 2024 17:45:25 +0100 Subject: [PATCH 042/199] FRW-8550 Adjustments after review. --- .../202410.0/base-shop/difference-between-modes.md | 7 ------- docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md | 8 ++++++-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md index 659ebb3ab8e..335b13f4528 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md @@ -11,13 +11,6 @@ This document describes the difference between Dynamic Multistore ON and OFF mod ## Deployment file difference -### What is the difference of how Storefront and GlueStorefront (as well as Glue) vs Backoffice and Merchant Portal works in Dynamic Multistore mode? - -In both cases, the applications works with the several stores within the one region, but: -* Backoffice, MerchantPortal operates with data from all the stores within the specific region without requirement to provide the specific store. -* Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) - - ### Environment variable section ```yaml diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md index 12fe0e5f807..a94f91861b4 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md @@ -18,9 +18,13 @@ This document contains frequently asked questions about Dynamic Multistore featu - Navigate to http://backoffice.eu.spryker.local/store-gui/list, verify if `Edit` button is available on each store on the page. -### What is the difference between Dynamic Multistore ON and OFF modes. +### What is the difference of how Storefront and GlueStorefront (as well as Glue) vs Backoffice and Merchant Portal works in Dynamic Multistore mode? -[See details](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). +In both cases, the applications works with the several stores within the one region, but: +* Backoffice, MerchantPortal operates with data from all the stores within the specific region without requirement to provide the specific store. +* Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) + +[See more details](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). ### Infrastructure in PaaS: is there anything that needs to be done in PaaS? From 52aa5a058c6b4c259f5a63cce97bb6941104d471 Mon Sep 17 00:00:00 2001 From: Anton Smarovydlo Date: Thu, 21 Nov 2024 18:22:52 +0100 Subject: [PATCH 043/199] FRW-8550 Adjustments after review. --- .../base-shop/difference-between-modes.md | 32 +++++++++++++++++- .../dynamic-multistore-feature-overview.md | 33 ++----------------- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md index 335b13f4528..3d9d65bc7a1 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md @@ -140,4 +140,34 @@ In case if store is not provided as a parameter, the command is executed for all For the custom console commands please follow the next rules: - `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. - All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. -- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. \ No newline at end of file +- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. + +## How Dynamic Multistore affects a project + +In this example, EU region has DE and AT stores. US region has a US store. Dynamic Multistore introduces the following changes in this setup: + +- URLs for Storefront, Back Office, Merchant Portal, and Glue API contain region instead of store name. For example–the URL of the Back Office is `https://backoffice.eu.mysprykershop.com` instead of `https://backoffice.de.mysprykershop.com`. + +- RabbitMQ virtual hosts contain region instead of store. For example–`eu-docker` instead of `de-docker`. + +![rabbitmq-virtual-hosts-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-non-dms.png) + +![rabbitmq-virtual-hosts-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-dms.png) + +- Jenkins job names contain region instead of store. For example–`EU_queue-worker-start` instead of `DE_queue-worker-start`. + +![jenkins-jobs-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-non-dms.png) + +![jenkins-jobs-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-dms.png) + +- Elasticsearch indexes contain store as a part of the index name for Dynamic Multistore enabled and disabled modes. + +![elasticsearch-indexes-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-non-dms.png) + +![elasticsearch-indexes-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-dms.png) + +- Redis keys contain store as a part of the key name for Dynamic Multistore enabled and disabled modes. + +- When Dynamic Multistore is enabled, customers can switch between available stores for a region. When a customer changes a store, it's set to the `_store` query parameter. Using the query parameter, the store is added to session under the `current_store` key. It's used for fetching store-related data. + +![storefront-store-switcher](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/storefront-store-switcher.png) \ No newline at end of file diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md index 01bed3ad3e9..ab2a8e05754 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md @@ -104,38 +104,9 @@ When you add a new store, to enable store-related entities for customers, you ne To avoid manually assigning entities in the Back Office, you can assign them using data import. For more details, see [Import stores](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/import-stores.html). +## Differences in modes -## How Dynamic Multistore affects a project - -In this example, EU region has DE and AT stores. US region has a US store. Dynamic Multistore introduces the following changes in this setup: - -- URLs for Storefront, Back Office, Merchant Portal, and Glue API contain region instead of store name. For example–the URL of the Back Office is `https://backoffice.eu.mysprykershop.com` instead of `https://backoffice.de.mysprykershop.com`. - -- RabbitMQ virtual hosts contain region instead of store. For example–`eu-docker` instead of `de-docker`. - -![rabbitmq-virtual-hosts-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-non-dms.png) - -![rabbitmq-virtual-hosts-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-dms.png) - -- Jenkins job names contain region instead of store. For example–`EU_queue-worker-start` instead of `DE_queue-worker-start`. - -![jenkins-jobs-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-non-dms.png) - -![jenkins-jobs-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-dms.png) - -- Elasticsearch indexes contain store as a part of the index name for Dynamic Multistore enabled and disabled modes. - -![elasticsearch-indexes-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-non-dms.png) - -![elasticsearch-indexes-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-dms.png) - -- Redis keys contain store as a part of the key name for Dynamic Multistore enabled and disabled modes. - -- When Dynamic Multistore is enabled, customers can switch between available stores for a region. When a customer changes a store, it's set to the `_store` query parameter. Using the query parameter, the store is added to session under the `current_store` key. It's used for fetching store-related data. - -![storefront-store-switcher](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/storefront-store-switcher.png) - -See more details [here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). +[Dynamic Multistore mode ON and OFF difference](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). ## Data import performance From c45ea8a17bd2c689ca2c1a5864ce4291b48659a4 Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Mon, 25 Nov 2024 16:43:55 +0100 Subject: [PATCH 044/199] ACP-4467: Added the SCOS guides for the express checkout flow in the payment feature. --- .../install-the-payments-glue-api.md | 95 +++- ...the-customer-account-management-feature.md | 2 + .../202410.0/install-the-payments-feature.md | 447 +++++++++++++++++- 3 files changed, 534 insertions(+), 10 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md index d78a841f6cb..e380fa4ae51 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md @@ -140,9 +140,10 @@ Make sure that the following changes have occurred: Activate the following plugin: -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --- | --- | --- | --- | -| PaymentMethodsByCheckoutDataResourceRelationshipPlugin | Adds payment-methods resource as relationship in case `RestCheckoutDataTransfer` is provided as payload. | None | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|--------------------------------------------------------|----------------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------| +| PaymentMethodsByCheckoutDataResourceRelationshipPlugin | Adds payment-methods resource as relationship in case `RestCheckoutDataTransfer` is provided as payload. | None | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | +| PaymentCustomersResourceRoutePlugin | Returns customer data that should be used on the store front address page. | None | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | **src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** @@ -173,12 +174,100 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency return $resourceRelationshipCollection; } + + /** + * {@inheritDoc} + * + * @return array<\Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface> + */ + protected function getResourceRoutePlugins(): array + { + return [ + new PaymentCustomersResourceRoutePlugin(), + ]; + } } ``` {% info_block warningBox "Verification" %} To verify `PaymentMethodsByCheckoutDataResourceRelationshipPlugin` is activated, send a POST request to `https://glue.mysprykershop.com/checkout-data?include=payment-methods` and make sure that `checkout-data` resource has a relationship to the `payment-methods` resources. +To verify `PaymentCustomersResourceRoutePlugin` is activated, send a POST request to `https://glue.mysprykershop.com/payment-customers` and make sure that you get a response with customer data. + +An example request for `https://glue.mysprykershop.com/payment-customers`: +The `customerPaymentServiceProviderData` field is a placeholder for the data that should be returned by the PSP widget. + +```json +{ + "data": { + "type": "payment-customers", + "attributes": { + "payment": { + "paymentMethodName": "dummyPayment", + "paymentProviderName": "dummyPaymentProvider" + }, + "customerPaymentServiceProviderData": "customerPaymentServiceProviderData" + } + } +} +``` + +Depending on the payment method, the response may vary. + +An example of the response: + +```json +{ + "data": { + "type": "payment-customers", + "id": "", + "attributes": { + "customer": { + "customerReference": "CUST-001", + "email": "customer@example.com", + "firstName": "John", + "lastName": "Doe", + "salutation": "Mr.", + "gender": "male", + "dateOfBirth": "1980-01-01", + "phone": "+1234567890", + "defaultBillingAddress": { + "salutation": "Mr.", + "firstName": "John", + "lastName": "Doe", + "address1": "123 Main St", + "address2": "Apt 4B", + "address3": "", + "zipCode": "12345", + "city": "Anytown", + "country": "USA", + "iso2Code": "US", + "company": "Example Corp", + "phone": "+1234567890", + "isDefaultShipping": false, + "isDefaultBilling": true + }, + "defaultShippingAddress": { + "salutation": "Mr.", + "firstName": "John", + "lastName": "Doe", + "address1": "123 Main St", + "address2": "Apt 4B", + "address3": "", + "zipCode": "12345", + "city": "Anytown", + "country": "USA", + "iso2Code": "US", + "company": "Example Corp", + "phone": "+1234567890", + "isDefaultShipping": true, + "isDefaultBilling": false + } + } + } + } +} +``` {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md index e1b215b51d2..9c75e31590d 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md @@ -1032,6 +1032,8 @@ customer.password.error.sequence,"You repeated the same character too many times customer.password.error.sequence,"Es wurde zu oft das gleiche Zeichen verwendet.",de_DE customer.password.error.character_set,"Password must contain at least 1 character of each allowed character group: upper case, lower case, digit, and a special character.",en_US customer.password.error.character_set,"Passwort muss mindestens 1 Zeichen von jeder erlaubten Zeichengruppe enthalten: Großschreibung, Kleinschreibung, Zahl und ein Sonderzeichen.",de_DE +customer.salutation.n/a,n/a,en_US +customer.salutation.n/a,n/a,de_DE ``` 2. Import data: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index f0fcc30656a..83623383f32 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -6,6 +6,7 @@ The following feature integration guide expects the basic feature to be in place * Payment Back Office UI; * Payment method per store; * Payment data import. +w* Payment App express checkout flow. {% endinfo_block %} @@ -24,19 +25,237 @@ To start the feature integration, overview and install the necessary features: Install the required modules using Composer: ```bash -composer require "spryker-feature/payments:{{page.version}}" "spryker/checkout-rest-api:^3.0.0" --update-with-dependencies +composer require "spryker-feature/payments:{{page.version}}" "spryker/checkout-rest-api:^3.0.0" "spryker/payment-cart-connector" --update-with-dependencies ``` + {% info_block warningBox "Verification" %} Make sure that the following modules have been installed: -| MODULE | EXPECTED DIRECTORY | -| --- | --- | -| PaymentDataImport | vendor/spryker/payment-data-import | -| PaymentGui | vendor/spryker/payment-gui | +| MODULE | EXPECTED DIRECTORY | +|---------------------------|--------------------------------------------------| +| PaymentDataImport | vendor/spryker/payment-data-import | +| PaymentGui | vendor/spryker/payment-gui | +| PaymentApp | vendor/spryker/payment-app | +| PaymentAppExtension | vendor/spryker/payment-app-extension | +| PaymentAppShipment | vendor/spryker/payment-app-shipment | +| PaymentAppWidget | vendor/spryker-shop/payment-app-widget | +| PaymentAppWidgetExtension | vendor/spryker-shop/payment-app-widget-extension | +| PaymentCartConnector | vendor/spryker/payment-cart-connector | + +{% endinfo_block %} + +### 2) Set up configuration + +1. Add the following configuration to your project: + +2. Configure the checkout payment step to hide the express checkout payment methods. +Depending on your project needs, you can exclude the payment methods that you do not want to show on the checkout payment step. +In case you are using the `Payone` app, you can exclude the `payone-paypal-express` payment method. + +**src/Pyz/Yves/CheckoutPage/CheckoutPageConfig.php** + +```php + + */ + public function getExcludedPaymentMethodKeys(): array + { + return [ + 'payone-paypal-express', + ]; + } +} +``` + +Cart reload, remove item, and update quantity are the default cart operations. +Define the payment methods that you want to exclude from the cart operations. +In the example below, the `PayPal Express` payment method name that is excluded from the cart operations. + +**src/Pyz/Zed/PaymentCartConnector/PaymentCartConnectorConfig.php** + +```php + + */ + protected const EXCLUDED_PAYMENT_METHODS = [ + 'PayPal Express', + ]; +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The payment methods you have excluded are not shown on the checkout payment step page: + * Add several products to the cart and proceed to the checkout. + * Check that the excluded payment methods are not shown on the checkout payment step page. + +{% endinfo_block %} + +3. Configure the checkout steps to hide during the express checkout flow. +The express checkout flow is a simplified checkout flow that skips some of the checkout steps. +Depending on your project needs, you can configure the checkout steps to be skipped during the express checkout flow. + +**src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** + +```php + + */ + protected const CHECKOUT_STEPS_TO_SKIP_IN_EXPRESS_CHECKOUT_WORKFLOW = [ + 'address', + 'shipment', + 'payment', + ]; +} +``` +{% info_block warningBox "Verification" %} + +Make sure that: +* The express checkout flow skips the checkout steps you have configured: + * Add several products to the cart and proceed to the express checkout flow. + * Use the express checkout widget to place an order shown on the cart page. + * After the confirmation, you will be redirected to the order confirmation page. + * Check that the express checkout flow skips the checkout steps you have configured. + +{% endinfo_block %} + +4. Configure the quote fields to be cleaned during the express checkout flow. +When customers return to the cart page during the express checkout flow, certain quote fields are cleared to allow them to restart the checkout process from the beginning. + +**src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** + +```php + + */ + protected const QUOTE_FIELDS_TO_CLEAN_IN_EXPRESS_CHECKOUT_WORKFLOW = [ + QuoteTransfer::PAYMENT, + QuoteTransfer::PAYMENTS, + QuoteTransfer::SHIPMENT, + QuoteTransfer::BILLING_ADDRESS, + QuoteTransfer::SHIPPING_ADDRESS, + QuoteTransfer::PRE_ORDER_PAYMENT_DATA, + ]; +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The quote fields you have configured are cleared when customers return to the cart page during the express checkout flow: + * Add several products to the cart and proceed to the express checkout flow. + * Use the express checkout widget to place an order shown on the cart page. + * After the confirmation, you will be redirected to the order confirmation page. + * Return to the cart page and check that the quote fields you have configured are cleared. + +{% endinfo_block %} + +5. Configure the shipment method for the express checkout payment request. +In the example below, the `spryker_dummy_shipment-standard` shipment method is configured for the `payone-paypal-express` payment method. +The key is the payment method key, and the value is the shipment method key. + +**src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** + +```php + + */ + protected const EXPRESS_CHECKOUT_SHIPMENT_METHODS_INDEXED_BY_PAYMENT_METHOD = [ + 'payone-paypal-express' => 'spryker_dummy_shipment-standard', + ]; +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The shipment method you have configured is used for the express checkout payment request: + * Add several products to the cart and proceed to the express checkout flow. + * Use the express checkout widget to place an order shown on the cart page. + * After the confirmation, you will be redirected to the order confirmation page. + * Check that the shipment method you have configured is used for the express checkout payment request. + +{% endinfo_block %} + +6. Enable the express checkout shipment for the product bundles. + +**src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** + +```php + + */ + protected const SHIPMENT_ITEM_COLLECTION_FIELD_NAMES = [ + QuoteTransfer::BUNDLE_ITEMS, + ]; +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The express checkout shipment is enabled for the product bundle: + * Add a product bundle to the cart and proceed to the express checkout flow. + * Place an order using the express checkout flow. + * The order is placed successfully. {% endinfo_block %} + ### 2) Set up database schema and transfer objects Apply database changes and generate entity and transfer changes: @@ -198,7 +417,27 @@ Make sure that the configured data has been added to the `spy_payment_method`, ` {% endinfo_block %} -### 4) Set up behavior + +### 4) Add translations + +1. Append glossary according to your configuration: + +```csv +payment_app_widget.validation.quote_is_empty, Quote is empty.,en_US +payment_app_widget.validation.quote_is_empty, Angebot ist leer.,de_DE +payment_app_widget.error.payment_failed,Payment failed,en_US +payment_app_widget.error.payment_failed,Zahlung fehlgeschlagen,de_DE +payment_app_widget.error.incorrect_quote,"Quote not found, session may have expired",en_US +payment_app_widget.error.incorrect_quote,"Angebot nicht gefunden, Sitzung ist möglicherweise abgelaufen",de_DE +``` + +2. Import data: + +```bash +console data:import glossary +``` + +### 5) Set up behavior Configure the data import to use your data on the project level. **src/Pyz/Zed/PaymentDataImport/PaymentDataImportConfig** @@ -270,7 +509,201 @@ Make sure that: {% endinfo_block %} -### 5) Additional cleanups: +Enable the payment app express checkout flow in the Yves step engine. + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|---------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------| +| PaymentAppExpressCheckoutWorkflowCheckoutStepResolverStrategyPlugin | Returns checkout steps suitable to express checkout workflow and cleans quote fields based on the configuration. | None | SprykerShop\Yves\PaymentAppWidget\Plugin\CheckoutPage | + +**src/Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php** + +```php + + */ + protected function getCheckoutStepResolverStrategyPlugins(): array + { + return [ + new PaymentAppExpressCheckoutWorkflowCheckoutStepResolverStrategyPlugin(), + ]; + } + +} +``` + +Enable the default shipment method for the payment app express checkout flow. + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------------------------------|-----------------------------------------------------------------------|---------------|-----------------------------------------------------| +| ShipmentExpressCheckoutPaymentRequestProcessorPlugin | Provides the shipment method for the express checkout payment request.| None | Spryker\Zed\PaymentAppShipment\Communication\Plugin | + +**src/Pyz/Zed/PaymentApp/PaymentAppDependencyProvider.php** + +```php + + */ + protected function getExpressCheckoutPaymentRequestProcessorPlugins(): array + { + return [ + new ShipmentExpressCheckoutPaymentRequestProcessorPlugin(), + ]; + } +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* Enabled the express checkout payment method for the payment app. + * Depends on the payment app enabled in the project. + * Not all payment methods support the express checkout flow. +* You can see the express checkout button on the cart page. +* Proceed to the express checkout flow by clicking the express checkout button. +* Place an order using the express checkout flow. + +{% endinfo_block %} + +Register the following route provider plugins: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|-------------------------------------|------------------------------------------------------|---------------|-------------------------------------------------| +| PaymentAppWidgetRouteProviderPlugin | Adds the payment app routes to the Yves application. | | SprykerShop\Yves\PaymentAppWidget\Plugin\Router | + +**src/Pyz/Yves/Router/RouterDependencyProvider.php** + +```php + + */ + protected function getRouteProvider(): array + { + return [ + new PaymentAppWidgetRouteProviderPlugin(), + ]; + } +} +``` + +Enable the payment method clean up for the cart operations. + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------------------|----------------------------------------------------------------------------|---------------|------------------------------------------------------------| +| RemoveQuotePaymentCartItemExpanderPlugin | Removes the payment information from the quote when cart changes are made. | None | Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart | + +**src/Pyz/Zed/Cart/CartDependencyProvider.php** + +```php + + */ + protected function getExpanderPlugins(Container $container): array + { + return [ + new RemoveQuotePaymentCartItemExpanderPlugin(), + ]; + } +} +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The payment method is removed from the quote when cart changes are made: + * Add a product to the cart and proceed to the checkout with express checkout. + * Navigate back to the cart page to adjust product quantities, add new products, or remove existing ones. + * Check that the payment method is removed from the cart. + +{% endinfo_block %} + +### 6) Additional cleanups: The `SalesPaymentMethodTypeInstallerPlugin` plugin was removed, please use the `PaymentDataImport module` instead. The `PaymentConfig::getSalesPaymentMethodTypes()` config method was removed, please use the `PaymentDataImport` module instead. + +### 7) Set up widgets + +Set up widgets as follows: + +1. Register the following plugins to enable widgets: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------|-------------------------------------------------------------------|---------------|------------------------------------------| +| ExpressCheckoutPaymentWidget | Displays the express checkout payment methods available for cart. | | SprykerShop\Yves\PaymentAppWidget\Widget | + +**src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** + +```php + + */ + protected function getGlobalWidgets(): array + { + return [ + ExpressCheckoutPaymentWidget::class, + ]; + } +} +``` + +2. Enable Javascript and CSS changes: + +```bash +console frontend:yves:build +``` +{% info_block warningBox "Verification" %} + +Verify that the following widgets have been registered by adding the respective code snippets to a Twig template: + +| WIDGET | VERIFICATION | +|------------------------------|-------------------------------------------------------------------------------------| +| ExpressCheckoutPaymentWidget | Make sure that the express checkout payment methods are displayed on the cart page. | + +{% endinfo_block %} From 5e699cdd8b8c318246c252e4c122454d13654caa Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Tue, 26 Nov 2024 16:06:58 +0100 Subject: [PATCH 045/199] ACP-4467: Added the SCOS guides for the express checkout flow in the payment feature. --- .../202410.0/install-the-payments-feature.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 83623383f32..a8b90d3a440 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -542,9 +542,9 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr Enable the default shipment method for the payment app express checkout flow. -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -|------------------------------------------------------|-----------------------------------------------------------------------|---------------|-----------------------------------------------------| -| ShipmentExpressCheckoutPaymentRequestProcessorPlugin | Provides the shipment method for the express checkout payment request.| None | Spryker\Zed\PaymentAppShipment\Communication\Plugin | +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------------------------------|-----------------------------------------------------------------------|---------------|----------------------------------------------------------------| +| ShipmentExpressCheckoutPaymentRequestProcessorPlugin | Provides the shipment method for the express checkout payment request.| None | Spryker\Zed\PaymentAppShipment\Communication\Plugin\PaymentApp | **src/Pyz/Zed/PaymentApp/PaymentAppDependencyProvider.php** @@ -554,7 +554,7 @@ Enable the default shipment method for the payment app express checkout flow. namespace Pyz\Zed\PaymentApp; use Spryker\Zed\PaymentApp\PaymentAppDependencyProvider as SprykerPaymentAppDependencyProvider; -use Spryker\Zed\PaymentAppShipment\Communication\Plugin\ShipmentExpressCheckoutPaymentRequestProcessorPlugin; +use Spryker\Zed\PaymentAppShipment\Communication\Plugin\PaymentApp\ShipmentExpressCheckoutPaymentRequestProcessorPlugin; class PaymentAppDependencyProvider extends SprykerPaymentAppDependencyProvider { From 28d14408bf98b9dd453c9c30ee0915d35a865823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 27 Nov 2024 08:38:44 +0100 Subject: [PATCH 046/199] ACP-4047 Added documentation of how to change default provided return URLs --- .../base-shop/change-default-return-urls.md | 22 +++++++++++++++++++ .../stripe/project-guidelines-for-stripe.md | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md new file mode 100644 index 00000000000..1da41a8e568 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md @@ -0,0 +1,22 @@ +--- +title: Change the default return URLs for payments +description: Learn how to change the default return URLs to be used by third-party payment service providers +last_updated: Nov. 27, 2024 +template: howto-guide-template +--- + +Payment methods are configured to redirect the customer to a specific URL after the payment process is completed, has failed, or was cancelled. This document provides information on how to change the default return URL's for payments. + +## Change the default return URL's + +Some 3rd party integrations only use a return URL while others can also use a failure and/or cancel URL. The ForeignPayment class is responsible to send the expected return URLs to the Payment App which are then used if applicable. + +To change the default return URL's, you can use the following methods: + +- `\Spryker\Zed\Payment\PaymentConfig::getSuccessRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCancelRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` + + + + diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md index c06a8a25ea2..b523eec3427 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md @@ -29,4 +29,5 @@ Each section is designed to help you maximize the potential of Stripe in your pr * [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) * [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) +* [Change OOTB provided return URL's](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/change-default-return-urls.html) \ No newline at end of file From 2ef22dd8255a0cba379a3215a30e4538b7c5b2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 27 Nov 2024 08:41:47 +0100 Subject: [PATCH 047/199] ACP-4047 Self review fixes. --- .../202404.0/base-shop/change-default-return-urls.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md index 1da41a8e568..f47029bc87f 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md @@ -5,18 +5,14 @@ last_updated: Nov. 27, 2024 template: howto-guide-template --- -Payment methods are configured to redirect the customer to a specific URL after the payment process is completed, has failed, or was cancelled. This document provides information on how to change the default return URL's for payments. +Payment methods are configured to redirect the customer to a specific URL after the payment process is completed, has failed, or was cancelled. This document provides information on how to change the default return URLs for payments. -## Change the default return URL's +## Change the default return URLs Some 3rd party integrations only use a return URL while others can also use a failure and/or cancel URL. The ForeignPayment class is responsible to send the expected return URLs to the Payment App which are then used if applicable. -To change the default return URL's, you can use the following methods: +To change the default return URLs, you can use the following methods: - `\Spryker\Zed\Payment\PaymentConfig::getSuccessRoute()` - `\Spryker\Zed\Payment\PaymentConfig::getCancelRoute()` - `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` - - - - From 31e2428db40d23d7c8f03f9ae348c47d0cf417f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 27 Nov 2024 08:38:44 +0100 Subject: [PATCH 048/199] ACP-4047 Added documentation of how to change default provided return URLs --- .../base-shop/change-default-return-urls.md | 22 +++++++++++++++++++ .../stripe/project-guidelines-for-stripe.md | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md new file mode 100644 index 00000000000..60ab576fd97 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md @@ -0,0 +1,22 @@ +--- +title: Change the default return URLs for payments +description: Learn how to change the default return URLs to be used by third-party payment service providers +last_updated: Nov. 27, 2024 +template: howto-guide-template +--- + +Payment methods are configured to redirect the customer to a specific URL after the payment process is completed, has failed, or was cancelled. This document provides information on how to change the default return URLs for payments. + +## Change the default return URLs + +Some 3rd party integrations only use a return URL while others can also use a failure and/or cancel URL. The ForeignPayment class is responsible to send the expected return URLs to the Payment App which are then used if applicable. + +To change the default return URLs, you can use the following methods: + +- `\Spryker\Zed\Payment\PaymentConfig::getSuccessRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCancelRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` + + + + diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md index c06a8a25ea2..b523eec3427 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md @@ -29,4 +29,5 @@ Each section is designed to help you maximize the potential of Stripe in your pr * [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) * [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) +* [Change OOTB provided return URL's](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/change-default-return-urls.html) \ No newline at end of file From 39681e3becc7850f08d34f5952130098538ffa41 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 27 Nov 2024 11:26:17 +0200 Subject: [PATCH 049/199] Update enable-dynamic-multistore.md --- .../202410.0/enable-dynamic-multistore.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md index 5e575cc5828..337ae66598a 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -13,15 +13,20 @@ If your project version is below 202307.0, you need to update to the latest code {% endinfo_block %} -1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. +1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. 2. Make sure that you custom console commands (and the places where they are executed) updated to the new format, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Deployment file difference). + 3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region for all the applications(Example https://yves.de.mysprykershop.com => https://yves.eu.mysprykershop.com), make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. + 4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. -5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: + +5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) + 5. Update AWS deployment files to Dynamic Multistore mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). + 6. Run normal deploy for your server pipeline. @@ -33,7 +38,7 @@ If your project version is below 202307.0, you need to update to the latest code Congratulations! Now you have Dynamic Multistore feature up and running. {% endinfo_block %} -## Rollback +## Rollback ### Rollback procedure is opposite, and contains the following steps: @@ -53,4 +58,4 @@ Make sure that **all** steps above are performed (and fully tested) on staging b {% info_block warningBox "Verification" %} - Make sure your store is accessible at `https://yves.de.mysprykershop.com` or `https://backoffice.de.mysprykershop.com`. - Make sure the store switcher is **not** displayed on the Storefront. -{% endinfo_block %} \ No newline at end of file +{% endinfo_block %} From 5996520d8e20e55de6297cb94510b93d8dff5210 Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Wed, 27 Nov 2024 12:24:00 +0100 Subject: [PATCH 050/199] ACP-4467: Extended the FE part. --- .../202410.0/install-the-payments-feature.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index a8b90d3a440..115c619993b 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -707,3 +707,23 @@ Verify that the following widgets have been registered by adding the respective | ExpressCheckoutPaymentWidget | Make sure that the express checkout payment methods are displayed on the cart page. | {% endinfo_block %} + +3. Customize the address solution according to your needs. +When the express checkout flow is enabled, the customer address does not always include the salutation field. +For this purpose, the 'n/a' placeholder is used. By default, it is not shown. + +**ShopUi/Theme/default/components/molecules/display-address/display-address.twig** + +```twig +
  • + {{ (('customer.salutation.' ~ data.address.salutation | lower) | trans) == 'n/a' ? '' : (('customer.salutation.' ~ data.address.salutation | lower) | trans) }} + {{ data.address.firstName }} {{ data.address.lastName }} +
  • +``` + +{% info_block warningBox "Verification" %} + +Make sure that: +* The address salutation is displayed correctly on the summary page. + +{% endinfo_block %} From 2f614a02c047db8f224d281e74cbc67666ebc75d Mon Sep 17 00:00:00 2001 From: vol4onok Date: Wed, 27 Nov 2024 18:24:43 +0200 Subject: [PATCH 051/199] ACP-4520: updated integration --- .../algolia/algolia-personalization.md | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index eafe80f6eb8..60f554871f4 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -29,21 +29,44 @@ and your Algolia search indexes have products. ## Update Spryker Shop +### Update Spryker packages + +```bash +composer update --with-dependencies spryker/kernel-app spryker/search-http spryker/customer \ +spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/home-page spryker-shop/payment-page \ +spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-review-widget \ +spryker-shop/product-set-detail-page spryker-shop/quick-order-page spryker-shop/shop-ui +``` + ### Install new Spryker packages ```bash composer install spryker-shop/traceable-event-widget ``` -### Update Spryker packages + +### Minimum package versions ```bash -composer update --with-dependencies spryker/search-http spryker/customer \ -spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/home-page spryker-shop/payment-page \ -spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-review-widget \ -spryker-shop/product-set-detail-page spryker-shop/quick-order-page spryker-shop/shop-ui +spryker/kernel-app: ^1.2.0 +spryker/search-http: ^0.5.0 +spryker/customer: ^7.61.0 +spryker-shop/cart-page: ^3.45.0 +spryker-shop/catalog-page: ^1.28.0 +spryker-shop/checkout-page: ^3.32.1 +spryker-shop/home-page: ^1.2.0 +spryker-shop/payment-page: ^1.5.0 +spryker-shop/product-detail-page: ^3.22.1 +spryker-shop/product-group-widget: ^1.10.1 +spryker-shop/product-review-widget: ^1.16.1 +spryker-shop/product-set-detail-page: ^1.11.0 +spryker-shop/quick-order-page: ^4.10.0 +spryker-shop/shop-ui: ^1.79.0 +spryker-shop/traceable-event-widget: ^1.0.1 ``` + + if the command does now work, try it with `--with-all-dependencies` flag instead. ### Enabled new features From 7f8202e7a4dd56bd19c7dc5d22814a0eca2743f3 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:31:50 +0200 Subject: [PATCH 052/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 60f554871f4..145491c9138 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -8,7 +8,7 @@ template: howto-guide-template {% info_block infoBox "Info" %} Default Spryker installation supports Algolia personalization only for YVES frontend. -If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). +If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). This feature also enables other Algolia premium features: @@ -22,9 +22,9 @@ This feature also enables other Algolia premium features: ## Prerequisites -Your shop already has [integrated](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) +Your shop already has [integrated](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) and [configured](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/configure-algolia.html) ACP Algolia App -and your Algolia search indexes have products. +and your Algolia search indexes have products. ## Update Spryker Shop @@ -67,7 +67,7 @@ spryker-shop/traceable-event-widget: ^1.0.1 -if the command does now work, try it with `--with-all-dependencies` flag instead. +if the command does now work, try it with `--with-all-dependencies` flag instead. ### Enabled new features 1. Update project config: @@ -79,7 +79,7 @@ $config[KernelAppConstants::TENANT_IDENTIFIER] = getenv('SPRYKER_TENANT_IDENTIFIER') ?: ''; ``` -2. Enable new widget, that will trigger events for user actions and send them to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/): +2. Enable new widget, that will trigger events for user actions and send them to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/): ```php // src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php @@ -113,7 +113,7 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency 4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. - + Check that required dependency is installed `npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. @@ -136,7 +136,7 @@ Monitor the browser's console and execute following cases: * Open Home page * (if home page has products) Click on a product - `PRODUCT_CLICK` * (if home page has the add to cart button) Click on a product add to cart button - `ADD_TO_CART` -* Open any product detail page (PDP), you should see events for the actions: +* Open any product detail page (PDP), you should see events for the actions: * `PAGE_LOAD` with sku of viewed product. * `ADD_TO_CART` with product SKU, currency, price and quantity, when user clicks Add to cart. * `ADD_TO_SHOPPING_LIST` with product SKU when user clicks Add to shopping list. @@ -166,7 +166,7 @@ To view a full list of available events, refer to the `traceable-events-algolia` If you need to add, modify, or fix events at the project level, start with these two steps: - Locate the page template or view that is used for the current page. -- Override the `{% block eventTracker %}` block in your project’s template at the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level). +- Override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template at the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level). For comprehensive details about the **event configuration API**, visit the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). @@ -179,7 +179,7 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig -{% block eventTracker %} +{% raw %}{% block eventTracker %}{% endraw %} {% set events = { list: events.list | merge([ { @@ -192,7 +192,7 @@ Spryker provides default configurations for built-in components. For new or modi } %} {{ parent() }} -{% endblock %} +{% raw %}{% endblock %}{% endraw %} ``` Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. @@ -328,7 +328,7 @@ You should update the website agreement text and ask for user consent to have th Something similar to > **User Data analytics** -> +> > To enhance your experience, we use data and analytics to understand how you interact with our site. > By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. @@ -351,10 +351,10 @@ This action will update your Spryker shop config to be able to send events to Al ### Configure Algolia Features -When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. +When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. Then you can start configuration of Personalization, Dynamic Re-Ranking and Query Categorization features (find Algolia docs and guides on their website). -**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) +**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) with new personalized configuration of your search ("A/B Testing" page in Algolia Dashboard). It will allow you to see how new features influence your search conversion rate only for some limit audience of your site. When the results are good, -you can change the settings globally in the indexes configuration, so it will work for all users. +you can change the settings globally in the indexes configuration, so it will work for all users. From 3b1c4f11fc62a44aecbcd8645fe00c9496b7f551 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:33:58 +0200 Subject: [PATCH 053/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 145491c9138..79fbadb6288 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -179,7 +179,7 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig -{% raw %}{% block eventTracker %}{% endraw %} +{% raw %}{% block eventTracker %} {% set events = { list: events.list | merge([ { @@ -192,7 +192,7 @@ Spryker provides default configurations for built-in components. For new or modi } %} {{ parent() }} -{% raw %}{% endblock %}{% endraw %} +{% endblock %}{% endraw %} ``` Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. From 4dc857d566993c9b405aa4882b9365f31a0883e3 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:35:22 +0200 Subject: [PATCH 054/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 79fbadb6288..08758224044 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -179,8 +179,8 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig -{% raw %}{% block eventTracker %} - {% set events = { +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -192,7 +192,7 @@ Spryker provides default configurations for built-in components. For new or modi } %} {{ parent() }} -{% endblock %}{% endraw %} +{% raw %}{% endblock %}{% endraw %} ``` Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. From 38eca5f42457694d68a87294ca47f12b39b589e6 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:39:03 +0200 Subject: [PATCH 055/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 08758224044..665059dc6fe 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -202,8 +202,8 @@ Refer to the [API documentation](https://github.com/spryker-shop/traceable-event Spryker includes default CSS selectors. If selectors have changed, update the configuration accordingly. ```twig -{% block eventTracker %} - {% set events = { +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -220,7 +220,7 @@ Spryker includes default CSS selectors. If selectors have changed, update the co } %} {{ parent() }} -{% endblock %} +{% raw %}{% endblock %}{% endraw %} ``` @@ -233,8 +233,8 @@ You can view the event payload in the console under `Adapter Data:`. If the payl Adjust static data in the `eventTracker` block as needed: ```twig -{% block eventTracker %} - {% set events = { +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list, data: events.data | merge({ existing_key_to_override: New Data, @@ -243,7 +243,7 @@ Adjust static data in the `eventTracker` block as needed: } %} {{ parent() }} -{% endblock %} +{% raw %}{% endblock %}{% endraw %} ``` 2. Dynamic Data @@ -251,7 +251,7 @@ Adjust static data in the `eventTracker` block as needed: For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. ```twig -{% set events = { +{% raw %}{% set events = {{% endraw %} list: events.list | merge([{ event: 'EVENT_EXAMPLE', name: 'click', From 7fe84563372c852643688b03dfc3a277f49a6ce2 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:42:59 +0200 Subject: [PATCH 056/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 665059dc6fe..91fc9226f34 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -179,8 +179,8 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig -{% raw %}{% block eventTracker %}{% endraw %} - {% raw %}{% set events = {{% endraw %} +{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} + {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -192,7 +192,7 @@ Spryker provides default configurations for built-in components. For new or modi } %} {{ parent() }} -{% raw %}{% endblock %}{% endraw %} +{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} ``` Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. @@ -202,8 +202,8 @@ Refer to the [API documentation](https://github.com/spryker-shop/traceable-event Spryker includes default CSS selectors. If selectors have changed, update the configuration accordingly. ```twig -{% raw %}{% block eventTracker %}{% endraw %} - {% raw %}{% set events = {{% endraw %} +{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} + {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -220,7 +220,7 @@ Spryker includes default CSS selectors. If selectors have changed, update the co } %} {{ parent() }} -{% raw %}{% endblock %}{% endraw %} +{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} ``` @@ -233,8 +233,8 @@ You can view the event payload in the console under `Adapter Data:`. If the payl Adjust static data in the `eventTracker` block as needed: ```twig -{% raw %}{% block eventTracker %}{% endraw %} - {% raw %}{% set events = {{% endraw %} +{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} + {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} list: events.list, data: events.data | merge({ existing_key_to_override: New Data, @@ -243,7 +243,7 @@ Adjust static data in the `eventTracker` block as needed: } %} {{ parent() }} -{% raw %}{% endblock %}{% endraw %} +{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} ``` 2. Dynamic Data @@ -251,7 +251,7 @@ Adjust static data in the `eventTracker` block as needed: For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. ```twig -{% raw %}{% set events = {{% endraw %} +{% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} list: events.list | merge([{ event: 'EVENT_EXAMPLE', name: 'click', From 6162a8b41d88a91807069096d548622c06e3297a Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 11:45:07 +0200 Subject: [PATCH 057/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 91fc9226f34..96b84132914 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -179,8 +179,8 @@ If an event is not firing, verify that the desired action (e.g., 'click', 'chang Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. ```twig -{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} - {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -192,7 +192,7 @@ Spryker provides default configurations for built-in components. For new or modi } %} {{ parent() }} -{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} +{% raw %}{% endblock %}{% endraw %} ``` Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. @@ -202,8 +202,8 @@ Refer to the [API documentation](https://github.com/spryker-shop/traceable-event Spryker includes default CSS selectors. If selectors have changed, update the configuration accordingly. ```twig -{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} - {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list | merge([ { event: 'NEEDED_EVENT_NAME', // e.g., PRODUCT_CLICK @@ -220,7 +220,7 @@ Spryker includes default CSS selectors. If selectors have changed, update the co } %} {{ parent() }} -{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} +{% raw %}{% endblock %}{% endraw %} ``` @@ -233,8 +233,8 @@ You can view the event payload in the console under `Adapter Data:`. If the payl Adjust static data in the `eventTracker` block as needed: ```twig -{% raw %}{% endraw %}{% block eventTracker %}{% raw %}{% endraw %} - {% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} +{% raw %}{% block eventTracker %}{% endraw %} + {% raw %}{% set events = {{% endraw %} list: events.list, data: events.data | merge({ existing_key_to_override: New Data, @@ -243,7 +243,7 @@ Adjust static data in the `eventTracker` block as needed: } %} {{ parent() }} -{% raw %}{% endraw %}{% endblock %}{% raw %}{% endraw %} +{% raw %}{% endblock %}{% endraw %} ``` 2. Dynamic Data @@ -251,7 +251,7 @@ Adjust static data in the `eventTracker` block as needed: For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. ```twig -{% raw %}{% endraw %}{% set events = {{% raw %}{% endraw %} +{% raw %}{% set events = {{% endraw %} list: events.list | merge([{ event: 'EVENT_EXAMPLE', name: 'click', @@ -337,7 +337,7 @@ Something similar to 1. Deploy to testing environment. 2. Make sure that Algolia is connected and configured in the Backoffice > Apps. -{% warning_block warningBox "Make sure" %} +{% info_block warningBox "Make sure" %} If you previously had ACP Algolia App connected and used, you will need to disconnect and connect it again with the same Algolia credentials in the ACP App Catalog. This action will update your Spryker shop config to be able to send events to Algolia. From 5987a37fbc1c50f9acaae686fef29dc1d626310a Mon Sep 17 00:00:00 2001 From: dimitriyTsemma Date: Thu, 28 Nov 2024 15:47:46 +0200 Subject: [PATCH 058/199] FRW-7936 Updated documentation --- .../202410.0/install-dynamic-multistore.md | 76 ++++++++++++++++++- .../202410.0/dynamic-multistore.md | 6 -- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index 3a912d4a152..587b082350a 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1500,11 +1500,21 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency ### 5) Set up behavior +{% info_block warningBox "Verification" %} + +If you are working with pre-generated internal URLs in Twig templates, you must now wrap them using the new Twig function `generatePath()`. +This ensures the URLs include the necessary context (store name) based on the current request. + +{% endinfo_block %} + Enable the following behaviors by registering the plugins: -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --- | --- | --- | --- | -|StoreApplicationPlugin| Provides store data to the application.||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +| --- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | +|StoreApplicationPlugin| Provides store data to the application. ||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| +|StorePrefixRouterEnhancerPlugin| Extracts the current store name from an incoming URL, for adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \Spryker\Yves\Router\RouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| +|LanguagePrefixRouterEnhancerPlugin| Extracts the current language name from an incoming URL, to add the current language to the Route parameters, and to prefix the generated URLs with the current language. Through the \Spryker\Yves\Router\RouterConfig::getAllowedLanguages() configuration, you tell this plugin what languages it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| +|StorePrefixStorageRouterEnhancerPlugin| Extracts the current store name from an incoming URL, for adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \SprykerShop\Yves\StorageRouter\StorageRouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||SprykerShop\Yves\StorageRouter\Plugin\RouterEnhancer| **src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** @@ -1526,7 +1536,65 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency return [ new StoreApplicationPlugin(), ]; - } + } +} +``` + +{% info_block warningBox "Verification" %} + +In the RouterDependencyProvider::getRouterEnhancerPlugins() stack, the order of plugin execution has changed: +• The `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin`. +• Ensure that your plugin stack reflects this updated order to maintain the correct routing behavior. + +{% endinfo_block %} + +**src/Pyz/Yves/Router/RouterDependencyProvider.php** + +```php + + */ + protected function getRouterEnhancerPlugins(): array + { + return [ + new StorePrefixRouterEnhancerPlugin(), + new LanguagePrefixRouterEnhancerPlugin(), + ]; + } +} +``` + +**src/Pyz/Yves/StorageRouter/StorageRouterDependencyProvider.php** + +```php + + */ + protected function getStorageRouterEnhancerPlugins(): array + { + return [ + new StorePrefixStorageRouterEnhancerPlugin(), + ]; + } } ``` diff --git a/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.md b/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.md index fae725dc074..c0c00c356ab 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.md @@ -5,12 +5,6 @@ last_updated: July 31, 2023 template: concept-topic-template --- -{% info_block warningBox %} - -Dynamic Multistore is currently running under an *Early Access Release*. Early Access Releases are subject to specific legal terms, they are unsupported and do not provide production-ready SLAs. They can also be deprecated without a General Availability Release. Nevertheless, we welcome feedback from early adopters on these cutting-edge, exploratory features. - -{% endinfo_block %} - The *Dynamic Multistore* is an innovative feature that enables business users to effortlessly create and manage multiple online stores from the Back Office. This feature aims to streamline the process of setting up and maintaining distinct online stores, each catering to different customer segments, regions, or product categories. Key benefits: From 1b3cafd4a09a56d6f01a67ebce224ee3c5359b41 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 28 Nov 2024 15:53:53 +0200 Subject: [PATCH 059/199] tw-reivew --- ...personalization-for-headless-frontends.md} | 0 .../algolia/algolia-personalization.md | 39 +++++++++++++------ 2 files changed, 27 insertions(+), 12 deletions(-) rename docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/{algolia-personalization-headless.md => algolia-personalization-for-headless-frontends.md} (100%) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md similarity index 100% rename from docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-headless.md rename to docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 96b84132914..d886f90c432 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -1,5 +1,5 @@ --- -title: Algolia Personalization +title: Integrate Algolia Personalization description: Find out how you can enable Algolia personalization in your Spryker shop last_updated: Nov 24, 2024 template: howto-guide-template @@ -22,14 +22,14 @@ This feature also enables other Algolia premium features: ## Prerequisites -Your shop already has [integrated](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) -and [configured](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/configure-algolia.html) ACP Algolia App -and your Algolia search indexes have products. +1. [Integrate Algolia](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/integrate-algolia.html) +2. [Configure Algolia](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/configure-algolia.html) +3. Add products to your Algolia search indexes ## Update Spryker Shop -### Update Spryker packages +1. Update Spryker packages: ```bash composer update --with-dependencies spryker/kernel-app spryker/search-http spryker/customer \ @@ -38,7 +38,7 @@ spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/ spryker-shop/product-set-detail-page spryker-shop/quick-order-page spryker-shop/shop-ui ``` -### Install new Spryker packages +2. Install new Spryker packages: ```bash composer install spryker-shop/traceable-event-widget @@ -69,7 +69,8 @@ spryker-shop/traceable-event-widget: ^1.0.1 if the command does now work, try it with `--with-all-dependencies` flag instead. -### Enabled new features +### Enable new features + 1. Update project config: ```php // config_default.php @@ -79,7 +80,7 @@ $config[KernelAppConstants::TENANT_IDENTIFIER] = getenv('SPRYKER_TENANT_IDENTIFIER') ?: ''; ``` -2. Enable new widget, that will trigger events for user actions and send them to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/): +2. Enable a widget that triggers events for user actions and sends them to [Algolia Insights](https://www.algolia.com/doc/guides/sending-events/getting-started/): ```php // src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php @@ -95,7 +96,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` -3. Enabled the plugin that will generate an anonymous token for guest users in the session: +3. Enabled the plugin that generates an anonymous token for guest users in the session: ```php // src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php @@ -111,10 +112,24 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency } ``` -4. Build the JavaScript assets for Yves `npm ci && npm run yves` or `console frontend:project:install-dependencies && console frontend:yves:build`. - Usually, it's executed automatically during the Spryker Cloud deployment pipeline. But it's better to check this command on the local development environment first. +4. Build JavaScript assets for Yves using one of the following commands: +```bash +npm ci && npm run yves +``` + +```bash +console frontend:project:install-dependencies && console frontend:yves:build +``` - Check that required dependency is installed `npm list search-insights` if you have `└── (empty)` result it means that you have to install `search-insights` manually `npm i search-insights`. +5. Check that required dependency is installed: +```bash +npm list search-insights +``` + +6. If the previous command returned `└── (empty)`, install `search-insights` manually: +```bash +npm i search-insights`. +``` ### Check your Yves's compatibility with new functionality From 7b0928979f93a9ed3c1fb3d2163fc66fea3a4840 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 28 Nov 2024 16:19:42 +0200 Subject: [PATCH 060/199] fixed wrong indents in hosted-payment-page.md --- .../hosted-payment-page.md | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md index a83cddf1a15..dcda6f4862a 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md @@ -21,7 +21,6 @@ If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project ```twig {% raw %} - {% for name, choices in data.form.paymentSelection.vars.choices %} ... {% embed molecule('form') with { @@ -37,26 +36,26 @@ If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project 2. If you want to change the default payment provider or method names, do the following: 1. Make sure the names are translated in your payment step template: -```twig -{% raw %} -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... -
    {{ name | trans }}
    -{% endfor %} -{% endraw %} -``` + ```twig + {% raw %} + {% for name, choices in data.form.paymentSelection.vars.choices %} + ... +
    {{ name | trans }}
    + {% endfor %} + {% endraw %} + ``` - 2. Add translations to your glossary data import file: + 2. Add translations to your glossary data import file: + + ``` + Stripe,Pay Online with Stripe,en_US + ``` -```csv -... -Stripe,Pay Online with Stripe,en_US -``` 3. Run the data import command for the glossary: -```bash -console data:import glossary -``` + ```bash + console data:import glossary + ``` ### Further reading @@ -65,4 +64,4 @@ console data:import glossary * [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) * [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) From e8ce34d5da576b5949e5aaf281feef409ab6b40d Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 28 Nov 2024 16:25:08 +0200 Subject: [PATCH 061/199] Update iframe.md --- .../stripe/project-guidelines-for-stripe/iframe.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md index 8c98453cbc7..7644c41664d 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md @@ -1,5 +1,5 @@ --- -title: Project guidelines for Stripe +title: Project guidelines for Stripe - Embed the Stripe payment page as iframe description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template @@ -32,7 +32,8 @@ class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig } ``` -In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. +In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method, the value of the parameter is base64-encoded. +Example: `/payment?url=base64-encoded-URL-for-iframe-src`. 2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: @@ -143,4 +144,4 @@ class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin * [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) * [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) From e7c9d1c2147745c23d86c01256c484026af639e5 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 28 Nov 2024 16:40:30 +0200 Subject: [PATCH 062/199] Fixed wrong indents in pay-pal-express.md --- .../payment-method-flows/pay-pal-express.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md index 392cf578334..e3d408a581a 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -28,21 +28,21 @@ When PayOne PayPal Express is integrated into a headless application, orders are 1. The customer either selects PayPal Express as the payment method at the Product Detail page or the Cart Page. 2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: -* Payment provider name: Payone -* Payment method name: PayPal Express -* Payment amount -* Quote data + * Payment provider name: Payone + * Payment method name: PayPal Express + * Payment amount + * Quote data 3. Back Office sends the quote data and the payment amount to the PayOne app through an API. 4. The payment with the given data is persisted in the PayOne app. 5. PayOne app makes a request through an API to PayOne to `preauthorize` the payment. 6. PayOne returns a JSON response with the following parameters: -* transactionId -* orderId -* workorderid -* token -* currency -* clientId -* merchantId + * transactionId + * orderId + * workorderid + * token + * currency + * clientId + * merchantId 7. When the customer clicks "Complete Purchase" the modal closes and the customer data is requested. 8. After this the customer should be redirected to the summary page. 9. Here he should see his address data that was received from PayPal, and he can change the data or submit it which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. @@ -51,8 +51,8 @@ When PayOne PayPal Express is integrated into a headless application, orders are The `order_reference` is passed to the PayOne app to be connected with `transaction_id`. 12. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. 13. Depending on payment status, one of the following messages is returned through an asynchronous API: -* Payment is successful: `PaymentAuthorized` message. -* Payment is failed: `PaymentAuthorizationFailed` message. + * Payment is successful: `PaymentAuthorized` message. + * Payment is failed: `PaymentAuthorizationFailed` message. 14. Further on, the order is processed through the OMS. All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. From 8974994254320cb934cbb09a1a0c43bc2563d16a Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 28 Nov 2024 16:42:21 +0200 Subject: [PATCH 063/199] Update payone-acp-app.md --- .../app-composition-platform-integration/payone-acp-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index 4ab97b0b9dd..bc84d9633a8 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -22,7 +22,7 @@ You can have multiple accounts with Payone. For example, you can have different The Payone App supports the B2B and B2C business models and the following payment methods: * Credit Card -* Paypal Standard +* PayPal Standard and Express * Klarna: * Invoice: pay later * Installments: slice it From d6f733719ea2fdeec6f528d2c8a69358d0ba8b59 Mon Sep 17 00:00:00 2001 From: vol4onok Date: Thu, 28 Nov 2024 19:30:27 +0200 Subject: [PATCH 064/199] ACP-4520: updated integration --- .../algolia/algolia-personalization.md | 34 ++++--------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 60f554871f4..a96eeb84780 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -32,41 +32,19 @@ and your Algolia search indexes have products. ### Update Spryker packages ```bash -composer update --with-dependencies spryker/kernel-app spryker/search-http spryker/customer \ -spryker-shop/cart-page spryker-shop/catalog-page spryker-shop/checkout-page spryker-shop/home-page spryker-shop/payment-page \ -spryker-shop/product-detail-page spryker-shop/product-group-widget spryker-shop/product-review-widget \ -spryker-shop/product-set-detail-page spryker-shop/quick-order-page spryker-shop/shop-ui +composer update --with-dependencies spryker/kernel-app:1.2.0 spryker/search-http:0.5.0 spryker/customer:7.61.0 \ +spryker-shop/cart-page:3.45.0 spryker-shop/catalog-page:1.28.0 spryker-shop/checkout-page:3.32.1 spryker-shop/home-page:1.2.0 \ +spryker-shop/payment-page:1.5.0 spryker-shop/product-detail-page:3.22.1 spryker-shop/product-group-widget:1.10.1 \ +spryker-shop/product-review-widget:1.16.1 spryker-shop/product-set-detail-page:1.11.0 spryker-shop/quick-order-page:4.10.0 \ +spryker-shop/shop-ui:1.79.0 ``` ### Install new Spryker packages ```bash -composer install spryker-shop/traceable-event-widget +composer require spryker-shop/traceable-event-widget:1.0.1 ``` - -### Minimum package versions - -```bash -spryker/kernel-app: ^1.2.0 -spryker/search-http: ^0.5.0 -spryker/customer: ^7.61.0 -spryker-shop/cart-page: ^3.45.0 -spryker-shop/catalog-page: ^1.28.0 -spryker-shop/checkout-page: ^3.32.1 -spryker-shop/home-page: ^1.2.0 -spryker-shop/payment-page: ^1.5.0 -spryker-shop/product-detail-page: ^3.22.1 -spryker-shop/product-group-widget: ^1.10.1 -spryker-shop/product-review-widget: ^1.16.1 -spryker-shop/product-set-detail-page: ^1.11.0 -spryker-shop/quick-order-page: ^4.10.0 -spryker-shop/shop-ui: ^1.79.0 -spryker-shop/traceable-event-widget: ^1.0.1 -``` - - - if the command does now work, try it with `--with-all-dependencies` flag instead. ### Enabled new features From fe93367af5ce0a645115d5d3d412547ef83e91d8 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Thu, 28 Nov 2024 22:54:27 +0200 Subject: [PATCH 065/199] simplified composer command because of nested dependencies. --- .../algolia/algolia-personalization.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 2708dff5b2e..1320d19bd8b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -28,23 +28,21 @@ This feature also enables other Algolia premium features: ## Update Spryker Shop - -1. Update Spryker packages: +1. Install new Spryker packages: ```bash -composer update --with-dependencies spryker/kernel-app:1.2.0 spryker/search-http:0.5.0 spryker/customer:7.61.0 \ -spryker-shop/cart-page:3.45.0 spryker-shop/catalog-page:1.28.0 spryker-shop/checkout-page:3.32.1 spryker-shop/home-page:1.2.0 \ -spryker-shop/payment-page:1.5.0 spryker-shop/product-detail-page:3.22.1 spryker-shop/product-group-widget:1.10.1 \ -spryker-shop/product-review-widget:1.16.1 spryker-shop/product-set-detail-page:1.11.0 spryker-shop/quick-order-page:4.10.0 \ -spryker-shop/shop-ui:1.79.0 +composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.0 ``` +if the command does now work, try it with `--with-all-dependencies` flag instead. -2. Install new Spryker packages: + +2. Update Spryker packages: ```bash -composer require spryker-shop/traceable-event-widget:1.0.1 +composer update --with-dependencies spryker-shop/cart-page:^3.45.0 spryker-shop/catalog-page:^1.28.0 spryker-shop/checkout-page:^3.32.1 \ +spryker-shop/home-page:^1.2.0 spryker-shop/payment-page:^1.5.0 spryker-shop/product-detail-page:^3.22.1 spryker-shop/product-group-widget:^1.10.1 \ +spryker-shop/product-review-widget:^1.16.1 spryker-shop/product-set-detail-page:^1.11.0 spryker-shop/quick-order-page:^4.10.0 ``` - if the command does now work, try it with `--with-all-dependencies` flag instead. ### Enable new features From daebbd53bea24bb11c196f32fef063d110ba55a8 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 29 Nov 2024 10:46:42 +0200 Subject: [PATCH 066/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index d886f90c432..8da29b3d907 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -138,25 +138,25 @@ In case of customizations, your codebase could have updated Yves templates on th It could be a reason that some events won't be triggered or triggered with incorrect data. #### Run the project -* Set `TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. -* Run the project locally or deploy to testing environment. -* Open your Shop Storefront home page. -* Open browser's development console and check "Preserve log" in the settings. +1. Set `TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. +2. Run the project locally or deploy to testing environment. +3. Open your Shop Storefront home page. +4. Open browser's development console and check "Preserve log" in the settings. #### Check triggered events and their payload When debug mode is enabled, you can see event logs in the console to help with inspection. Monitor the browser's console and execute following cases: -* Open Home page - * (if home page has products) Click on a product - `PRODUCT_CLICK` - * (if home page has the add to cart button) Click on a product add to cart button - `ADD_TO_CART` -* Open any product detail page (PDP), you should see events for the actions: - * `PAGE_LOAD` with sku of viewed product. - * `ADD_TO_CART` with product SKU, currency, price and quantity, when user clicks Add to cart. - * `ADD_TO_SHOPPING_LIST` with product SKU when user clicks Add to shopping list. - * `ADD_TO_WISHLIST` with product SKU when user clicks Add to wishlist list. -* Open any Category page or Search results page: +* Open the home page. + * If the home page has products, click on a product - `PRODUCT_CLICK`. + * If the home page has the add to cart button, click on it - `ADD_TO_CART` +* Open a product's details page, you should see events for the actions: + * `PAGE_LOAD` with the product's SKU. + * `ADD_TO_CART` with the product's SKU, currency, price and quantity, when user clicks **Add to cart**. + * `ADD_TO_SHOPPING_LIST` with product SKU when user clicks **Add to shopping list**. + * `ADD_TO_WISHLIST` with product SKU when user clicks **Add to wishlist**. +* Open a **Category** or **Search Results** page: * `QueryID` should be present in the event payload on this page type. * `PAGE_LOAD` with displayed products SKUs and displayed search filters. * `PRODUCT_CLICK` when user clicks on results. From e4478e88bba2f0e1a4c2d1bb5c40d960a5a846ca Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 29 Nov 2024 17:43:06 +0200 Subject: [PATCH 067/199] Update integrate-algolia.md --- .../third-party-integrations/algolia/integrate-algolia.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md index fc400b420c1..fe270a461c9 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md @@ -13,13 +13,9 @@ This document describes how to integrate [Algolia](/docs/pbc/all/search/{{page.v ## Prerequisites -Before integrating Algolia, ensure the following prerequisites are met: +- [Install prerequisites and enable ACP](/docs/dg/dev/acp/install-prerequisites-and-enable-acp.html) -- Make sure your project is ACP-enabled. See [App Composition Platform installation](/docs/acp/user/app-composition-platform-installation.html) for details. - -- The Algolia app catalog page lists specific packages that must be installed or upgraded before you can use the Algolia app. To check the list of the necessary packages, in the Back Office, go to **Apps**-> **Algolia**. - -Example: +- In the Back Office, go to **Apps**-> **Algolia**. Install or update the packages required for Algolia. Example: ![list-of-algolia-modules](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/algolia/integrate-algolia/list-of-algolia-modules.png) From 5ba5162a07a6cf36b3870822e896c53abcaf81ee Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Fri, 29 Nov 2024 18:00:54 +0100 Subject: [PATCH 068/199] ACP-4467: Added fixes. --- .../install-the-payments-glue-api.md | 105 +++++++++--------- ...the-customer-account-management-feature.md | 2 +- .../202410.0/install-the-payments-feature.md | 38 ++++--- 3 files changed, 76 insertions(+), 69 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md index e380fa4ae51..9801bfcada0 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md @@ -194,8 +194,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency To verify `PaymentMethodsByCheckoutDataResourceRelationshipPlugin` is activated, send a POST request to `https://glue.mysprykershop.com/checkout-data?include=payment-methods` and make sure that `checkout-data` resource has a relationship to the `payment-methods` resources. To verify `PaymentCustomersResourceRoutePlugin` is activated, send a POST request to `https://glue.mysprykershop.com/payment-customers` and make sure that you get a response with customer data. -An example request for `https://glue.mysprykershop.com/payment-customers`: -The `customerPaymentServiceProviderData` field is a placeholder for the data that should be returned by the PSP widget. +Here is an example request of the PayOne PayPal express payment method for a guest or authorized customer to retrieve user data, such as addresses and other information, from the PSP: https://glue.mysprykershop.com/payment-customers. ```json { @@ -203,10 +202,17 @@ The `customerPaymentServiceProviderData` field is a placeholder for the data tha "type": "payment-customers", "attributes": { "payment": { - "paymentMethodName": "dummyPayment", - "paymentProviderName": "dummyPaymentProvider" + "paymentMethodName": "paypal-express", + "paymentProviderName": "payone" }, - "customerPaymentServiceProviderData": "customerPaymentServiceProviderData" + "customerPaymentServiceProviderData": { + "orderId": "order-id", + "workorderid": "workorder-id", + "transactionId": "transaction-id", + "token": "token", + "currency": "EUR", + "idCart": "d79a9c31-ed3d-57f5-958b-498e6b862ab3" + } } } } @@ -218,53 +224,52 @@ An example of the response: ```json { - "data": { - "type": "payment-customers", - "id": "", - "attributes": { - "customer": { - "customerReference": "CUST-001", - "email": "customer@example.com", - "firstName": "John", - "lastName": "Doe", - "salutation": "Mr.", - "gender": "male", - "dateOfBirth": "1980-01-01", - "phone": "+1234567890", - "defaultBillingAddress": { - "salutation": "Mr.", - "firstName": "John", - "lastName": "Doe", - "address1": "123 Main St", - "address2": "Apt 4B", - "address3": "", - "zipCode": "12345", - "city": "Anytown", - "country": "USA", - "iso2Code": "US", - "company": "Example Corp", - "phone": "+1234567890", - "isDefaultShipping": false, - "isDefaultBilling": true - }, - "defaultShippingAddress": { - "salutation": "Mr.", - "firstName": "John", - "lastName": "Doe", - "address1": "123 Main St", - "address2": "Apt 4B", - "address3": "", - "zipCode": "12345", - "city": "Anytown", - "country": "USA", - "iso2Code": "US", - "company": "Example Corp", - "phone": "+1234567890", - "isDefaultShipping": true, - "isDefaultBilling": false - } + "type": "payment-customers", + "id": null, + "attributes": { + "customer": { + "salutation": "n/a", + "firstName": "Spryker", + "lastName": "Systems", + "email": "eco-test+1@spryker.com", + "phone": "7886914965", + "company": null, + "billingAddress": { + "salutation": "n/a", + "firstName": "Eco", + "lastName": "Test", + "address1": "Julie-Wolfthorn-Strasse", + "address2": "1", + "address3": null, + "zipCode": "10115", + "city": "Berlin", + "country": "DE", + "iso2Code": "DE", + "company": null, + "phone": "7886914965", + "isDefaultShipping": null, + "isDefaultBilling": null + }, + "shippingAddress": { + "salutation": "n/a", + "firstName": "Eco", + "lastName": "Test", + "address1": "Julie-Wolfthorn-Strasse", + "address2": "1", + "address3": null, + "zipCode": "10115", + "city": "Berlin", + "country": "DE", + "iso2Code": "DE", + "company": null, + "phone": "7886914965", + "isDefaultShipping": null, + "isDefaultBilling": null } } + }, + "links": { + "self": "https://glue.de.aop-suite-testing.demo-spryker.com/payment-customers" } } ``` diff --git a/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md index 9c75e31590d..26f5f2d69ae 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-customer-account-management-feature.md @@ -1033,7 +1033,7 @@ customer.password.error.sequence,"Es wurde zu oft das gleiche Zeichen verwendet. customer.password.error.character_set,"Password must contain at least 1 character of each allowed character group: upper case, lower case, digit, and a special character.",en_US customer.password.error.character_set,"Passwort muss mindestens 1 Zeichen von jeder erlaubten Zeichengruppe enthalten: Großschreibung, Kleinschreibung, Zahl und ein Sonderzeichen.",de_DE customer.salutation.n/a,n/a,en_US -customer.salutation.n/a,n/a,de_DE +customer.salutation.n/a,n/v,de_DE ``` 2. Import data: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 115c619993b..b539d25c27a 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -6,7 +6,7 @@ The following feature integration guide expects the basic feature to be in place * Payment Back Office UI; * Payment method per store; * Payment data import. -w* Payment App express checkout flow. +* Payment App express checkout flow. {% endinfo_block %} @@ -32,26 +32,26 @@ composer require "spryker-feature/payments:{{page.version}}" "spryker/checkout-r {% info_block warningBox "Verification" %} Make sure that the following modules have been installed: -| MODULE | EXPECTED DIRECTORY | -|---------------------------|--------------------------------------------------| -| PaymentDataImport | vendor/spryker/payment-data-import | -| PaymentGui | vendor/spryker/payment-gui | -| PaymentApp | vendor/spryker/payment-app | -| PaymentAppExtension | vendor/spryker/payment-app-extension | -| PaymentAppShipment | vendor/spryker/payment-app-shipment | -| PaymentAppWidget | vendor/spryker-shop/payment-app-widget | -| PaymentAppWidgetExtension | vendor/spryker-shop/payment-app-widget-extension | -| PaymentCartConnector | vendor/spryker/payment-cart-connector | +| MODULE | EXPECTED DIRECTORY | REQUIRED ONLY FOR ACP PAYMENTS | +|---------------------------|--------------------------------------------------|--------------------------------| +| PaymentDataImport | vendor/spryker/payment-data-import | no | +| PaymentGui | vendor/spryker/payment-gui | no | +| PaymentApp | vendor/spryker/payment-app | yes | +| PaymentAppExtension | vendor/spryker/payment-app-extension | yes | +| PaymentAppShipment | vendor/spryker/payment-app-shipment | yes | +| PaymentAppWidget | vendor/spryker-shop/payment-app-widget | yes | +| PaymentAppWidgetExtension | vendor/spryker-shop/payment-app-widget-extension | yes | +| PaymentCartConnector | vendor/spryker/payment-cart-connector | no | {% endinfo_block %} -### 2) Set up configuration +### 2) Set up Express Checkout payments configuration 1. Add the following configuration to your project: 2. Configure the checkout payment step to hide the express checkout payment methods. Depending on your project needs, you can exclude the payment methods that you do not want to show on the checkout payment step. -In case you are using the `Payone` app, you can exclude the `payone-paypal-express` payment method. +In case you are using the ACP Payone app, you can exclude the `payone-paypal-express` payment method. **src/Pyz/Yves/CheckoutPage/CheckoutPageConfig.php** @@ -77,7 +77,8 @@ class CheckoutPageConfig extends SprykerCheckoutPageConfig Cart reload, remove item, and update quantity are the default cart operations. Define the payment methods that you want to exclude from the cart operations. -In the example below, the `PayPal Express` payment method name that is excluded from the cart operations. +During the checkout steps, cart reloads are executed multiple times, and the payment methods are cleared. +In the example below, the `PayPal Express` payment method name should be excluded from the cart operations in order to prevent the payment method from being cleared. **src/Pyz/Zed/PaymentCartConnector/PaymentCartConnectorConfig.php** @@ -186,7 +187,7 @@ Make sure that: {% endinfo_block %} -5. Configure the shipment method for the express checkout payment request. +5. Configure the default shipment method for the express checkout payment that will be used in the order and the cost is added to the total price. In the example below, the `spryker_dummy_shipment-standard` shipment method is configured for the `payone-paypal-express` payment method. The key is the payment method key, and the value is the shipment method key. @@ -423,8 +424,8 @@ Make sure that the configured data has been added to the `spy_payment_method`, ` 1. Append glossary according to your configuration: ```csv -payment_app_widget.validation.quote_is_empty, Quote is empty.,en_US -payment_app_widget.validation.quote_is_empty, Angebot ist leer.,de_DE +payment_app_widget.validation.quote_is_empty,Quote is empty.,en_US +payment_app_widget.validation.quote_is_empty,Angebot ist leer.,de_DE payment_app_widget.error.payment_failed,Payment failed,en_US payment_app_widget.error.payment_failed,Zahlung fehlgeschlagen,de_DE payment_app_widget.error.incorrect_quote,"Quote not found, session may have expired",en_US @@ -709,7 +710,8 @@ Verify that the following widgets have been registered by adding the respective {% endinfo_block %} 3. Customize the address solution according to your needs. -When the express checkout flow is enabled, the customer address does not always include the salutation field. +When the express checkout flow is enabled, the customer address does not always include all address fields used in Spryker, for example, the salutation field. + For this purpose, the 'n/a' placeholder is used. By default, it is not shown. **ShopUi/Theme/default/components/molecules/display-address/display-address.twig** From 0172ff0e306ffc2867ae00b6a6bd2cea9eb39b3e Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Fri, 29 Nov 2024 18:04:39 +0100 Subject: [PATCH 069/199] ACP-4467: Added fixes. --- .../install-the-payments-glue-api.md | 3 +- ...ice-providers-headless-express-checkout.md | 78 ++++++++++++++++++- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md index 9801bfcada0..22ad53bb0f3 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md @@ -194,7 +194,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency To verify `PaymentMethodsByCheckoutDataResourceRelationshipPlugin` is activated, send a POST request to `https://glue.mysprykershop.com/checkout-data?include=payment-methods` and make sure that `checkout-data` resource has a relationship to the `payment-methods` resources. To verify `PaymentCustomersResourceRoutePlugin` is activated, send a POST request to `https://glue.mysprykershop.com/payment-customers` and make sure that you get a response with customer data. -Here is an example request of the PayOne PayPal express payment method for a guest or authorized customer to retrieve user data, such as addresses and other information, from the PSP: https://glue.mysprykershop.com/payment-customers. +Here is an example request for the PayOne PayPal Express payment method, used by a guest or authorized customer to retrieve user data such as addresses and other information from the PSP: https://glue.mysprykershop.com/payment-customers. ```json { @@ -219,7 +219,6 @@ Here is an example request of the PayOne PayPal express payment method for a gue ``` Depending on the payment method, the response may vary. - An example of the response: ```json diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md index ae04b3ef1fb..86b0d66bfbd 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md @@ -13,6 +13,82 @@ The following diagram explains the flow of a headless payment page with an expre ![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) The main difference here is that the customer skips most of the default checkout steps such as enter addresses and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via the Glue `/payment-customer` API call. The returned data can then be used on SCOS side to update e.g. addresses. +Here is an example request for the PayOne PayPal Express payment method, used by a guest or authorized customer to retrieve user data such as addresses and other information from the PSP: https://glue.mysprykershop.com/payment-customers. +```json +{ + "data": { + "type": "payment-customers", + "attributes": { + "payment": { + "paymentMethodName": "paypal-express", + "paymentProviderName": "payone" + }, + "customerPaymentServiceProviderData": { + "orderId": "order-id", + "workorderid": "workorder-id", + "transactionId": "transaction-id", + "token": "token", + "currency": "EUR", + "idCart": "d79a9c31-ed3d-57f5-958b-498e6b862ab3" + } + } + } +} +``` + +An example of the response: + +```json +{ + "type": "payment-customers", + "id": null, + "attributes": { + "customer": { + "salutation": "n/a", + "firstName": "Spryker", + "lastName": "Systems", + "email": "eco-test+1@spryker.com", + "phone": "7886914965", + "company": null, + "billingAddress": { + "salutation": "n/a", + "firstName": "Eco", + "lastName": "Test", + "address1": "Julie-Wolfthorn-Strasse", + "address2": "1", + "address3": null, + "zipCode": "10115", + "city": "Berlin", + "country": "DE", + "iso2Code": "DE", + "company": null, + "phone": "7886914965", + "isDefaultShipping": null, + "isDefaultBilling": null + }, + "shippingAddress": { + "salutation": "n/a", + "firstName": "Eco", + "lastName": "Test", + "address1": "Julie-Wolfthorn-Strasse", + "address2": "1", + "address3": null, + "zipCode": "10115", + "city": "Berlin", + "country": "DE", + "iso2Code": "DE", + "company": null, + "phone": "7886914965", + "isDefaultShipping": null, + "isDefaultBilling": null + } + } + }, + "links": { + "self": "https://glue.de.aop-suite-testing.demo-spryker.com/payment-customers" + } +} +``` ### Further reading @@ -21,4 +97,4 @@ The main difference here is that the customer skips most of the default checkout * `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) * `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) * `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file +* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) From 0a3a58e58df10c9b167fed976506e792245786bd Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Fri, 29 Nov 2024 18:09:08 +0100 Subject: [PATCH 070/199] ACP-4467: Added fixes. --- ...verview-diagrams-for-payment-service-providers-sync-api.md | 2 +- .../stripe/project-guidelines-for-stripe/refunds.md | 4 ++-- .../sending-additional-data-to-stripe.md | 4 ++-- .../202410.0/base-shop/payment-method-strategies.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md index 433c089d990..742ebb4c8bf 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md @@ -11,7 +11,7 @@ related: ## Synchronous API -All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and refunds. The following endpoints are used: +All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and transfers to merchants. The following endpoints are used: * `/configure`: Used from the ACP app catalog to configure an app. * `/disconnect`: Used from the ACP app catalog to disconnect an app. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md index 175d83155da..2ef7e9a8cac 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md @@ -1,5 +1,5 @@ --- -title: Project guidelines for Stripe +title: Project guidelines for Stripe - Refunds description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template @@ -34,4 +34,4 @@ In the default OMS configuration, seven days are allocated to Stripe to complete * [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) * [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md index 8f92cfa19ac..51c7c662d8e 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md @@ -1,5 +1,5 @@ --- -title: Project guidelines for Stripe +title: Project guidelines for Stripe - Additional Data for Stripe payment intent description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template @@ -76,4 +76,4 @@ When a `PaymentIntent` is created on the Stripe side, you can see your passed `a * [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) * [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) * [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) \ No newline at end of file +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index 46db8fd9428..4a6104474b5 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -125,7 +125,7 @@ The default checkout guides a customer through various steps such as the cart, t The Express Checkout Payment Flow belongs to so called PreOrderPayments. PreOrderPayments are payments that are done before the actual order is placed. The Express Checkout Payment Flow is a two-step process. The first step is to authorize the payment and the second step is to capture the payment. The authorization is done when the customer clicks on the button in the shop. The capture is done when the order is placed. -Here the flow is different to the Hosted Payment Page flow. The customer will see e.g. on the Product Detail Page or the Cart Page a button to pay with the Payment Method. When the customer clicks on the button, the payment is initialized and a model is opened where the customer completes the payment. After that the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. +Here the flow is different from the Hosted Payment Page flow. The customer will see e.g. on the Product Detail Page or the Cart Page a button to pay with the Payment Method. When the customer clicks on the button, the payment is initialized and a modal window is opened where the customer completes the payment. After that, the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. Additionally, those Express Checkout Payment Methods provide customer data that can be used to prefill the checkout form. This data can contain e.g. customer data, address data or alike. From 269fa5fedc781095ee4049c631023b1e20869e17 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 30 Nov 2024 11:41:52 +0200 Subject: [PATCH 071/199] Update enable-dynamic-multistore.md --- .../install-features/202410.0/enable-dynamic-multistore.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md index 337ae66598a..d6d2ffa0b54 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -16,11 +16,9 @@ If your project version is below 202307.0, you need to update to the latest code 1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. 2. Make sure that you custom console commands (and the places where they are executed) updated to the new format, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Deployment file difference). -3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region for all the applications(Example https://yves.de.mysprykershop.com => https://yves.eu.mysprykershop.com), make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. +3. After enabling Dynamic Multistore, the URLs of your shop will change from store to region context, for example–`https://yves.de.mysprykershop.com` will change to `https://yves.eu.mysprykershop.com`. Prepare your shop and third-party systems to handle this change. To avoid SEO impact, set up all the necessary redirects beforehand. -4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. - -5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: +4. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) From 15c2a90cf902443a27ddecb2f0fc63b9a83a1a5a Mon Sep 17 00:00:00 2001 From: vol4onok Date: Mon, 2 Dec 2024 09:44:33 +0200 Subject: [PATCH 072/199] ACP-4520: updated requirements with new versions --- .../algolia/algolia-personalization.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 1320d19bd8b..98b40469dc0 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -31,7 +31,7 @@ This feature also enables other Algolia premium features: 1. Install new Spryker packages: ```bash -composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.0 +composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.2 ``` if the command does now work, try it with `--with-all-dependencies` flag instead. @@ -40,8 +40,9 @@ if the command does now work, try it with `--with-all-dependencies` flag instead ```bash composer update --with-dependencies spryker-shop/cart-page:^3.45.0 spryker-shop/catalog-page:^1.28.0 spryker-shop/checkout-page:^3.32.1 \ -spryker-shop/home-page:^1.2.0 spryker-shop/payment-page:^1.5.0 spryker-shop/product-detail-page:^3.22.1 spryker-shop/product-group-widget:^1.10.1 \ -spryker-shop/product-review-widget:^1.16.1 spryker-shop/product-set-detail-page:^1.11.0 spryker-shop/quick-order-page:^4.10.0 +spryker-shop/home-page:^1.2.0 spryker-shop/payment-page:^1.5.0 spryker-shop/product-detail-page:^3.23.0 spryker-shop/product-group-widget:^1.10.1 \ +spryker-shop/product-review-widget:^1.16.1 spryker-shop/product-set-detail-page:^1.11.0 spryker-shop/quick-order-page:^4.10.1 \ +spryker-shop/shop-ui:^1.82.0 ``` if the command does now work, try it with `--with-all-dependencies` flag instead. From 50700e3219fc03892c7311567a2c15a6e792280c Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Mon, 2 Dec 2024 12:21:25 +0100 Subject: [PATCH 073/199] Create add-new-store-in-multi-db-setup.md Created a "Adding new store in multi-db setup" howto guide --- .../add-new-store-in-multi-db-setup.md | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md new file mode 100644 index 00000000000..af820a6f420 --- /dev/null +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -0,0 +1,163 @@ +--- +title: "Adding new store in multi-db setup" +description: Adding and deploying a new store in multi-db store setup requires additional steps and preparation. This guideline contains all the best practices you need to know. +last_updated: Dec 02, 2024 +template: howto-guide-template +originalLink: +originalArticleId: +redirect_from: +--- + +Setting up a new store in an existing multi-DB environment requires a well-prepared plan, to avoid disrupting the data and operations of existing stores. This guide provides a detailed procedure to release a new store within a region that already hosts other stores, ensuring a non-destructive deployment. + +## Initial planning and best practices + +### Clear Roadmap +It is good to have overall plan, detailing all stores that will be added in the future. This can impact not only database structure and configurations, but overall decisions on how to approach the rollout, making sure it is cost-efficient over time, on all ends. + +### Backup strategy +Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. + +### Environment Preparation +Prepare the development, staging, and production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. + +### Repeatability +If you plan to release more stores in the future, focus that this process is easily repeatable in the future. That includes creating detailed technical documentation, release procedure, and tickets (epics, stories, tasks) in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. This documentation will be invaluable for future deployments and troubleshooting. + +## Detailed Considerations for the Migration + +### Integrations and 3rd party systems +* Review and adjust all third-party integrations to ensure they work with the new store setup. Here we mainly talk about data and it’s isolation across multiple virtual DBs. Assure that people working with both sides of the system (backend, frontend, merchant portal and APIs) do have all needed data access. +* Integrations such as single sign-on, payment gateways, inventory systems may require updates. Make sure tech teams responsible for that systems are available, and ready to do necessary changes on time. + +### Data Import +* Handle the data import process carefully, breaking it down into specific tasks such as configuring databases and adjusting the data import setup to work with the new store. +* Ensure any existing databases, such as the one from another country in one case, are correctly renamed or adjusted to fit the new multi-DB structure. +* Anticipate and plan for potential updates that may arise after end2end testing of the project data migration. + +### Code Buckets +* If used, investigate and adjust code bucket configurations as necessary. The technical steps required for these adjustments should be documented thoroughly, ensuring that code-bucket related functionalities are not disrupted by the addition of a new store. + +### Cloud environment and monitoring +* Think of and adjust monitoring tools and APM (such as NewRelic, CloudWatch) to accommodate the new store. Check that all alerts and metrics are correctly configured to monitor the health and performance of the new store alongside existing ones. +* Think of adjusting AWS Services such as S3, introducing buckets for the new store(s). + +### Front-end Considerations +* Consider any other activities related to the above epics that might impact the deployment. For instance, front-end separation might be a significant task, requiring layout adjustments between different stores and possible adjustments on the API side. + +## Step-by-Step Procedure to release a new store(s) + +Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline, which is a requirement from the cloud team, to successfully deploy your new store in a multi-db setup. + +### Local Setup +#### New store configuration + +* Define a new database and the store in the deploy file, following [that guide](/docs/ca/dev/multi-store-setups/add-and-remove-databases-of-stores.html#remove-the-configuration-of-the-database). As a result you should have: + * new database in regions..services.databases + * new store in regions..stores + * new domains in groups..applications +* Adjust stores.php with the configurations, relevant for your new store, following generic technical guideline. +* Prepare data import configurations and data files, specific to the new store. +* Adjust the local environment setup as needed, including configurations and environment variables. Examples: frontend router configuration, code bucket configuration, creating new backoffice users. +* Document all the steps you have done, to make sure they are repeatable in the future. + +#### Running Initial Setup + +* Boot the new configurations using the appropriate setup tool. +* Execute commands to initialize the database and services for the new store. +* Verify that the new store’s database is correctly initialized with demo data. + +#### Setting up additional deployment recipes + +It is convenient to create additional deployment install recipes (located under config/install folder) to setup a new and delete an existing stores, for testing purposes. Below is an example of such setup that proves to be working well on prcatice. We took the existing folder structure, and EU folder as a base, but you can introduce your structure: + +1. config/install/EU/setup-store.yml - contains everything needed to do a minimal setup of a new store(s): +``` +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORES_GO_HERE } +sections: + init-storage: + setup-search-create-sources: + command: "vendor/bin/console search:setup:sources -vvv --no-ansi" + stores: true + init-storages-per-store: + propel-migrate: + command: "vendor/bin/console propel:migrate -vvv --no-ansi" + stores: true + ... +``` +2. config/install/EU/delete-store.yml - contains everything needed to remove an existing store(s): +``` +env: + NEW_RELIC_ENABLED: 0 +command-timeout: 7200 +stores: + - { STORES_GO_HERE } +sections: + scheduler-clean: + scheduler-clean: + command: "vendor/bin/console scheduler:clean -vvv --no-ansi || true" + stores: true + clean-storage: + clean-storage: + command: "vendor/bin/console storage:delete -vvv --no-ansi" + stores: true + ... +``` +In further sections below you’ll see how you can use your new custom recipe during the deployment in your main deployment yml file’s “SPRYKER_HOOK_DESTRUCTIVE_INSTALL“ parameter as following: + +```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/setup-store --no-ansi -vvv"``` + +or + +```SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install {STORES_GO_HERE} -r EU/delete-store --no-ansi -vvv"``` + +### Staging Setup +#### Environment Configuration + +* Update the staging environment’s configuration to include the new store. +* For database to be initialised, you will need to run a destructive deployment for your new store. To assure existing stores are not affected, you need to specify only new store code(s) in your deployment yml file (image.environment section), in `SPRYKER_HOOK_DESTRUCTIVE_INSTALL`. Example, for new PL and AT stores to be introduced: +`SPRYKER_HOOK_DESTRUCTIVE_INSTALL: "vendor/bin/install PL,AT -r EU/destructive --no-ansi -vvv"` +You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) + +#### Support Requests +* Open a support request to apply the new configuration to the staging environment. Attach all necessary files and provide detailed deployment instructions. You can also have the necessary configuration in a specific branch of your repository +* Run the destructive deployment, assuring the right store(s) is specified. + +#### Deployment Execution +* Deploy the new store in the staging environment, ensuring existing stores remain unaffected. +* Test the new store thoroughly to confirm it operates correctly without impacting other stores, including all the external integrations in the staging mode. + +### Production Setup +#### Configuration Preparation + +* Prepare the production environment’s configuration similarly to the staging setup. + +#### Support and Deployment +* Open a support request to deploy the new store configuration to production, ensuring all configurations are correct. +* Execute the deployment, closely monitoring the process to catch any issues early. + +#### Post-Deployment +* After deployment, verify that the new store is fully operational and that no data or services for existing stores have been impacted. +* During environment configuration, if you have chosen to update existing installation recipe (production or destructive), revert it back to its original state. + +## Releasing many stores one after another +When you plan releasing multiple stores one after another you can save some time on support requests, doing only one request per environment for all stores upfront, which will make the overall process faster. To do so, adjust the above procedure as following: + +### First release +#### Local Setup +* Prepare and test the configuration for ALL stores you are planning to release in the future. + +#### Staging Setup +* Prepare staging deploy yml file, containing ALL stores you are planning to release in the future. Open a support request and hand the deploy file to them, explaining your intent and ideally - approx. schedule on when are you going to release all the stores. +* Once the preparation is ready - you can revert the configuration, leaving only store you’d like to release now. We recommend to save this configuration separately, to be able to come back to it later. +* Run the destructive deployment, assuring the right store(s) is specified and check the result. + +#### Production Setup +Repeat the same procedure as you’ve done for Staging + +### Next releases +While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. \ No newline at end of file From c32bf038663b55e55f2104b160bc9b440e354d51 Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Mon, 2 Dec 2024 14:13:40 +0100 Subject: [PATCH 074/199] Update add-new-store-in-multi-db-setup.md fixed comment about prod and non-prod environments --- .../add-new-store-in-multi-db-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index af820a6f420..ecdf067d234 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -19,7 +19,7 @@ It is good to have overall plan, detailing all stores that will be added in the Always have a backup plan ready in case of issues during the deployment. This includes not only database backups but also considerations on all points you will find below, including the business side. ### Environment Preparation -Prepare the development, staging, and production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. +Prepare your production and non-production environments for a new store rollout. Make sure you don’t have additional functionality to be released on top or parallel development. This involves ensuring that teams are prepared and stakeholders are aware of the procedure. ### Repeatability If you plan to release more stores in the future, focus that this process is easily repeatable in the future. That includes creating detailed technical documentation, release procedure, and tickets (epics, stories, tasks) in your project management software. This can be a detailed script or checklist tailored to your project, covering all relevant steps, configurations, and integrations. This documentation will be invaluable for future deployments and troubleshooting. @@ -160,4 +160,4 @@ When you plan releasing multiple stores one after another you can save some time Repeat the same procedure as you’ve done for Staging ### Next releases -While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. \ No newline at end of file +While doing next releases, you can add stores you’d like to release one by one and running the destructive deployment on your own and when you need it, w.o. raising a new request with the Support team. Make sure that configuration you’re appending matches with the one you sent during the “first release“ above. From 6ffc3465906a769210b52859b872ff1a33783def Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 10:58:10 +0100 Subject: [PATCH 075/199] Update add-new-store-in-multi-db-setup.md Fixed, according to reviewer's comments --- .../add-new-store-in-multi-db-setup.md | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index ecdf067d234..9026409b69c 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -8,7 +8,11 @@ originalArticleId: redirect_from: --- -Setting up a new store in an existing multi-DB environment requires a well-prepared plan, to avoid disrupting the data and operations of existing stores. This guide provides a detailed procedure to release a new store within a region that already hosts other stores, ensuring a non-destructive deployment. +Setting up a new store in an existing multi-DB environment requires a carefully crafted plan to ensure that the data and operations of existing stores remain unaffected. This guide outlines a detailed procedure for launching a new store within a region that already hosts other stores, guaranteeing a seamless and safe deployment. + +{% info_block warningBox %} +This guide is applicable in scenarios where store configurations and setups are managed programmatically through code. If you are utilizing the Dynamic Multistore feature to manage your stores via Backoffice, please refer to this {guide}(/docs/pbc/all/dynamic-multistore/202410.0/dynamic-multistore.html) +{% endinfo_block %} ## Initial planning and best practices @@ -47,7 +51,7 @@ If you plan to release more stores in the future, focus that this process is eas ## Step-by-Step Procedure to release a new store(s) -Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline, which is a requirement from the cloud team, to successfully deploy your new store in a multi-db setup. +Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/integrate-multi-database-logic.html#define-databases) as a generic technical guideline for defining new database(s), connecting them with new store(s) and adding necessary configuration. ### Local Setup #### New store configuration @@ -61,11 +65,10 @@ Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/ * Adjust the local environment setup as needed, including configurations and environment variables. Examples: frontend router configuration, code bucket configuration, creating new backoffice users. * Document all the steps you have done, to make sure they are repeatable in the future. -#### Running Initial Setup +#### Running initial setup locally -* Boot the new configurations using the appropriate setup tool. -* Execute commands to initialize the database and services for the new store. -* Verify that the new store’s database is correctly initialized with demo data. +* Bootstrap your updated configuration and run your environment as usual, using {docker/sdk}(/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.html#configure-and-start-the-instance) +* Verify that the new store’s database is correctly initialized and filled up with the demo data. #### Setting up additional deployment recipes @@ -77,7 +80,9 @@ env: NEW_RELIC_ENABLED: 0 command-timeout: 7200 stores: - - { STORES_GO_HERE } + - { STORE-1 } + - { STORE-2 } + ... sections: init-storage: setup-search-create-sources: @@ -95,7 +100,9 @@ env: NEW_RELIC_ENABLED: 0 command-timeout: 7200 stores: - - { STORES_GO_HERE } + - { STORE-1 } + - { STORE-2 } + ... sections: scheduler-clean: scheduler-clean: From d1fd42c016564bb8565e3c09c30e73a0fbf914bd Mon Sep 17 00:00:00 2001 From: Oleksii Bilan Date: Tue, 3 Dec 2024 15:10:34 +0200 Subject: [PATCH 076/199] Update docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md --- .../algolia/algolia-personalization.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 98b40469dc0..b924e95eddf 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -98,15 +98,9 @@ npm ci && npm run yves console frontend:project:install-dependencies && console frontend:yves:build ``` -5. Check that required dependency is installed: -```bash -npm list search-insights -``` - -6. If the previous command returned `└── (empty)`, install `search-insights` manually: +5. Install required `search-insights` dependency: ```bash npm i search-insights`. -``` ### Check your Yves's compatibility with new functionality From 118d5f0d0703c0bbd075e66ce11f5467f470056f Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 3 Dec 2024 15:16:11 +0200 Subject: [PATCH 077/199] Examples of the algolia-personalization.md --- .../algolia/algolia-personalization.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index b924e95eddf..67e16abafa3 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -181,7 +181,7 @@ Spryker provides default configurations for built-in components. For new or modi {% raw %}{% endblock %}{% endraw %} ``` -Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. +Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. 2. Check Event Selector @@ -308,6 +308,15 @@ For adding dynamic data, refer to the [API documentation](https://github.com/spr #} ``` +##### Examples of the feature integration into Spryker demo shops + +- [B2C Demo Shop](https://github.com/spryker-shop/b2c-demo-shop/pull/595/files) +- [B2C Marketplace Demo Shop](https://github.com/spryker-shop/b2c-demo-marketplace/pull/474) +- [B2B Demo Shop](https://github.com/spryker-shop/b2b-demo-shop/pull/542/files) +- [B2B Marketplace Demo Shop](https://github.com/spryker-shop/b2b-demo-marketplace/pull/490/files) + + + ### Update website agreement text You should update the website agreement text and ask for user consent to have their interactions with the website tracked and sent to Algolia. From 3bc8d05a4369c02d9cfb3dd1683e2c2d814570ac Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Tue, 3 Dec 2024 15:18:25 +0200 Subject: [PATCH 078/199] Update algolia-personalization.md --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 67e16abafa3..1d9d6d50a1c 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -311,7 +311,7 @@ For adding dynamic data, refer to the [API documentation](https://github.com/spr ##### Examples of the feature integration into Spryker demo shops - [B2C Demo Shop](https://github.com/spryker-shop/b2c-demo-shop/pull/595/files) -- [B2C Marketplace Demo Shop](https://github.com/spryker-shop/b2c-demo-marketplace/pull/474) +- [B2C Marketplace Demo Shop](https://github.com/spryker-shop/b2c-demo-marketplace/pull/474/files) - [B2B Demo Shop](https://github.com/spryker-shop/b2b-demo-shop/pull/542/files) - [B2B Marketplace Demo Shop](https://github.com/spryker-shop/b2b-demo-marketplace/pull/490/files) From d5d3fe2c7fcc825c535589c215b89265b82297bb Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 16:25:10 +0100 Subject: [PATCH 079/199] Update add-new-store-in-multi-db-setup.md --- .../add-new-store-in-multi-db-setup.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 9026409b69c..3b71d2e20c1 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -67,7 +67,11 @@ Follow [this guideline](/docs/scos/dev/technical-enhancement-integration-guides/ #### Running initial setup locally -* Bootstrap your updated configuration and run your environment as usual, using {docker/sdk}(/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.html#configure-and-start-the-instance) +* Bootstrap your updated configuration and run your environment as usual: + ```bash + docker/sdk boot deploy.dev.yml + docker/sdk up + ``` * Verify that the new store’s database is correctly initialized and filled up with the demo data. #### Setting up additional deployment recipes From 9b78b55ed5d009a5cc1cc36c89a85f95c2e24629 Mon Sep 17 00:00:00 2001 From: Andriy Netseplyayev Date: Tue, 3 Dec 2024 16:26:56 +0100 Subject: [PATCH 080/199] Update docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md Co-authored-by: Andrey Tkachenko --- .../add-new-store-in-multi-db-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md index 3b71d2e20c1..35193b01d8a 100644 --- a/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md +++ b/docs/dg/dev/internationalization-and-multi-store/add-new-store-in-multi-db-setup.md @@ -135,7 +135,7 @@ or You can also use your custom recipe following the examples above (see “Setting up additional deployment recipes “) #### Support Requests -* Open a support request to apply the new configuration to the staging environment. Attach all necessary files and provide detailed deployment instructions. You can also have the necessary configuration in a specific branch of your repository +* Open a support request to apply the new configuration to the environment. Attach deploy file and explain shortly expected changes, i.e. new DB should be created. In case you have the necessary configuration in a specific branch of your repository, provide a reference to it in the ticket, making sure support team has access to your code base. * Run the destructive deployment, assuring the right store(s) is specified. #### Deployment Execution From 03d9ea63d8f600dd957b6e4354e7e60ccfc5bac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Wed, 4 Dec 2024 14:05:51 +0100 Subject: [PATCH 081/199] ACP-4047 Updated docs --- ...rams-for-payment-service-providers-async-api.md | 12 ++++++------ ...t-service-providers-configure-and-disconnect.md | 12 ++++++------ ...grams-for-payment-service-providers-headless.md | 12 ++++++------ ...ayment-service-providers-hosted-payment-page.md | 12 ++++++------ ...r-payment-service-providers-oms-payment-flow.md | 12 ++++++------ ...grams-for-payment-service-providers-sync-api.md | 12 ++++++------ ...rview-diagrams-for-payment-service-providers.md | 14 +++++++------- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md index 96141214850..1e03053fa62 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md @@ -37,9 +37,9 @@ Sent from Spryker: ### Further reading -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md index 208073c0d95..9cf5f9f639d 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md @@ -24,9 +24,9 @@ The `ReadyForMerchantAppOnboarding` message is used to inform Spryker that the a ### Further reading -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md index c81c7c0e91f..64c5d1eab7d 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md @@ -18,9 +18,9 @@ For information about endpoints and messages, see the following sections. ### Further reading -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md index 9eeeba89c8c..3c825f4ea54 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md @@ -14,9 +14,9 @@ The following diagram explains the hosted payment page flow. ### Further reading -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md index ffa746a8de5..49d58c3d24e 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md @@ -19,9 +19,9 @@ Optional elements: ### Further reading -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md index 742ebb4c8bf..30bc93ec153 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md @@ -26,9 +26,9 @@ All PSP integrations are based on a synchronous API. A synchronous API is used t ### Further reading -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md index 728fe74d388..50edee6bf1a 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md @@ -12,10 +12,10 @@ This document provides an overview of Payment Service Provider (PSP) APIs. All P The following pages contain detailed information about the PSP APIs: -* `Configure and disconnect` - [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* `Hosted payment page` - [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* `Headless payment implementation` - [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* `Headless payment with express-checkout payment methods` - [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* `OMS payment flow` - [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* `Asynchronous API - ACP Messages` - [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* `Synchronous API - API Endpoints` - [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file +* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file From 400b86d313652f11cfc20b4dbc04092b7c0f559b Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Wed, 4 Dec 2024 16:53:45 +0100 Subject: [PATCH 082/199] ACP-4467: Added missed configuration. --- .../202410.0/install-the-payments-feature.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index b539d25c27a..d07a092e443 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -256,6 +256,40 @@ Make sure that: {% endinfo_block %} +7. Enable the cart clean up for the regular checkout flow. +When customers start the regular checkout, the quote is cleaned up to allow them to restart the checkout process from the beginning. + +**src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** + +```php + Date: Thu, 5 Dec 2024 10:47:42 +0200 Subject: [PATCH 083/199] Update algolia-personalization-for-headless-frontends.md --- ...-personalization-for-headless-frontends.md | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md index a7c701d1736..405533a7d38 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md @@ -1,6 +1,6 @@ --- title: Algolia Personalization for headless frontends -description: Find out how you can enable Algolia personalization in your Spryker shop based on headless approach (custom frontend or mobile application). +description: Find out how you can enable Algolia personalization in your Spryker shop based on headless approach (custom frontend or mobile application). last_updated: Nov 24, 2024 template: howto-guide-template --- @@ -20,26 +20,20 @@ The events from your site/application are required to enable Algolia premium fea - A/B Testing -For custom frontends or mobile applications, it's recommended to use the Algolia SDK for a specific framework or platform and the built-in Algolia UI components. -The Algolia UI components already support event tracking for most of the required events. +For custom frontends and mobile applications, we recommend using the Algolia SDK for your specific framework or platform and the built-in Algolia UI components. Algolia UI components support event tracking for most of the required events by default. -For Web -* Any JavaScript applications: - * https://www.algolia.com/doc/api-reference/widgets/js/ - * standalone client for events (Insights): https://www.algolia.com/doc/api-client/methods/insights/?client=javascript -* React: - * https://www.algolia.com/doc/api-reference/widgets/react/ -* Vue: - * https://www.algolia.com/doc/guides/building-search-ui/getting-started/vue/ -* Angular: - * https://www.algolia.com/doc/guides/building-search-ui/getting-started/angular/ -* Flutter: - * https://www.algolia.com/doc/guides/building-search-ui/getting-started/flutter/ +For Web: +* Any JavaScript applications: [API Reference - JavaScript Widgets](https://www.algolia.com/doc/api-reference/widgets/js/) + * Standalone client for events (insights): [Insights API Client - JavaScript](https://www.algolia.com/doc/api-client/methods/insights/?client=javascript) +* React: [API Reference - React Widgets](https://www.algolia.com/doc/api-reference/widgets/react/) +* Vue: [Getting Started with Vue](https://www.algolia.com/doc/guides/building-search-ui/getting-started/vue/) +* Angular: [Getting Started with Angular](https://www.algolia.com/doc/guides/building-search-ui/getting-started/angular/) +* Flutter: [Getting Started with Flutter](https://www.algolia.com/doc/guides/building-search-ui/getting-started/flutter/) -For mobile applications: -* Android https://www.algolia.com/doc/guides/building-search-ui/getting-started/android/ -* iOS https://www.algolia.com/doc/guides/building-search-ui/getting-started/ios/ +For Mobile Applications: +* Android: [Getting Started with Android](https://www.algolia.com/doc/guides/building-search-ui/getting-started/android/) +* iOS: [Getting Started with iOS](https://www.algolia.com/doc/guides/building-search-ui/getting-started/ios/) -For additional "conversion" events such as "Add to Cart", "Add to Shopping List", or "Add to Wishlist" use the Insights API client for your framework/platform -and the methods from this page https://www.algolia.com/doc/api-client/methods/insights/. + +For additional conversion events, such as Add to Cart, Add to Shopping List, or Add to Wishlist, use the Insights API client for your framework or platform and the methods from [Insights API client methods](https://www.algolia.com/doc/api-client/methods/insights/). From 737e295e8e9670b987592d8917e1f889cabf7e6e Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 5 Dec 2024 11:19:11 +0200 Subject: [PATCH 084/199] Update algolia-personalization-for-headless-frontends.md --- ...a-personalization-for-headless-frontends.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md index 405533a7d38..a388df8816b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md @@ -5,13 +5,7 @@ last_updated: Nov 24, 2024 template: howto-guide-template --- -{% info_block infoBox "Info" %} - -Default Spryker installation supports Algolia personalization only for YVES frontend. - -{% endinfo_block %} - -The events from your site/application are required to enable Algolia premium features such as +Algolia requires events from your application to support the following premium features: - Dynamic Re-Ranking - Query Categorization @@ -20,20 +14,18 @@ The events from your site/application are required to enable Algolia premium fea - A/B Testing -For custom frontends and mobile applications, we recommend using the Algolia SDK for your specific framework or platform and the built-in Algolia UI components. Algolia UI components support event tracking for most of the required events by default. +Spryker collects only Yves events by default. For custom frontends and mobile applications, we recommend using the Algolia SDK for your specific framework or platform and the built-in Algolia UI components. Algolia UI components support event tracking for most of the required events by default. -For Web: -* Any JavaScript applications: [API Reference - JavaScript Widgets](https://www.algolia.com/doc/api-reference/widgets/js/) +For web applications: +* JavaScript applications: [API Reference - JavaScript Widgets](https://www.algolia.com/doc/api-reference/widgets/js/) * Standalone client for events (insights): [Insights API Client - JavaScript](https://www.algolia.com/doc/api-client/methods/insights/?client=javascript) * React: [API Reference - React Widgets](https://www.algolia.com/doc/api-reference/widgets/react/) * Vue: [Getting Started with Vue](https://www.algolia.com/doc/guides/building-search-ui/getting-started/vue/) * Angular: [Getting Started with Angular](https://www.algolia.com/doc/guides/building-search-ui/getting-started/angular/) * Flutter: [Getting Started with Flutter](https://www.algolia.com/doc/guides/building-search-ui/getting-started/flutter/) -For Mobile Applications: +For mobile applications: * Android: [Getting Started with Android](https://www.algolia.com/doc/guides/building-search-ui/getting-started/android/) * iOS: [Getting Started with iOS](https://www.algolia.com/doc/guides/building-search-ui/getting-started/ios/) - - For additional conversion events, such as Add to Cart, Add to Shopping List, or Add to Wishlist, use the Insights API client for your framework or platform and the methods from [Insights API client methods](https://www.algolia.com/doc/api-client/methods/insights/). From 04867103d191ce8f84bac328bfccc92e497cfb75 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 6 Dec 2024 17:02:45 +0200 Subject: [PATCH 085/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 119 +++++++++++------- 1 file changed, 71 insertions(+), 48 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 2ffd22ae885..153ff69f09a 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -5,12 +5,7 @@ last_updated: Nov 24, 2024 template: howto-guide-template --- -{% info_block infoBox "Info" %} - -Default Spryker installation supports Algolia personalization only for YVES frontend. -If you plan to use Algolia personalization in headless frontend or mobile application follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). - -This feature also enables other Algolia premium features: +This document describes how to integrate Algolia Personalization. This integration also enabled other Algolia premium features: - Dynamic Re-Ranking - Query Categorization @@ -18,6 +13,10 @@ This feature also enables other Algolia premium features: - Revenue analytics - A/B Testing +{% info_block infoBox "Third-party frontends" %} + +* By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). + {% endinfo_block %} ## Prerequisites @@ -28,12 +27,12 @@ This feature also enables other Algolia premium features: ## Update Spryker Shop -1. Install new Spryker packages: +1. Install a Spryker package for tracing events: ```bash composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.2 ``` -if the command does now work, try it with `--with-all-dependencies` flag instead. +If the command doesn't work, try running the following command: `composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.2 --with-all-dependencies`. 2. Update Spryker packages: @@ -44,11 +43,11 @@ spryker-shop/home-page:^1.2.0 spryker-shop/payment-page:^1.5.0 spryker-shop/prod spryker-shop/product-review-widget:^1.16.1 spryker-shop/product-set-detail-page:^1.11.0 spryker-shop/quick-order-page:^4.10.1 \ spryker-shop/shop-ui:^1.82.0 ``` -if the command does now work, try it with `--with-all-dependencies` flag instead. +if the command doesn't work, try running it with the `--with-all-dependencies` flag. ### Enable new features -1. Update project config: +1. Update the project config: ```php // config_default.php @@ -73,7 +72,7 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` -3. Enabled the plugin that generates an anonymous token for guest users in the session: +3. Enable the plugin that generates an anonymous token for guest users in the session: ```php // src/Pyz/Yves/EventDispatcher/EventDispatcherDependencyProvider.php @@ -98,71 +97,95 @@ npm ci && npm run yves console frontend:project:install-dependencies && console frontend:yves:build ``` -5. Install required `search-insights` dependency: +5. Install the `search-insights` dependency: ```bash npm i search-insights`. ### Check your Yves's compatibility with new functionality -In case of customizations, your codebase could have updated Yves templates on the project level (`src/Pyz/Yves/`). +In case of customizations, your codebase could have updated Yves templates on the project level: `src/Pyz/Yves/`. It could be a reason that some events won't be triggered or triggered with incorrect data. #### Run the project -1. Set `TraceableEventWidgetConfig::isDebugEnabled()` set to `true`. -2. Run the project locally or deploy to testing environment. -3. Open your Shop Storefront home page. -4. Open browser's development console and check "Preserve log" in the settings. +1. Set `TraceableEventWidgetConfig::isDebugEnabled()` to `true`. +2. Run the project locally or deploy to a testing environment. +3. Open the Storefront's home page. +4. In browser development console, go to settings. +5. Enable the "Preserve log" option. #### Check triggered events and their payload When debug mode is enabled, you can see event logs in the console to help with inspection. -Monitor the browser's console and execute following cases: -* Open the home page. - * If the home page has products, click on a product - `PRODUCT_CLICK`. - * If the home page has the add to cart button, click on it - `ADD_TO_CART` -* Open a product's details page, you should see events for the actions: - * `PAGE_LOAD` with the product's SKU. - * `ADD_TO_CART` with the product's SKU, currency, price and quantity, when user clicks **Add to cart**. - * `ADD_TO_SHOPPING_LIST` with product SKU when user clicks **Add to shopping list**. - * `ADD_TO_WISHLIST` with product SKU when user clicks **Add to wishlist**. -* Open a **Category** or **Search Results** page: - * `QueryID` should be present in the event payload on this page type. - * `PAGE_LOAD` with displayed products SKUs and displayed search filters. - * `PRODUCT_CLICK` when user clicks on results. - * `ADD_TO_CART` with product SKU, currency and price, when user clicks Add to cart from the catalog page. - * `FILTER_CLICK` with filters list, when user clicks any filter from the filter section. -* Open Cart page - * (if applicable) add a new product from add to cart widget `ADD_TO_CART` - * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` -* Open Quick Order page - * (if applicable) add a new product from add to cart widget `ADD_TO_CART` - * (if applicable) save cart items to a shopping list `ADD_TO_SHOPPING_LIST` -* Open Order Success page - * `PAGE_LOAD` with currency, order total, skus, prices, quantities of purchased products. +Execute the following cases while monitoring the console for specified events: + +Home page cases: + +| CASE | EVENT | +| - | - | +| If the home page has products, click on a product. | `PRODUCT_CLICK` | +| If the home page has the add to cart button, click on it. | `ADD_TO_CART` | + + +Product Details page cases: + +| CASE | EVENT | +| - | - | +| Open the Product Details page | `PAGE_LOAD` with the product's SKU. | +| Click **Add to cart**. | `ADD_TO_CART` with the product's SKU, currency, price, and quantity. | +| Click **Add to shopping list**. | `ADD_TO_SHOPPING_LIST` with product's SKU. | +| Click **Add to wishlist** | `ADD_TO_WISHLIST` with the product's SKU. | + +Category and Search Results page cases: + +| CASE | EVENT | +| - | - | +| Open Category or Search Results page. | `QueryID` is present in the event payload. `PAGE_LOAD` with displayed products SKUs and search filters. | +| Click on a product. | `PRODUCT_CLICK` | +| Click **Add to cart**. | `ADD_TO_CART` with the product's SKU, currency, and price. | +| Click on a filter | `FILTER_CLICK` with a list of filters. | + +Cart page cases: + +| CASE | EVENT | +| - | - | +| If applicable: add a product from the "Add to cart" widget. | `ADD_TO_CART` | +| If applicable: save cart items to a shopping list. | `ADD_TO_SHOPPING_LIST` | + +Quick Order page cases: + +| CASE | EVENT | +| - | - | +| If applicable: add a product from the "Add to cart" widget. | `ADD_TO_CART` | +| If applicable: save cart items to a shopping list. | `ADD_TO_SHOPPING_LIST` | + +Order Success page cases: +| CASE | EVENT | +| - | - | +| Open the **Order Success** page | `PAGE_LOAD` with currency, order total, SKUs, prices, and quantities of purchased products. | To view a full list of available events, refer to the `traceable-events-algolia` [Readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). -#### Common Issues and Solutions +#### Common issues and solutions ##### Prerequisites If you need to add, modify, or fix events at the project level, start with these two steps: -- Locate the page template or view that is used for the current page. -- Override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template at the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level). +1. Locate the page template or view that is used for the current page. +2. On the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level), override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template. For comprehensive details about the **event configuration API**, visit the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). -##### Issue: Event Not Triggering on User Action +##### Issue: Event not triggering on user action -If an event is not firing, verify that the desired action (e.g., 'click', 'change') is configured for the specific event (e.g., `PRODUCT_CLICK`). +If an event is not firing, verify that the action, like `click` or `change`, is configured for the specific event, like `PRODUCT_CLICK`). -1. Check the Configuration +1. Check the configuration -Spryker provides default configurations for built-in components. For new or modified components, you need to add the appropriate event configuration. +Configuration for built-in components is provided by default. For new or modified components, you need to add the appropriate event configuration. ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -315,7 +338,7 @@ For adding dynamic data, refer to the [API documentation](https://github.com/spr - [B2B Demo Shop](https://github.com/spryker-shop/b2b-demo-shop/pull/542/files) - [B2B Marketplace Demo Shop](https://github.com/spryker-shop/b2b-demo-marketplace/pull/490/files) - + ### Update website agreement text From 26650f8a995766f5587ef0bec97b697ecdf08912 Mon Sep 17 00:00:00 2001 From: dimitriyTsemma Date: Fri, 6 Dec 2024 19:44:53 +0200 Subject: [PATCH 086/199] FRW-7936 Updated documentation --- .../202410.0/install-dynamic-multistore.md | 103 ++++++++++++++---- 1 file changed, 80 insertions(+), 23 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index 587b082350a..5426cba6ab5 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1500,21 +1500,12 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency ### 5) Set up behavior -{% info_block warningBox "Verification" %} - -If you are working with pre-generated internal URLs in Twig templates, you must now wrap them using the new Twig function `generatePath()`. -This ensures the URLs include the necessary context (store name) based on the current request. - -{% endinfo_block %} - Enable the following behaviors by registering the plugins: -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | -|StoreApplicationPlugin| Provides store data to the application. ||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| -|StorePrefixRouterEnhancerPlugin| Extracts the current store name from an incoming URL, for adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \Spryker\Yves\Router\RouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| -|LanguagePrefixRouterEnhancerPlugin| Extracts the current language name from an incoming URL, to add the current language to the Route parameters, and to prefix the generated URLs with the current language. Through the \Spryker\Yves\Router\RouterConfig::getAllowedLanguages() configuration, you tell this plugin what languages it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| -|StorePrefixStorageRouterEnhancerPlugin| Extracts the current store name from an incoming URL, for adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \SprykerShop\Yves\StorageRouter\StorageRouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||SprykerShop\Yves\StorageRouter\Plugin\RouterEnhancer| +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +| --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | +|StoreApplicationPlugin| Provides store data to the application. ||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| + **src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** @@ -1540,6 +1531,63 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency } ``` +## Launch and set up environment + +Rebuild the application with assets and activate new endpoints: + +```bash +docker/sdk boot && docker/sdk up --assets +``` + +{% info_block warningBox "Verification" %} + +- Make sure your store is accessible at `https://yves.eu.mysprykershop.com` or `https://backoffice.eu.mysprykershop.com`. +- Make sure the store switcher is displayed on the Storefront. + +{% endinfo_block %} + +## Store in URL + +If you want a store name as part of the URL path, follow the steps below. + +{% info_block warningBox "Verification" %} + +If you are working with pre-generated internal URLs in Twig templates, you must now wrap them using the new Twig function `generatePath()`. +This ensures the URLs include the necessary context (store name) based on the current request. + +{% endinfo_block %} + +Enable the store name in URL functionality: + +**config/Shared/config_default.php** + +```php + + */ + protected function getTwigPlugins(): array + { + return [ + new GeneratePathTwigPlugin(), + ]; + } +} +``` From 327dcfa85bff0193318e0364fddd78e1c56f17d9 Mon Sep 17 00:00:00 2001 From: dimitriyTsemma Date: Fri, 6 Dec 2024 19:45:34 +0200 Subject: [PATCH 087/199] FRW-7936 Updated documentation --- .../202410.0/install-dynamic-multistore.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index 5426cba6ab5..fa414f306c3 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1502,10 +1502,9 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency Enable the following behaviors by registering the plugins: -| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | -| --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | -|StoreApplicationPlugin| Provides store data to the application. ||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| - +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +| --- | --- | --- | --- | +|StoreApplicationPlugin| Provides store data to the application.||SprykerShop\Yves\StoreWidget\Plugin\ShopApplication| **src/Pyz/Yves/ShopApplication/ShopApplicationDependencyProvider.php** From 45fa880380173fa2b22e846a76af704f8ca53132 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Sat, 7 Dec 2024 17:20:17 +0200 Subject: [PATCH 088/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 153ff69f09a..3139f3ca571 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -15,7 +15,7 @@ This document describes how to integrate Algolia Personalization. This integrati {% info_block infoBox "Third-party frontends" %} -* By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). +By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). {% endinfo_block %} @@ -25,7 +25,7 @@ This document describes how to integrate Algolia Personalization. This integrati 2. [Configure Algolia](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/configure-algolia.html) 3. Add products to your Algolia search indexes -## Update Spryker Shop +## Install and update Spryker packages 1. Install a Spryker package for tracing events: @@ -45,7 +45,7 @@ spryker-shop/shop-ui:^1.82.0 ``` if the command doesn't work, try running it with the `--with-all-dependencies` flag. -### Enable new features +### Enable features 1. Update the project config: ```php @@ -172,7 +172,7 @@ To view a full list of available events, refer to the `traceable-events-algolia` ##### Prerequisites -If you need to add, modify, or fix events at the project level, start with these two steps: +If you need to add, change, or fix events at the project level, start with these steps: 1. Locate the page template or view that is used for the current page. 2. On the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level), override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template. @@ -181,11 +181,9 @@ For comprehensive details about the **event configuration API**, visit the [trac ##### Issue: Event not triggering on user action -If an event is not firing, verify that the action, like `click` or `change`, is configured for the specific event, like `PRODUCT_CLICK`). +If an event isn't firing, verify that the action, like `click` or `change`, is configured for the specific event, like `PRODUCT_CLICK`. Detailed steps: -1. Check the configuration - -Configuration for built-in components is provided by default. For new or modified components, you need to add the appropriate event configuration. +1. Check the configuration is set up for new and changed components. Configuration for built-in components is provided by default. ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -204,11 +202,9 @@ Configuration for built-in components is provided by default. For new or modifie {% raw %}{% endblock %}{% endraw %} ``` -Refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md) for more details. - -2. Check Event Selector +For more details, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). -Spryker includes default CSS selectors. If selectors have changed, update the configuration accordingly. +2. Check the Event Selector. CSS selectors are provided by default. If you've changed selectors, update the configuration accordingly. ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -233,13 +229,11 @@ Spryker includes default CSS selectors. If selectors have changed, update the co ``` -##### Issue: Incorrect Event Payload - -You can view the event payload in the console under `Adapter Data:`. If the payload is incorrect, check the static and dynamic data configurations. +##### Issue: Incorrect event payload -1. Static Data +You can view the event payload in the console under `Adapter Data:`. If the payload is incorrect, check the static and dynamic data configuration. -Adjust static data in the `eventTracker` block as needed: +* Adjust static data in the `eventTracker` block as needed: ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -255,9 +249,7 @@ Adjust static data in the `eventTracker` block as needed: {% raw %}{% endblock %}{% endraw %} ``` -2. Dynamic Data - -For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. +* Adjust the configuration for dynamic data for the needed triggers. For more information, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). ```twig {% raw %}{% set events = {{% endraw %} @@ -343,17 +335,17 @@ For adding dynamic data, refer to the [API documentation](https://github.com/spr ### Update website agreement text You should update the website agreement text and ask for user consent to have their interactions with the website tracked and sent to Algolia. -Something similar to + > **User Data analytics** > > To enhance your experience, we use data and analytics to understand how you interact with our site. > By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. -### Test it +### Verify the installation -1. Deploy to testing environment. -2. Make sure that Algolia is connected and configured in the Backoffice > Apps. +1. Deploy to a testing environment. +2. In the Back Office, go to **Apps** and verify that Algolia is connected and configured. {% info_block warningBox "Make sure" %} @@ -362,9 +354,15 @@ This action will update your Spryker shop config to be able to send events to Al {% endinfo_block %} -3. Open Yves, act as a guest and logged-in user, do searches, filter results, open product pages after search, add products to cart, do order placement. -4. Go to [Algolia Dashboard](https://dashboard.algolia.com/) and open Events from Data Sources section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. -5. Check that you see events from your website here. +3. On the Storefront, do the following as a guest user: + * Search products + * Filter search results + * From search results, go to a product page + * Add products to cart + * Place orders +4. Repeat step 3 as a logged-in user. +5. In the [Algolia Dashboard](https://dashboard.algolia.com/), go to **Data Sources**>**Events** and open from section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. + Make sure the events you've triggered are displayed. ### Configure Algolia Features @@ -372,7 +370,5 @@ This action will update your Spryker shop config to be able to send events to Al When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. Then you can start configuration of Personalization, Dynamic Re-Ranking and Query Categorization features (find Algolia docs and guides on their website). -**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) -with new personalized configuration of your search ("A/B Testing" page in Algolia Dashboard). -It will allow you to see how new features influence your search conversion rate only for some limit audience of your site. When the results are good, -you can change the settings globally in the indexes configuration, so it will work for all users. +**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) with new personalized configuration of your search ("A/B Testing" page in Algolia Dashboard). +It will allow you to see how new features influence your search conversion rate only for some limit audience of your site. When the results are good, you can change the settings globally in the indexes configuration, so it will work for all users. From 26ff16aa91d06415ad6bb3e4048861faae5c54d5 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 9 Dec 2024 10:35:03 +0200 Subject: [PATCH 089/199] fixed bash command --- .../algolia/algolia-personalization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 2ffd22ae885..c6a53fde41b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -100,8 +100,8 @@ console frontend:project:install-dependencies && console frontend:yves:build 5. Install required `search-insights` dependency: ```bash -npm i search-insights`. - +npm i search-insights +``` ### Check your Yves's compatibility with new functionality From 8d4ea2092f38ac64cfb48b9d57e6a9170e9818c0 Mon Sep 17 00:00:00 2001 From: Stanislav Matveyev Date: Mon, 9 Dec 2024 10:42:25 +0200 Subject: [PATCH 090/199] fixed API documentation URL --- .../third-party-integrations/algolia/algolia-personalization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index c6a53fde41b..4cddc3bd958 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -234,7 +234,7 @@ Adjust static data in the `eventTracker` block as needed: 2. Dynamic Data -For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. +For adding dynamic data, refer to the [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). Adjust the configuration as needed for specific triggers. ```twig {% raw %}{% set events = {{% endraw %} From 425a5c5901dc4acc56e96de782b3319c6a3e7da2 Mon Sep 17 00:00:00 2001 From: dimitriyTsemma Date: Mon, 9 Dec 2024 16:40:42 +0200 Subject: [PATCH 091/199] FRW-7936 Updated documentation --- .../202410.0/install-dynamic-multistore.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index fa414f306c3..c165d145155 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1552,6 +1552,7 @@ If you want a store name as part of the URL path, follow the steps below. {% info_block warningBox "Verification" %} If you are working with pre-generated internal URLs in Twig templates, you must now wrap them using the new Twig function `generatePath()`. +This function is provided by the `GeneratePathTwigPlugin` plugin. This ensures the URLs include the necessary context (store name) based on the current request. {% endinfo_block %} @@ -1583,15 +1584,16 @@ Enable the following behaviors by registering the plugins and Twig command: |StorePrefixRouterEnhancerPlugin| Extracts and adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \Spryker\Yves\Router\RouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| |LanguagePrefixRouterEnhancerPlugin| Extracts and adding the current language to the Route parameters, and to prefix the generated URLs with the current language. Through the \Spryker\Yves\Router\RouterConfig::getAllowedLanguages() configuration, you tell this plugin what languages it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| |StorePrefixStorageRouterEnhancerPlugin| Extracts and adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \SprykerShop\Yves\StorageRouter\StorageRouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||SprykerShop\Yves\StorageRouter\Plugin\RouterEnhancer| -|GeneratePathTwigPlugin| Provides store name as part of URL path. ||SprykerShop\Yves\ShopUi\Plugin\Twig| +|GeneratePathTwigPlugin| Wrapper on Symfony Router `generate()` function. ||SprykerShop\Yves\ShopUi\Plugin\Twig| {% info_block warningBox "Verification" %} In the RouterDependencyProvider::getRouterEnhancerPlugins() stack, the order of plugin execution has changed: -• The `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin`. -• Ensure that your plugin stack reflects this updated order to maintain the correct routing behavior. +• By default store name placed before the language prefix in the URL. Example: `https://yves.eu.mysprykershop.com/DE/en/`. +• So the `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin`. +• Ensure your plugin stack reflects this updated order to maintain the correct routing behavior. {% endinfo_block %} @@ -1645,6 +1647,12 @@ class StorageRouterDependencyProvider extends SprykerShopStorageRouterDependency } ``` +{% info_block warningBox "Verification" %} + +We do not need `LanguagePrefixRouterEnhancerPlugin` for the StorageRouter, as the language is already part of the URL for the StorageRouter. + +{% endinfo_block %} + **src/Pyz/Yves/Twig/TwigDependencyProvider.php** ```php From 2a82f3a3dcdf8108917a3bd2eb7781c72e976910 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 10 Dec 2024 10:47:54 +0200 Subject: [PATCH 092/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 71 ++++++++++--------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index b76bbfd7570..7af4cf79ebb 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -102,19 +102,19 @@ console frontend:project:install-dependencies && console frontend:yves:build npm i search-insights ``` -### Check your Yves's compatibility with new functionality +## Test and configure Yves customizations to work with Algolia Personalization -In case of customizations, your codebase could have updated Yves templates on the project level: `src/Pyz/Yves/`. -It could be a reason that some events won't be triggered or triggered with incorrect data. +If you customized Yves templates on the project level (`src/Pyz/Yves/`), some events may not trigger or trigger with incorrect data. + +### Run the project in a testing environment -#### Run the project 1. Set `TraceableEventWidgetConfig::isDebugEnabled()` to `true`. 2. Run the project locally or deploy to a testing environment. 3. Open the Storefront's home page. 4. In browser development console, go to settings. 5. Enable the "Preserve log" option. -#### Check triggered events and their payload +### Check triggered events and their payload When debug mode is enabled, you can see event logs in the console to help with inspection. @@ -168,22 +168,22 @@ Order Success page cases: To view a full list of available events, refer to the `traceable-events-algolia` [Readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). -#### Common issues and solutions +### Common issues and solutions -##### Prerequisites +#### Prerequisites -If you need to add, change, or fix events at the project level, start with these steps: +If you need to add, change, or fix events on the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level), start with these steps: 1. Locate the page template or view that is used for the current page. -2. On the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level), override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template. +2. On the project level, override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template. -For comprehensive details about the **event configuration API**, visit the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). +For details on the event configuration API, see the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). -##### Issue: Event not triggering on user action +#### Issue: Event not triggering on user action -If an event isn't firing, verify that the action, like `click` or `change`, is configured for the specific event, like `PRODUCT_CLICK`. Detailed steps: +If an event isn't firing, verify that the action, like `click` or `change`, is configured for the event, like `PRODUCT_CLICK`. Detailed steps: -1. Check the configuration is set up for new and changed components. Configuration for built-in components is provided by default. +1. Check the configuration is set up for new and changed components. ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -202,7 +202,7 @@ If an event isn't firing, verify that the action, like `click` or `change`, is c {% raw %}{% endblock %}{% endraw %} ``` -For more details, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). +Configuration for built-in components is provided by default. For more details, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). 2. Check the Event Selector. CSS selectors are provided by default. If you've changed selectors, update the configuration accordingly. @@ -229,11 +229,11 @@ For more details, see [API documentation](https://github.com/spryker-shop/tracea ``` -##### Issue: Incorrect event payload +#### Issue: Incorrect event payload -You can view the event payload in the console under `Adapter Data:`. If the payload is incorrect, check the static and dynamic data configuration. +You can view event payload in the console under `Adapter Data:`. If payload is incorrect, check and adjust static and dynamic data configuration. -* Adjust static data in the `eventTracker` block as needed: +* Adjust static data in the `eventTracker` block: ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -249,7 +249,7 @@ You can view the event payload in the console under `Adapter Data:`. If the payl {% raw %}{% endblock %}{% endraw %} ``` -* Adjust the configuration for dynamic data for the needed triggers. For more information, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). +* Adjust the configuration for dynamic data for the needed triggers. ```twig {% raw %}{% set events = {{% endraw %} @@ -323,7 +323,12 @@ You can view the event payload in the console under `Adapter Data:`. If the payl #} ``` -##### Examples of the feature integration into Spryker demo shops +For more information, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). + + +## Examples of integration into demo shops + +For examples of Algolia Personalization integration into demo shops, see the following PRs: - [B2C Demo Shop](https://github.com/spryker-shop/b2c-demo-shop/pull/595/files) - [B2C Marketplace Demo Shop](https://github.com/spryker-shop/b2c-demo-marketplace/pull/474/files) @@ -332,36 +337,32 @@ You can view the event payload in the console under `Adapter Data:`. If the payl -### Update website agreement text +## Update privacy policy -You should update the website agreement text and ask for user consent to have their interactions with the website tracked and sent to Algolia. +With Algolia Personalization, user data is tracked and sent to Algolia. To ensure user privacy, you need to update your privacy policy and proactively collect users' consent for data tracking. The data consent popup can be similar to the following: +```Text +User Data analytics -> **User Data analytics** -> -> To enhance your experience, we use data and analytics to understand how you interact with our site. -> By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. +To enhance your experience, we use data and analytics to understand how you interact with our site. +By accepting, you allow us to capture anonymous events for personalization, analysis, and continuous improvement of your experience on our platform. +``` -### Verify the installation +## Verify the installation 1. Deploy to a testing environment. 2. In the Back Office, go to **Apps** and verify that Algolia is connected and configured. - -{% info_block warningBox "Make sure" %} - -If you previously had ACP Algolia App connected and used, you will need to disconnect and connect it again with the same Algolia credentials in the ACP App Catalog. -This action will update your Spryker shop config to be able to send events to Algolia. - -{% endinfo_block %} +3. If you've previously been using the Algolia App, in the Back Office, disconnect and connect it again with the same Algolia credentials. + This action updates your Spryker shop config to be able to send events to Algolia. 3. On the Storefront, do the following as a guest user: * Search products * Filter search results - * From search results, go to a product page + * From search results, go to a product's page * Add products to cart * Place orders 4. Repeat step 3 as a logged-in user. -5. In the [Algolia Dashboard](https://dashboard.algolia.com/), go to **Data Sources**>**Events** and open from section - `https://dashboard.algolia.com/apps/$APP_ID$/events/debugger`. +5. In the [Algolia Dashboard](https://dashboard.algolia.com/), go to **Data Sources**>**Events**. Make sure the events you've triggered are displayed. From 52c9447bfef32971e4c74d5ed1d94f4194c0595a Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 10 Dec 2024 11:20:30 +0200 Subject: [PATCH 093/199] Update install-dynamic-multistore.md --- .../202410.0/install-dynamic-multistore.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index c165d145155..555721e0582 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1545,19 +1545,17 @@ docker/sdk boot && docker/sdk up --assets {% endinfo_block %} -## Store in URL +## Add store name to Storefront URLs If you want a store name as part of the URL path, follow the steps below. {% info_block warningBox "Verification" %} -If you are working with pre-generated internal URLs in Twig templates, you must now wrap them using the new Twig function `generatePath()`. -This function is provided by the `GeneratePathTwigPlugin` plugin. -This ensures the URLs include the necessary context (store name) based on the current request. +If you're using internal URLs in Twig templates, now they must be wrapped using the `generatePath()` Twig function provided by the `GeneratePathTwigPlugin` plugin. This ensures the URLs contain the necessary context, such as a store name, based on the current request. {% endinfo_block %} -Enable the store name in URL functionality: +1. Configure store name in URLs: **config/Shared/config_default.php** @@ -1577,20 +1575,20 @@ $config[RouterConstants::IS_STORE_ROUTING_ENABLED] ``` -Enable the following behaviors by registering the plugins and Twig command: +Enable the following behaviors by registering the plugins and a Twig command: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | | --- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | -|StorePrefixRouterEnhancerPlugin| Extracts and adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \Spryker\Yves\Router\RouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| -|LanguagePrefixRouterEnhancerPlugin| Extracts and adding the current language to the Route parameters, and to prefix the generated URLs with the current language. Through the \Spryker\Yves\Router\RouterConfig::getAllowedLanguages() configuration, you tell this plugin what languages it has to work with. ||Spryker\Yves\Router\Plugin\RouterEnhancer| -|StorePrefixStorageRouterEnhancerPlugin| Extracts and adding the current store name to the Route parameters, and for prefixing the generated URL with the current store name. Through the \SprykerShop\Yves\StorageRouter\StorageRouterConfig::getAllowedStores() configuration, you tell this plugin what store names it has to work with. ||SprykerShop\Yves\StorageRouter\Plugin\RouterEnhancer| -|GeneratePathTwigPlugin| Wrapper on Symfony Router `generate()` function. ||SprykerShop\Yves\ShopUi\Plugin\Twig| +|StorePrefixRouterEnhancerPlugin| Extracts and adds the current store name to route parameters and prefixes the generated URL with the store name. The \Spryker\Yves\Router\RouterConfig::getAllowedStores() configuration specifies the store names the plugin should handle. ||Spryker\Yves\Router\Plugin\RouterEnhancer| +|LanguagePrefixRouterEnhancerPlugin| Extracts and adds the current language to route parameters and prefixes generated URLs with the language. Using the `\Spryker\Yves\Router\RouterConfig::getAllowedLanguages()` configuration, you can define the languages the plugin should support. ||Spryker\Yves\Router\Plugin\RouterEnhancer| +|StorePrefixStorageRouterEnhancerPlugin| Extracts the current store name, adds it to route parameters, and prefixes generated URLs accordingly. Using the `\SprykerShop\Yves\StorageRouter\StorageRouterConfig::getAllowedStores()` configuration, you specify which store names the plugin supports. ||SprykerShop\Yves\StorageRouter\Plugin\RouterEnhancer| +|GeneratePathTwigPlugin| Wrapper for Symfony Router `generate()` function. ||SprykerShop\Yves\ShopUi\Plugin\Twig| {% info_block warningBox "Verification" %} -In the RouterDependencyProvider::getRouterEnhancerPlugins() stack, the order of plugin execution has changed: +In the `RouterDependencyProvider::getRouterEnhancerPlugins()` stack, the order of plugin execution has changed: • By default store name placed before the language prefix in the URL. Example: `https://yves.eu.mysprykershop.com/DE/en/`. • So the `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin`. • Ensure your plugin stack reflects this updated order to maintain the correct routing behavior. From 25025ac72e06d2d68eeed01598be6a52004b7384 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 10 Dec 2024 13:35:34 +0200 Subject: [PATCH 094/199] Update algolia-personalization.md --- .../algolia/algolia-personalization.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 7af4cf79ebb..2f0711ab2f6 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -5,7 +5,7 @@ last_updated: Nov 24, 2024 template: howto-guide-template --- -This document describes how to integrate Algolia Personalization. This integration also enabled other Algolia premium features: +This document describes how to integrate Algolia Personalization. This integration also enables the following Algolia premium features: - Dynamic Re-Ranking - Query Categorization @@ -15,7 +15,7 @@ This document describes how to integrate Algolia Personalization. This integrati {% info_block infoBox "Third-party frontends" %} -By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [this guide](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-headless.html). +By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [Algolia Personalization for headless frontends](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.html). {% endinfo_block %} @@ -108,7 +108,7 @@ If you customized Yves templates on the project level (`src/Pyz/Yves/`), some ev ### Run the project in a testing environment -1. Set `TraceableEventWidgetConfig::isDebugEnabled()` to `true`. +1. To be able to see event logs in the console, enable debug mode by setting `TraceableEventWidgetConfig::isDebugEnabled()` to `true`. 2. Run the project locally or deploy to a testing environment. 3. Open the Storefront's home page. 4. In browser development console, go to settings. @@ -116,8 +116,6 @@ If you customized Yves templates on the project level (`src/Pyz/Yves/`), some ev ### Check triggered events and their payload -When debug mode is enabled, you can see event logs in the console to help with inspection. - Execute the following cases while monitoring the console for specified events: Home page cases: @@ -366,10 +364,9 @@ By accepting, you allow us to capture anonymous events for personalization, anal Make sure the events you've triggered are displayed. -### Configure Algolia Features +### Configure Algolia features + +When your indexes have enough data, such as unique searches and events, you can start configuring [Personalization](https://www.algolia.com/doc/guides/personalization/ai-personalization/what-is-ai-personalization/), [Dynamic Re-Ranking](https://www.algolia.com/doc/guides/algolia-ai/re-ranking/), and [Query Categorization](https://www.algolia.com/doc/guides/algolia-ai/query-categorization/) features. -When your indexes will have enough data (unique searches, events), you can check it in Analytics and Events Debugger tabs on Algolia Dashaboard. -Then you can start configuration of Personalization, Dynamic Re-Ranking and Query Categorization features (find Algolia docs and guides on their website). -**It's important** that you need to first create [A/B tests](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview) with new personalized configuration of your search ("A/B Testing" page in Algolia Dashboard). -It will allow you to see how new features influence your search conversion rate only for some limit audience of your site. When the results are good, you can change the settings globally in the indexes configuration, so it will work for all users. +When updating the configuration of Algolia features, make sure to A/B test them before rolling out globally. A/B testing lets you test configuration and see how it affects conversion rates for a limited audience. For more details, see [A/B Testing](https://academy.algolia.com/training/00f72f14-0713-11ef-b9fe-0617d5264223/overview). From c7be10bafc5146170435585ec65d3c64b459b487 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 10 Dec 2024 16:36:08 +0200 Subject: [PATCH 095/199] metadescription and links --- .../zed/business-layer/custom-exceptions.md | 2 +- .../zed/business-layer/facade/a-facade-implementation.md | 4 ++-- .../business-layer/facade/design-by-contract-dbc-facade.md | 2 +- .../zed/business-layer/facade/facade-use-cases.md | 6 +++--- .../backend-development/zed/business-layer/facade/facade.md | 4 ++-- .../zed/communication-layer/communication-layer.md | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md b/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md index 9660b9c5865..a0e3f4b43aa 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md +++ b/docs/dg/dev/backend-development/zed/business-layer/custom-exceptions.md @@ -1,6 +1,6 @@ --- title: Custom exceptions -description: When you need to throw an exception, you should define your own type of exception. +description: Define and handle custom exceptions in Spryker's Business Layer to streamline error management and ensure clean code. Create and manage exceptions effectively. last_updated: Sep 27, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/custom-exceptions diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md b/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md index 91781bf6c10..6f4322ed25c 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.md @@ -1,6 +1,6 @@ --- title: A facade implementation -description: This document describes a facade implementation. +description: Implement a facade in Business Layer to streamline interactions between modules. This guide explains best practices for creating a centralized API for module communication. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/implementing-facade @@ -13,7 +13,7 @@ related: - title: Facade use cases link: docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.html - title: Design by Contract (DBC) - Facade - link: docs/scos/dev/back-end-development/zed/business-layer/facade/design-by-contract-dbc-facade.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.html --- ## AbstractFacade diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md b/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md index fbf7296de3f..7e405c576f5 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.md @@ -11,7 +11,7 @@ related: - title: Facade link: docs/dg/dev/backend-development/zed/business-layer/facade/facade.html - title: A facade implementation - link: docs/scos/dev/back-end-development/zed/business-layer/facade/a-facade-implementation.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.html - title: Facade use cases link: docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.html --- diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.md b/docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.md index af78364e515..b9201c40831 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.md @@ -1,6 +1,6 @@ --- title: Facade use cases -description: This document describes facade use cases. +description: Explore use cases for facades in the Business Layer. Learn how to centralize logic and streamline module communication for efficient and maintainable backend development. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/using-facade @@ -12,9 +12,9 @@ related: - title: Facade link: docs/dg/dev/backend-development/zed/business-layer/facade/facade.html - title: A facade implementation - link: docs/scos/dev/back-end-development/zed/business-layer/facade/a-facade-implementation.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.html - title: Design by Contract (DBC) - Facade - link: docs/scos/dev/back-end-development/zed/business-layer/facade/design-by-contract-dbc-facade.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.html --- This document describes the use cases of a facade. diff --git a/docs/dg/dev/backend-development/zed/business-layer/facade/facade.md b/docs/dg/dev/backend-development/zed/business-layer/facade/facade.md index 3bfd306a42e..6a6691b4287 100644 --- a/docs/dg/dev/backend-development/zed/business-layer/facade/facade.md +++ b/docs/dg/dev/backend-development/zed/business-layer/facade/facade.md @@ -9,11 +9,11 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/business-layer/facade/facade.html related: - title: A facade implementation - link: docs/scos/dev/back-end-development/zed/business-layer/facade/a-facade-implementation.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/a-facade-implementation.html - title: Facade use cases link: docs/dg/dev/backend-development/zed/business-layer/facade/facade-use-cases.html - title: Design by Contract (DBC) - Facade - link: docs/scos/dev/back-end-development/zed/business-layer/facade/design-by-contract-dbc-facade.html + link: docs/dg/dev/backend-development/zed/business-layer/facade/design-by-contract-dbc-facade.html --- A *facade* acts as an internal API. The main responsibility of the facade is to hide the internal implementation. diff --git a/docs/dg/dev/backend-development/zed/communication-layer/communication-layer.md b/docs/dg/dev/backend-development/zed/communication-layer/communication-layer.md index 8ba07efc48c..7ae3b5cff13 100644 --- a/docs/dg/dev/backend-development/zed/communication-layer/communication-layer.md +++ b/docs/dg/dev/backend-development/zed/communication-layer/communication-layer.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/communication-layer/communication-layer.html related: - title: Addi indexes to foreign key columns - index generator - link: docs/scos/dev/back-end-development/zed/communication-layer/adding-indexes-to-foreign-key-columns-index-generator.html + link: docs/dg/dev/backend-development/zed/communication-layer/add-indexes-to-foreign-key-columns-index-generator.html - title: About the Business layer link: docs/dg/dev/backend-development/zed/business-layer/business-layer.html - title: About the Persistence layer From db4ae0d8a465948f9cf860a816d853d63e0226f8 Mon Sep 17 00:00:00 2001 From: Anton Smarovydlo Date: Tue, 10 Dec 2024 18:27:00 +0100 Subject: [PATCH 096/199] FRW-8550 Adjustments after TW review. --- _data/sidebars/pbc_all_sidebar.yml | 2 - .../202410.0/enable-dynamic-multistore.md | 139 +++++++++++++- .../base-shop/difference-between-modes.md | 173 ------------------ .../dynamic-multistore-feature-overview.md | 163 ++++++++++++++++- .../202410.0/base-shop/faq.md | 4 +- 5 files changed, 294 insertions(+), 187 deletions(-) delete mode 100644 docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index d2cd8d2fd7b..226bc278744 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -1226,8 +1226,6 @@ entries: - title: Add fields to Back Office forms url: /docs/pbc/all/dynamic-multistore/base-shop/add-fields-to-back-office-forms.html - - title: Difference between Dynamic Multistore ON and OFF mode - url: /docs/pbc/all/dynamic-multistore/base-shop/difference-between-modes.html - title: Enable / Disable Dynamic Multistore url: /docs/pbc/all/dynamic-multistore/base-shop/enable-dynamic-multistore.html - title: FAQ Dynamic Multistore diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md index 5e575cc5828..c99f3e98332 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -1,28 +1,94 @@ -This document describes how to enable [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/dynamic-multistore-feature-overview.html) on the latest codebase. +This document describes how to enable [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/dynamic-multistore-feature-overview.html) on the demoshop version 202307.0 or above. ## Enable Dynamic Multistore {% info_block warningBox "Project version" %} -If your project version is below 202307.0, you need to update to the latest codebase first, see [Install Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/install-dynamic-multistore.html) page. +If your project version is below 202307.0, you need to install Dynamic Multistore feature first, use instructions provided at [Install Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/install-dynamic-multistore.html) page. {% endinfo_block %} ### Here are the steps that needs to be performed to enable Dynamic Multistore. {% info_block warningBox "Staging environment" %} - Make sure that **all** steps above are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. + Make sure that **all** steps below are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. {% endinfo_block %} -1. Make sure that your custom Backoffice, MerchantPortal, Console Commands, Gateway, BackendAPI code do not use `StoreFacade::getCurrentStore()` as well as `StoreClient::getCurrentStore()` methods, they are no longer available in any other application except GlueStorefront and Storefront. -2. Make sure that you custom console commands (and the places where they are executed) updated to the new format, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Deployment file difference). +1. Methods `StoreClient::getCurrentStore()`, `StoreFacade::getCurrentStore()` are available only in `GlueStorefront` and `Storefront` applications. For other applications (see list below) replace them with the following methods `StoreStorageClient:getStoreNames()`, `StoreStorageClient::findStoreByName()` or `StoreFacade::getStoreCollection()`. + * Backoffice + * MerchantPortal + * Console Commands + * Gateway + * BackendAPI + +2. Update your custom console commands (if any) to meet the following rules: +- `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. +- All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. +- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. 3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region for all the applications(Example https://yves.de.mysprykershop.com => https://yves.eu.mysprykershop.com), make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. 4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. 5. Dynamic Multistore introduce some changes in RabbitMQ messages structure, so it is **important** that: - - During server migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. + - During the migration we do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) -5. Update AWS deployment files to Dynamic Multistore mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). -6. Run normal deploy for your server pipeline. +6. Update AWS deployment files to Dynamic Multistore mode, using the example: +- Environment variable section +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy.dynamic-store-off -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r production.dynamic-store-off --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive.dynamic-store-off --no-ansi -vvv' +SPRYKER_YVES_HOST_DE: de.{{DOMAIN_ZONE}} +SPRYKER_YVES_HOST_AT: at.{{DOMAIN_ZONE}} +``` + +should be changed to: + +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r dynamic-store --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive --no-ansi -vvv' +SPRYKER_DYNAMIC_STORE_MODE: true +SPRYKER_YVES_HOST_EU: yves.eu.{{DOMAIN_ZONE}} +``` +- Regions section +```yaml +regions: + stores: + DE: + services: + broker: + namespace: de_queue + key_value_store: + namespace: 1 + search: + namespace: de_search + session: + namespace: 2 + AT: + services: + broker: + namespace: at_queue + key_value_store: + namespace: 3 + search: + namespace: at_search + session: + namespace: 4 +``` +should be changed to: + +```yaml +regions: + broker: + namespace: eu-docker + key_value_store: + namespace: 1 + search: + namespace: eu_search +``` + +7. Run normal deploy for your server pipeline. {% info_block warningBox "Verification" %} @@ -47,7 +113,62 @@ Make sure that **all** steps above are performed (and fully tested) on staging b - During server migration you do not have unprocessed messages in the queue. Make sure that all messages are processed **before** enabling Maintenance Mode. - Make sure that `Maintainance Mode` is enabled during migration to make sure that no new messages are added to the queue before the migration is finished. (Expected downtime is limited to the deployment time, normally it takes less than 1hr) -4. Revert changes for you deployment files to Dynamic Multistore OFF mode, see [details](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/difference-between-modes.html#Difference in console commands execution). +4. Revert changes for you deployment files to Dynamic Multistore OFF mode, +- Environment variable section +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r dynamic-store --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive --no-ansi -vvv' +SPRYKER_DYNAMIC_STORE_MODE: true +SPRYKER_YVES_HOST_EU: yves.eu.{{DOMAIN_ZONE}} +``` +should be changed to: +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy.dynamic-store-off -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r production.dynamic-store-off --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive.dynamic-store-off --no-ansi -vvv' +SPRYKER_YVES_HOST_DE: de.{{DOMAIN_ZONE}} +SPRYKER_YVES_HOST_AT: at.{{DOMAIN_ZONE}} +``` + +- Regions section +```yaml +regions: + broker: + namespace: eu-docker + key_value_store: + namespace: 1 + search: + namespace: eu_search +``` +should be changed to: +```yaml +regions: + stores: + DE: + services: + broker: + namespace: de_queue + key_value_store: + namespace: 1 + search: + namespace: de_search + session: + namespace: 2 + AT: + services: + broker: + namespace: at_queue + key_value_store: + namespace: 3 + search: + namespace: at_search + session: + namespace: 4 +``` + 6. Run normal deploy for your server pipeline. {% info_block warningBox "Verification" %} diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md deleted file mode 100644 index 3d9d65bc7a1..00000000000 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Difference in deployment files -description: This document describes the difference between Dynamic Multistore ON and OFF mode. -past_updated: Nov 1, 2024 -template: howto-guide-template -last_updated: Nov 1, 2024 ---- - -This document describes the difference between Dynamic Multistore ON and OFF mode. - - -## Deployment file difference - -### Environment variable section - -```yaml -SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy.dynamic-store-off -vvv' -SPRYKER_HOOK_AFTER_DEPLOY: 'true' -SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r production.dynamic-store-off --no-ansi -vvv' -SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive.dynamic-store-off --no-ansi -vvv' -SPRYKER_YVES_HOST_DE: de.{{DOMAIN_ZONE}} -SPRYKER_YVES_HOST_AT: at.{{DOMAIN_ZONE}} -``` - -changed to: - -```yaml -SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy -vvv' -SPRYKER_HOOK_AFTER_DEPLOY: 'true' -SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r dynamic-store --no-ansi -vvv' -SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive --no-ansi -vvv' -SPRYKER_DYNAMIC_STORE_MODE: true -SPRYKER_YVES_HOST_EU: yves.eu.{{DOMAIN_ZONE}} -``` - -### Regions section - -```yaml -regions: - stores: - DE: - services: - broker: - namespace: de_queue - key_value_store: - namespace: 1 - search: - namespace: de_search - session: - namespace: 2 - AT: - services: - broker: - namespace: at_queue - key_value_store: - namespace: 3 - search: - namespace: at_search - session: - namespace: 4 -``` -converted to: - -```yaml -regions: - broker: - namespace: eu-docker - key_value_store: - namespace: 1 - search: - namespace: eu_search -``` - - -### Applications section - -{% info_block infoBox "Info" %} - The same pattern is valid for all applications -{% endinfo_block %} - -```yaml - mportal: - application: merchant-portal - endpoints: - mp.de.{{DOMAIN_ZONE}}: - entry-point: MerchantPortal - store: DE - primal: true - services: - session: - namespace: 7 - mp.at.{{DOMAIN_ZONE}}: - entry-point: MerchantPortal - store: AT - services: - session: - namespace: 8 -``` - -converted to: - -```yaml -mportal: - application: merchant-portal - endpoints: - mp.eu.{{DOMAIN_ZONE}}: - region: EU - <<: *frontend-auth - entry-point: MerchantPortal - primal: true - services: - session: - namespace: 7 -``` - -{% info_block infoBox "Verification" %} -Please make sure that you've migrated all the application by the pattern provided above. -{% endinfo_block %} - -{% info_block infoBox "Info" %} - The domain structure is changed to have an ability to switch between stores withing one domain. -{% endinfo_block %} - -## Difference in console commands execution - -In disabled Dynamic Multistore mode, console commands which somehow depends on store, were executed with `APPLICATION_STORE` environment variable, example: - -```shell -APPLICATION_STORE=DE console search:setup:sources -``` - -In Dynamic Multistore mode, all the store aware console commands should be executed with `--store` parameter, example: - -```shell -console search:setup:sources --store=DE -``` - -In case if store is not provided as a parameter, the command is executed for all stores within the current region. - -For the custom console commands please follow the next rules: -- `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. -- All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. -- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. - -## How Dynamic Multistore affects a project - -In this example, EU region has DE and AT stores. US region has a US store. Dynamic Multistore introduces the following changes in this setup: - -- URLs for Storefront, Back Office, Merchant Portal, and Glue API contain region instead of store name. For example–the URL of the Back Office is `https://backoffice.eu.mysprykershop.com` instead of `https://backoffice.de.mysprykershop.com`. - -- RabbitMQ virtual hosts contain region instead of store. For example–`eu-docker` instead of `de-docker`. - -![rabbitmq-virtual-hosts-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-non-dms.png) - -![rabbitmq-virtual-hosts-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-dms.png) - -- Jenkins job names contain region instead of store. For example–`EU_queue-worker-start` instead of `DE_queue-worker-start`. - -![jenkins-jobs-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-non-dms.png) - -![jenkins-jobs-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-dms.png) - -- Elasticsearch indexes contain store as a part of the index name for Dynamic Multistore enabled and disabled modes. - -![elasticsearch-indexes-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-non-dms.png) - -![elasticsearch-indexes-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-dms.png) - -- Redis keys contain store as a part of the key name for Dynamic Multistore enabled and disabled modes. - -- When Dynamic Multistore is enabled, customers can switch between available stores for a region. When a customer changes a store, it's set to the `_store` query parameter. Using the query parameter, the store is added to session under the `current_store` key. It's used for fetching store-related data. - -![storefront-store-switcher](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/storefront-store-switcher.png) \ No newline at end of file diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md index ab2a8e05754..74b38fbe3c4 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/dynamic-multistore-feature-overview.md @@ -106,7 +106,168 @@ To avoid manually assigning entities in the Back Office, you can assign them usi ## Differences in modes -[Dynamic Multistore mode ON and OFF difference](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). +## Deployment file difference + +### Environment variable section + +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy.dynamic-store-off -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r production.dynamic-store-off --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive.dynamic-store-off --no-ansi -vvv' +SPRYKER_YVES_HOST_DE: de.{{DOMAIN_ZONE}} +SPRYKER_YVES_HOST_AT: at.{{DOMAIN_ZONE}} +``` + +changed to: + +```yaml +SPRYKER_HOOK_BEFORE_DEPLOY: 'vendor/bin/install -r pre-deploy -vvv' +SPRYKER_HOOK_AFTER_DEPLOY: 'true' +SPRYKER_HOOK_INSTALL: 'vendor/bin/install -r dynamic-store --no-ansi -vvv' +SPRYKER_HOOK_DESTRUCTIVE_INSTALL: 'vendor/bin/install -r destructive --no-ansi -vvv' +SPRYKER_DYNAMIC_STORE_MODE: true +SPRYKER_YVES_HOST_EU: yves.eu.{{DOMAIN_ZONE}} +``` + +### Regions section + +```yaml +regions: + stores: + DE: + services: + broker: + namespace: de_queue + key_value_store: + namespace: 1 + search: + namespace: de_search + session: + namespace: 2 + AT: + services: + broker: + namespace: at_queue + key_value_store: + namespace: 3 + search: + namespace: at_search + session: + namespace: 4 +``` +converted to: + +```yaml +regions: + broker: + namespace: eu-docker + key_value_store: + namespace: 1 + search: + namespace: eu_search +``` + + +### Applications section + +{% info_block infoBox "Info" %} +The same pattern is valid for all applications +{% endinfo_block %} + +```yaml + mportal: + application: merchant-portal + endpoints: + mp.de.{{DOMAIN_ZONE}}: + entry-point: MerchantPortal + store: DE + primal: true + services: + session: + namespace: 7 + mp.at.{{DOMAIN_ZONE}}: + entry-point: MerchantPortal + store: AT + services: + session: + namespace: 8 +``` + +converted to: + +```yaml +mportal: + application: merchant-portal + endpoints: + mp.eu.{{DOMAIN_ZONE}}: + region: EU + <<: *frontend-auth + entry-point: MerchantPortal + primal: true + services: + session: + namespace: 7 +``` + +{% info_block infoBox "Verification" %} +Please make sure that you've migrated all the application by the pattern provided above. +{% endinfo_block %} + +{% info_block infoBox "Info" %} +The domain structure is changed to have an ability to switch between stores withing one domain. +{% endinfo_block %} + +## Difference in console commands execution + +In disabled Dynamic Multistore mode, console commands which somehow depends on store, were executed with `APPLICATION_STORE` environment variable, example: + +```shell +APPLICATION_STORE=DE console search:setup:sources +``` + +In Dynamic Multistore mode, all the store aware console commands should be executed with `--store` parameter, example: + +```shell +console search:setup:sources --store=DE +``` + +In case if store is not provided as a parameter, the command is executed for all stores within the current region. + +For the custom console commands please follow the next rules: +- `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. +- All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. +- It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. + +## How Dynamic Multistore affects a project + +In this example, EU region has DE and AT stores. US region has a US store. Dynamic Multistore introduces the following changes in this setup: + +- URLs for Storefront, Back Office, Merchant Portal, and Glue API contain region instead of store name. For example–the URL of the Back Office is `https://backoffice.eu.mysprykershop.com` instead of `https://backoffice.de.mysprykershop.com`. + +- RabbitMQ virtual hosts contain region instead of store. For example–`eu-docker` instead of `de-docker`. + +![rabbitmq-virtual-hosts-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-non-dms.png) + +![rabbitmq-virtual-hosts-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/rabbitmq-virtual-hosts-dms.png) + +- Jenkins job names contain region instead of store. For example–`EU_queue-worker-start` instead of `DE_queue-worker-start`. + +![jenkins-jobs-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-non-dms.png) + +![jenkins-jobs-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/jenkins-jobs-dms.png) + +- Elasticsearch indexes contain store as a part of the index name for Dynamic Multistore enabled and disabled modes. + +![elasticsearch-indexes-non-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-non-dms.png) + +![elasticsearch-indexes-dms](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/elasticsearch-indexes-dms.png) + +- Redis keys contain store as a part of the key name for Dynamic Multistore enabled and disabled modes. + +- When Dynamic Multistore is enabled, customers can switch between available stores for a region. When a customer changes a store, it's set to the `_store` query parameter. Using the query parameter, the store is added to session under the `current_store` key. It's used for fetching store-related data. + +![storefront-store-switcher](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.md/storefront-store-switcher.png) ## Data import performance diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md index a94f91861b4..e64ed78183f 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/faq.md @@ -24,11 +24,11 @@ In both cases, the applications works with the several stores within the one reg * Backoffice, MerchantPortal operates with data from all the stores within the specific region without requirement to provide the specific store. * Storefront and GlueStorefront (as well as Glue) requires store to operate, and operates within only one provided store. (If store is not provided explicitly, the default one is used.) -[See more details](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). +[See more details](/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.html). ### Infrastructure in PaaS: is there anything that needs to be done in PaaS? -The only difference is in the deployment files. More details that can be found [here](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/difference-between-modes.html). +The only difference is in the deployment files. More details that can be found [here](/docs/pbc/all/dynamic-multistore/base-shop/dynamic-multistore-feature-overview.html). ### How store-specific entities should be managed in Data Exchange API? From a1c3ee863a914f770edf26fc90acfed0848e31a8 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 11 Dec 2024 11:34:46 +0200 Subject: [PATCH 097/199] comments --- .../algolia/algolia-personalization.md | 26 ++++++++++++------- .../algolia/algolia.md | 7 ++--- .../algolia/configure-algolia.md | 2 +- .../algolia/customize-algolia.md | 24 ++++++++--------- .../algolia/integrate-algolia.md | 9 +++---- 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md index 2f0711ab2f6..f83e06e0921 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md @@ -32,7 +32,7 @@ By default, Spryker supports Algolia Personalization only for Yves. To integrate ```bash composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.2 ``` -If the command doesn't work, try running the following command: `composer require --with-dependencies spryker-shop/traceable-event-widget:^1.0.2 --with-all-dependencies`. +If the command doesn't work, try running it with the `--with-all-dependencies` flag. 2. Update Spryker packages: @@ -43,7 +43,8 @@ spryker-shop/home-page:^1.2.0 spryker-shop/payment-page:^1.5.0 spryker-shop/prod spryker-shop/product-review-widget:^1.16.1 spryker-shop/product-set-detail-page:^1.11.0 spryker-shop/quick-order-page:^4.10.1 \ spryker-shop/shop-ui:^1.82.0 ``` -if the command doesn't work, try running it with the `--with-all-dependencies` flag. + +If the command doesn't work, try running it with the `--with-all-dependencies` flag. ### Enable features @@ -104,7 +105,7 @@ npm i search-insights ## Test and configure Yves customizations to work with Algolia Personalization -If you customized Yves templates on the project level (`src/Pyz/Yves/`), some events may not trigger or trigger with incorrect data. +If you customized Yves templates on the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level) (`src/Pyz/Yves/`), some events may not trigger or trigger with incorrect data. ### Run the project in a testing environment @@ -163,17 +164,17 @@ Order Success page cases: | - | - | | Open the **Order Success** page | `PAGE_LOAD` with currency, order total, SKUs, prices, and quantities of purchased products. | -To view a full list of available events, refer to the `traceable-events-algolia` [Readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). +For a full list of available events, see the [traceable-events-algolia readme file](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-algolia/README.md). ### Common issues and solutions -#### Prerequisites +This section common issues to event and solutions. Most solutions involve adding, changing, and fixing events on the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level). -If you need to add, change, or fix events on the [project level](https://docs.spryker.com/docs/dg/dev/frontend-development/202410.0/yves/atomic-frontend/managing-components/overriding-components.html#create-component-folder-on-project-level), start with these steps: +#### Prerequisites -1. Locate the page template or view that is used for the current page. -2. On the project level, override the `{% raw %}{% block eventTracker %}{% endraw %}` block in your project’s template. +1. Locate the page template or view that is used for the page with faulty events. +2. On the project level, override the `{% raw %}{% block eventTracker %}{% endraw %}` block in the template. For details on the event configuration API, see the [traceable-events-orchestrator README](https://github.com/spryker-shop/traceable-event-widget/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). @@ -202,7 +203,7 @@ If an event isn't firing, verify that the action, like `click` or `change`, is c Configuration for built-in components is provided by default. For more details, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). -2. Check the Event Selector. CSS selectors are provided by default. If you've changed selectors, update the configuration accordingly. +2. Check the Event Selector. CSS selectors are provided by default. If you changed selectors, update the configuration accordingly: ```twig {% raw %}{% block eventTracker %}{% endraw %} @@ -249,6 +250,9 @@ You can view event payload in the console under `Adapter Data:`. If payload is i * Adjust the configuration for dynamic data for the needed triggers. +
    + Dynamic data configuration example + ```twig {% raw %}{% set events = {{% endraw %} list: events.list | merge([{ @@ -321,6 +325,8 @@ You can view event payload in the console under `Adapter Data:`. If payload is i #} ``` +
    + For more information, see [API documentation](https://github.com/spryker-shop/traceable-event-widget/blob/master/src/SprykerShop/Yves/TraceableEventWidget/Theme/default/components/molecules/traceable-events-orchestrator/README.md). @@ -351,7 +357,7 @@ By accepting, you allow us to capture anonymous events for personalization, anal 1. Deploy to a testing environment. 2. In the Back Office, go to **Apps** and verify that Algolia is connected and configured. 3. If you've previously been using the Algolia App, in the Back Office, disconnect and connect it again with the same Algolia credentials. - This action updates your Spryker shop config to be able to send events to Algolia. + This action updates your project config to be able to send events to Algolia. 3. On the Storefront, do the following as a guest user: * Search products diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md index e03abcbaffc..cc9f4620320 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia.md @@ -29,11 +29,12 @@ Your users can search for active concrete products by the following attributes: - Name - Description - Keywords -- or any other attribute that your products have (when it's configured in Algolia Dashboard) -{% info_block infoBox "Note" %} +In Algolia Dashboard, you can configure other attributes to be searchable. -Spryker groups all concrete products that belong to the same abstract product if a search query returns the concrete products. +{% info_block infoBox "" %} + +In search results, Spryker groups all concrete products belonging to the same abstract product. {% endinfo_block %} diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index 2425bff4af3..ae528c611cd 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -11,7 +11,7 @@ Once you have [integrated the Algolia app](/docs/pbc/all/search/{{page.version}} ## Prerequisites -To sign up for Algolia, contact our sales team. +To sign up for Algolia, contact your Customer Success Manager. ## Configure Algolia diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md index 2d457dcabff..d23ec3d787c 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/customize-algolia.md @@ -6,13 +6,13 @@ template: howto-guide-template --- -The default Algolia app configuration mimics the default Spryker search configuration. However, you may want to adjust some of those settings to your needs. +The default Algolia app configuration is similar to the default Spryker search configuration. You might want to customize that configuration. -## Overview of searchable attributes +## Searchable attributes ![algolia-searchable-attributes](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-searchable-attributes.png) -Algolia's **Searchable attributes** configuration determines which attributes are used to find results while searching with a search query. +**Searchable attributes** configuration defines the attributes used to find results while searching with a search query. Default fields for searchable attributes are the following: - `sku` @@ -24,12 +24,12 @@ Default fields for searchable attributes are the following: - `keywords` - `attributes.brand` -## Adjust the searchable attributes list in Algolia +## Add and remove searchable attributes -1. In the side pane, go to **Search > Index**. +1. In Algolia Dashboard, go to **Search > Index**. 2. Open the Algolia indices list and find all primary indices. 3. On the **Configuration** tab, select **Searchable attributes**. -4. To adjust the **Searchable attributes** list, add and remove needed searchable attributes. +4. In the **Searchable attributes** list, add and remove needed searchable attributes. 5. Click **Review and save settings**. This opens the **Review and save settings** window. 6. Enable **Copy these settings to other indices and/or replicas** and click **Save settings**. @@ -39,9 +39,9 @@ You can add additional data to exported products using the pre-configured `searc ### Filling in the `searchMetadata` field -There're multiple ways of adding search metadata. For the sake of an example, we'll implement `ProductConcreteExpanderPlugin`. +There're multiple ways of adding search metadata. This section shows how to implement `ProductConcreteExpanderPlugin` as an example. -Create a new plugin implementing `ProductConcreteExpanderPluginInterface`. Then you can add any logic inside that plugin's `expand` method to add necessary metadata to ProductConcrete transfers: +Create a new plugin implementing `ProductConcreteExpanderPluginInterface`. To add needed metadata to `ProductConcrete` transfers, you can add any logic inside that plugin's `expand` method: ```php @@ -86,11 +86,11 @@ The `searchMetadata` field must be an associative array. Allowed values are all Algolia product object `searchMetadata` field is a simple object that can be used in any index configuration just like any other field. -## Overview of facets list +## Facets ![algolia-facets](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/configure-algolia/algolia-facets.png) -Algolia **Facets** configuration determines which attributes are used for search faceting. +**Facets** configuration defines the attributes used for search faceting. Default attributes for faceting are as follows: - `attributes.brand` @@ -105,11 +105,11 @@ The `prices` attribute is an object with nested fields. Algolia creates facets f ### Facet configuration -Algolia uses facets for categorizing and grouping your data. +Algolia uses facets for categorizing and grouping data. #### Facet display -All configured index facets will be displayed in the list of filter on Yves or via Glue API `/catalog-search`. +All configured index facets are displayed in the list of filter on Yves or via Glue API `/catalog-search`. Algolia app supports the `renderingContent` feature, which can be found in an index "Configuration > Facet display". Here you can configure the order of facets and add only for end-users relevant facets. diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md index fe270a461c9..f4a380d4a22 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md @@ -15,7 +15,7 @@ This document describes how to integrate [Algolia](/docs/pbc/all/search/{{page.v - [Install prerequisites and enable ACP](/docs/dg/dev/acp/install-prerequisites-and-enable-acp.html) -- In the Back Office, go to **Apps**-> **Algolia**. Install or update the packages required for Algolia. Example: +- In the Back Office, go to **Apps**>**Algolia**. Install or update the packages required for Algolia. Example: ![list-of-algolia-modules](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/algolia/integrate-algolia/list-of-algolia-modules.png) @@ -706,10 +706,9 @@ When integrating Algolia, you should keep in mind some peculiarities of the Sear ### SearchHTTP plugins setup -Spryker's `SearchHTTP` module transfers Glue search requests to external search providers, one of which is Algolia. -The `SearchHTTP` query is built using the `QueryExpanderPlugin` classes. Their order is defined in the `CatalogDependencyProvider::createCatalogSearchQueryExpanderPluginVariants()` method. -The order of execution of those plugins might be customized on the project level. -By default, all module-specific query builder plugins will be executed before parsing `GET` query parameters, so any `GET` query parameters may overwrite search query parameters set before. +Spryker's `SearchHTTP` module transfers Glue search requests to external search providers like Algolia. The `SearchHTTP` query is built using the `QueryExpanderPlugin` classes. Their order is defined in the `CatalogDependencyProvider::createCatalogSearchQueryExpanderPluginVariants()` method. + +The order of execution of those plugins can be customized on the project level. By default, all module-specific query builder plugins are executed before parsing `GET` query parameters, so any `GET` query parameters may overwrite search query parameters set before. ## Next steps From 91dd449501981777c870e5b4c098fefc42929c9e Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 11 Dec 2024 12:28:14 +0200 Subject: [PATCH 098/199] Update enable-dynamic-multistore.md --- .../202410.0/enable-dynamic-multistore.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md index f568a36719f..04909479190 100644 --- a/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/enable-dynamic-multistore.md @@ -1,28 +1,27 @@ -This document describes how to enable [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/dynamic-multistore-feature-overview.html) on the demoshop version 202307.0 or above. +This document describes how to enable [Dynamic Multistore](/docs/pbc/all/dynamic-multistore/{{page.version}}/base-shop/dynamic-multistore-feature-overview.html). -## Enable Dynamic Multistore +## Prerequisites -{% info_block warningBox "Project version" %} -If your project version is below 202307.0, you need to install Dynamic Multistore feature first, use instructions provided at [Install Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/install-dynamic-multistore.html) page. -{% endinfo_block %} +If your project version is below 202307.0, [Install Dynamic Multistore](/docs/pbc/all/dynamic-multistore/202410.0/base-shop/install-dynamic-multistore.html). -### Here are the steps that needs to be performed to enable Dynamic Multistore. +### Enable Dynamic Multistore {% info_block warningBox "Staging environment" %} - Make sure that **all** steps below are performed (and fully tested) on staging before applying it on production setup, to avoid unexpected downtime and data loss. +To avoid unexpected downtime and data loss, perform and test *all* of the following steps in a staging environment first. {% endinfo_block %} -1. Methods `StoreClient::getCurrentStore()`, `StoreFacade::getCurrentStore()` are available only in `GlueStorefront` and `Storefront` applications. For other applications (see list below) replace them with the following methods `StoreStorageClient:getStoreNames()`, `StoreStorageClient::findStoreByName()` or `StoreFacade::getStoreCollection()`. + +1. Replace `StoreClient::getCurrentStore()` and `StoreFacade::getCurrentStore()` methods with `StoreStorageClient:getStoreNames()`, `StoreStorageClient::findStoreByName()`, or `StoreFacade::getStoreCollection()` in the following applications: * Backoffice * MerchantPortal * Console Commands * Gateway * BackendAPI -2. Update your custom console commands (if any) to meet the following rules: -- `Store(Facade|Client)::getCurrentStore()` should never be used in the code that console command executes. -- All store aware commands should implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for specific store if store parameter is provided, or for all the stores in the region otherwise. +2. If you have custom console commands, update them to meet the following rules: +- `Store(Facade|Client)::getCurrentStore()` isn't used in the code a console command executes. +- All store-aware commands implement `Spryker\Zed\Kernel\Communication\Console\StoreAwareConsole` and execute actions for a specific store if a store parameter is provided; if not provided, actions are executed for all the stores in the region. - It is recommended to use `--store` parameter instead of `APPLICATION_STORE` env variable, despite the support of env variable still exists. 3. Be aware that after enabling Dynamic Multistore mode, your basic domain structure will change from store to region for all the applications(Example https://yves.de.mysprykershop.com => https://yves.eu.mysprykershop.com), make sure that it is expected. If external systems are impacted by this - necessary redirects are set, so SEO of your site is not impacted. 4. The Dynamic Store feature itself does not require any database changes, in case you've already migrated to the latest demoshop version. From b7f069f30233be598dea221fc251e5ff88f34f29 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Wed, 11 Dec 2024 11:46:37 +0000 Subject: [PATCH 099/199] PBC Search SEO Update Meta desc changed to search pages for an SEO update; - base shop > best practices > personalization dynamic pricing - base shop > best practices > precise search by super attributes - base shop > best practices > search best practices - base shop > import and export data > import file details product search attribute map csv - base shop > import and export data > import file details product search attribute csv - base shop > import and export data > search data import - base shop > install and upgrade > install features and glue api > install the catalog category management feature - base shop > install and upgrade > install features and glue api > install the catalog glue api - base shop > install and upgrade > install features and glue api > install the search widget for concrete products - base shop > install and upgrade > search migration concept - base shop > install and upgrade > upgrade modules > upgrade the category page search module - base shop > install and upgrade > upgrade modules > upgrade the cms page search module - base shop > install and upgrade > upgrade modules > upgrade the elastica module - base shop > install and upgrade > upgrade modules > upgrade the product label search module - base shop > install and upgrade > upgrade modules > upgrade the product page search module - base shop > install and upgrade > upgrade modules > upgrade the product review search module - base shop > install and upgrade > upgrade modules > upgrade the product set page search module - base shop > manage in the back office > best practices promote products with search preferences - base shop > manage in the back office > category filters > reorder category filters - base shop > manage in the back office > define search preferences - base shop > manage in the back office > edit search preferences - base shop > manage in the back office > filter preferences > edit filter preferences - base shop > manage in the back office > filter preferences > reorder filter preferences - base shop > manage in the back office > manage filters and search preferences in the back office - base shop > manage in the back office > search feature overview - base shop > manage in the back office > search types overview - base shop > manage in the back office > standard filters overview - base shop > third party integrations > algolia > configure algolia - base shop > third party integrations > algolia > disconnect algolia - base shop > third party integrations > algolia > getting access to algolia dashboard - base shop > third party integrations > algolia > integrate algolia - base shop > tutorials and how tos > configure a search query - base shop > tutorials and how tos > configure a search for multi currency - base shop > tutorials and how tos > expand search data - base shop > tutorials and how tos > facet filter overview and configuration - marketplace > glue api search the product catalog - search --- .../base-shop/best-practices/personalization-dynamic-pricing.md | 2 +- .../best-practices/precise-search-by-super-attributes.md | 2 +- .../202410.0/base-shop/best-practices/search-best-practices.md | 2 +- .../import-file-details-product-search-attribute-map.csv.md | 1 + .../import-file-details-product-search-attribute.csv.md | 1 + .../base-shop/import-and-export-data/search-data-import.md | 2 +- .../install-the-catalog-category-management-feature.md | 1 + .../install-the-catalog-glue-api.md | 2 +- .../install-the-search-widget-for-concrete-products.md | 1 + .../base-shop/install-and-upgrade/search-migration-concept.md | 1 + .../upgrade-modules/upgrade-the-categorypagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-cmspagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-elastica-module.md | 2 +- .../upgrade-modules/upgrade-the-productlabelsearch-module.md | 1 + .../upgrade-modules/upgrade-the-productpagesearch-module.md | 1 + .../upgrade-modules/upgrade-the-productreviewsearch-module.md | 1 + .../upgrade-modules/upgrade-the-productsetpagesearch-module.md | 1 + .../best-practices-promote-products-with-search-preferences.md | 2 +- .../category-filters/reorder-category-filters.md | 2 +- .../manage-in-the-back-office/define-search-preferences.md | 2 +- .../manage-in-the-back-office/edit-search-preferences.md | 2 +- .../filter-preferences/edit-filter-preferences.md | 2 +- .../filter-preferences/reorder-filter-preferences.md | 2 +- .../manage-filters-and-search-preferences-in-the-back-office.md | 2 +- .../search-feature-overview/search-feature-overview.md | 1 + .../base-shop/search-feature-overview/search-types-overview.md | 1 + .../search-feature-overview/standard-filters-overview.md | 1 + .../third-party-integrations/algolia/configure-algolia.md | 2 +- .../third-party-integrations/algolia/disconnect-algolia.md | 2 +- .../algolia/getting-access-to-algolia-dashboard.md | 2 +- .../third-party-integrations/algolia/integrate-algolia.md | 2 +- .../base-shop/tutorials-and-howtos/configure-a-search-query.md | 2 +- .../tutorials-and-howtos/configure-search-for-multi-currency.md | 2 +- .../base-shop/tutorials-and-howtos/expand-search-data.md | 2 +- .../facet-filter-overview-and-configuration.md | 2 +- .../202410.0/marketplace/glue-api-search-the-product-catalog.md | 2 +- docs/pbc/all/search/202410.0/search.md | 2 +- 37 files changed, 37 insertions(+), 23 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md index 8e602ea79f9..8f58b1fdc68 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/personalization-dynamic-pricing.md @@ -1,6 +1,6 @@ --- title: "Personalization: dynamic pricing" -description: This document describes how to personalize pricing. +description: This document describes how to personalize your Spryker based shop with dynamic pricing. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/personalization-dymanic-pricing diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md index e299fb3bd8c..dbceba2d98f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/precise-search-by-super-attributes.md @@ -1,6 +1,6 @@ --- title: Precise search by super attributes -description: This document describes precise search by super attributes +description: This document describes how to create precise search by using super attributes in your Spryker based shop. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/precise-search-by-super-attributes diff --git a/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md b/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md index c76210a14d6..bfec72a45d7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md +++ b/docs/pbc/all/search/202410.0/base-shop/best-practices/search-best-practices.md @@ -1,6 +1,6 @@ --- title: Search best practices -description: A collection of best practices for Spryker Commerce OS Search. +description: A collection of best practices for on site search within your Spryker Cloud Commerce OS shop. template: concept-topic-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md index 1e1dc0fc35f..7a422963ad9 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute-map.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_search_attribute_map.csv" +description: Learn how to confgiure product searh attribute map in your Spryker shop using the product search attribute map csv file. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-product-search-attribute-mapcsv diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md index 9ed3546e020..cf6f5f917f0 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/import-file-details-product-search-attribute.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_search_attribute.csv" +description: Learn how to configure Product Search Attribute Information using the product search attribute csv file in your Spryker based projects. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-product-search-attributecsv diff --git a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md index 96444217e09..e289f256da1 100644 --- a/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md +++ b/docs/pbc/all/search/202410.0/base-shop/import-and-export-data/search-data-import.md @@ -1,6 +1,6 @@ --- title: Search data import -description: Details about data import files for the Search PBC +description: Learn how data import works and the different methods and files for the Search module within your Spryker projects. template: concept-topic-template last_updated: Jul 23, 2023 --- diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md index 6bdc3f9283e..ca50c8d7214 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-category-management-feature.md @@ -1,5 +1,6 @@ --- title: Install the Catalog + Category Management feature +description: learn how to install the Spryker Catalog + Category Management Feature in to your Spryker based project. last_updated: Jul 6, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/catalog-category-management-feature-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md index cbf3faa4160..35da26c8548 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-catalog-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Catalog Glue API -description: Use the guide to install the Glue Catalog feature in your project. +description: Use the guide to learn how to install the Spryker Glue Catalog feature in to your Spryker based project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/catalog-api-feature-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md index abb498de793..58b1c978446 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/install-features-and-glue-api/install-the-search-widget-for-concrete-products.md @@ -1,5 +1,6 @@ --- title: Install the Search Widget for Concrete Products feature +description: Learn how you can install the search widget for concrete products feature in your Spryker Project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-widget-for-concrete-products-integration diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md index 418350f7677..9e50f95754b 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/search-migration-concept.md @@ -1,5 +1,6 @@ --- title: Search migration concept +description: Learn about upgrading to a new Elasticsearch version or learn how to migrate to a different search provider within your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-migration-concept diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md index b081650464e..619df37c61d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-categorypagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the CategoryPageSearch module +description: learn how to upgrade to a newer version of the Category Page Search module within your Spryker based projects. last_updated: Jun 22, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-categorypagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md index 5c85481ed3c..7d1a1c495f7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-cmspagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the CmsPageSearch module +description: learn how to upgrade to a newer version of the CMS Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-cmspagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md index aa56d1d294e..f7236257c2e 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-elastica-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Elastica module -description: Learn how to upgrade the Elastica module to a newer version +description: learn how to upgrade to a newer version of the Elastica module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-elastica diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md index 273794e1a62..2ff841fa5fb 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productlabelsearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductLabelSearch module +description: learn how to upgrade to a newer version of the Product Label Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productlabelsearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md index da6f29bd6db..8adda713ea9 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productpagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductPageSearch module +description: learn how to upgrade to a newer version of the Product Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productpagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md index ec23cd18c55..9b01bbe8c4d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productreviewsearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductReviewSearch module +description: Learn how to upgrade to a newer version of the Product Review Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productreviewsearch diff --git a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md index 16ced2adecb..c79abc64644 100644 --- a/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md +++ b/docs/pbc/all/search/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-productsetpagesearch-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductSetPageSearch module +description: Learn how to upgrade to a newer version of the Product Set Page Search module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-productsetpagesearch diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md index 079a04e7655..aee84f6ff56 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/best-practices-promote-products-with-search-preferences.md @@ -1,6 +1,6 @@ --- title: "Best practices: Promote products with search preferences" -description: Learn how to edit search preferences in the Back Office +description: Learn how to edit search preferences in the Spryker Back Office using this best practices guide for your Spryker projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md index d813654f616..584361e795f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/category-filters/reorder-category-filters.md @@ -1,6 +1,6 @@ --- title: Reorder category filters -description: Learn how to reorder category filters in the Back Office +description: Learn how to reorder category filters directly in the Back Office of your spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md index 71e5feb165f..c97453d4ce3 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/define-search-preferences.md @@ -1,6 +1,6 @@ --- title: Define search preferences -description: Learn how to define search preferences in the Back Office +description: Learn how to define search preferences directly in the Back Office of your Spryker based projects. last_updated: Aug 4, 2021 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-search-preferences diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md index 0f89ac89d9b..e704b849ad7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/edit-search-preferences.md @@ -1,6 +1,6 @@ --- title: Edit search preferences -description: Learn how to edit search preferences in the Back Office +description: Learn how to edit search preferences directly in the Back Office for your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md index cf5708271f7..dc741c598fd 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/edit-filter-preferences.md @@ -1,6 +1,6 @@ --- title: Edit filter preferences -description: Learn how to edit filter preferences in the Back Office +description: Learn how to edit filter preferences directly in the Back Office of your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md index 5d4034d211f..7dcf65518de 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/filter-preferences/reorder-filter-preferences.md @@ -1,6 +1,6 @@ --- title: Reorder category filters -description: Learn how to reorder category filters in the Back Office +description: Learn how to reorder category filters directly in the Back Office of your Spryker based projects. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md index 24f1d55a53d..c84eb2e1e15 100644 --- a/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md +++ b/docs/pbc/all/search/202410.0/base-shop/manage-in-the-back-office/manage-filters-and-search-preferences-in-the-back-office.md @@ -1,6 +1,6 @@ --- title: Manage filters and search preferences in the Back Office -description: Learn how to log into the Back Office. +description: Learn how to manage filters and search preferences directly in the Back Office of your Spryker based projects. last_updated: Apr 13, 2023 template: back-office-user-guide-template redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md index b0e978318f2..21cdd207900 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-feature-overview.md @@ -1,5 +1,6 @@ --- title: Search feature overview +description: Learn everything you need to know about the Spryker Search Feature with this helpful overview. last_updated: Jul 6, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/search-summary diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md index 458e4f639a6..67a080b438c 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/search-types-overview.md @@ -1,5 +1,6 @@ --- title: Search types overview +description: Learn about the default search type options that come out of the box of Spryker Cloud Commerce OS. last_updated: Jul 8, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/search-types-overview diff --git a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md index 819bf339e97..2b02dedccc7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md +++ b/docs/pbc/all/search/202410.0/base-shop/search-feature-overview/standard-filters-overview.md @@ -1,5 +1,6 @@ --- title: Standard filters overview +description: Learn about the Standard filters that helps customers to narrow down products they are looking for in your Spryker Cloud Commerce OS Shop. last_updated: Jul 8, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/standard-filters-overview diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md index b865b779042..9b7dfc46edc 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/configure-algolia.md @@ -1,6 +1,6 @@ --- title: Configure Algolia -description: Find out how you can configure Algolia in your Spryker shop +description: Learn how you can configure and integrate Spryker Third party Algolia in to your Spryker based projects. last_updated: Feb 21 2023 template: howto-guide-template redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md index f66cb03204b..3cb72cd95fa 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/disconnect-algolia.md @@ -1,6 +1,6 @@ --- title: Disconnect Algolia -description: Find out how you can disconnect Algolia from your Spryker shop +description: Learn how you can disconnect Spryker Third party Algolia in to your Spryker based projects. template: howto-guide-template last_updated: Feb 23, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md index 204f6300c99..658afe70437 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.md @@ -1,6 +1,6 @@ --- title: Getting access to Algolia dashboard -description: Submit a ticket to get access to Algolia dashboard +description: Learn how you can submit a ticket to get access to your Algolia dashboard for your Spryker based shop. template: concept-topic-template --- diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md index 32babd0d325..353974cfb6d 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia.md @@ -1,6 +1,6 @@ --- title: Integrate Algolia -description: Find out how you can integrate Algolia into your Spryker shop +description: Learn how you can integrate Spryker Third party Algolia in to your Spryker based projects. template: howto-guide-template last_updated: Jan 09, 2024 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md index 863990b1210..a061481f8b7 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-a-search-query.md @@ -1,6 +1,6 @@ --- title: Configure a search query -description: This document explains how to configure a search query. +description: This document explains how to configure a search query for your Spryker based shop. last_updated: Jul 29, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-search-query diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md index a00449c19ab..1bf64206f64 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-search-for-multi-currency.md @@ -1,6 +1,6 @@ --- title: Configure search for multi-currency -description: This document describes how to configure search for multi-currency. +description: This document describes how to configure search for multi-currency within your Spryker based shop. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-multi-currency diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md index ac4bad259e1..15afa3bde68 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/expand-search-data.md @@ -1,6 +1,6 @@ --- title: Expand search data -description: Learn how to expand entity data and create new data types in the search. +description: Learn how to expand entity data and create new data types in the search for your Spryker based projects. template: howto-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md index b119f5c3c45..f520a383a85 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/facet-filter-overview-and-configuration.md @@ -1,6 +1,6 @@ --- title: Facet filter overview and configuration -description: Facets provide aggregated data based on a search query. +description: Learn how to configure Facet filters allowing customers to quickly locate products within your Spryker shop. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/t-working-filter-facets diff --git a/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md b/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md index e7d0af32e30..cdde7ae0cc7 100644 --- a/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md +++ b/docs/pbc/all/search/202410.0/marketplace/glue-api-search-the-product-catalog.md @@ -1,6 +1,6 @@ --- title: "Glue API: Search the product catalog" -description: Search the product catalog via Glue API +description: Learn how you can Search the product catalog via Glue API within your Spryker based projects. template: glue-api-storefront-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/search/202410.0/search.md b/docs/pbc/all/search/202410.0/search.md index 82986e7619e..e6daa8faa2e 100644 --- a/docs/pbc/all/search/202410.0/search.md +++ b/docs/pbc/all/search/202410.0/search.md @@ -1,6 +1,6 @@ --- title: Search -description: Search PBC lets you manage the search on the Storefront +description: Learn everything you need to know about the Spryker Search Feature for your Spryker Cloud Commerce OS or Spryker Marketplace shop. template: concept-topic-template last_updated: Nov 21, 2023 --- From 17c98e65986e17d03684047e65a6e89a6fb9c17e Mon Sep 17 00:00:00 2001 From: dimitriyTsemma Date: Wed, 11 Dec 2024 16:40:14 +0200 Subject: [PATCH 100/199] FRW-7936 Refactored after TW review --- .../202410.0/install-dynamic-multistore.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index c165d145155..29c0c2f67f0 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1587,15 +1587,11 @@ Enable the following behaviors by registering the plugins and Twig command: |GeneratePathTwigPlugin| Wrapper on Symfony Router `generate()` function. ||SprykerShop\Yves\ShopUi\Plugin\Twig| +In the `RouterDependencyProvider::getRouterEnhancerPlugins()` stack, the plugin execution order has been updated to reflect changes in how URL prefixes are structured. -{% info_block warningBox "Verification" %} - -In the RouterDependencyProvider::getRouterEnhancerPlugins() stack, the order of plugin execution has changed: -• By default store name placed before the language prefix in the URL. Example: `https://yves.eu.mysprykershop.com/DE/en/`. -• So the `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin`. -• Ensure your plugin stack reflects this updated order to maintain the correct routing behavior. - -{% endinfo_block %} +By default, the store name appears before the URL's language prefix. For example: `https://yves.eu.mysprykershop.com/DE/en/` +To support this change in URL structure, the `StorePrefixRouterEnhancerPlugin` must now be executed before the `LanguagePrefixRouterEnhancerPlugin` in the plugin stack. This ensures that the store prefix is processed first, followed by the language prefix. Failing to update this order might result in incorrect routing behavior, where language and store prefixes could be misinterpreted or improperly structured in the URL. +Verify the plugin stack in `RouterDependencyProvider::getRouterEnhancerPlugins()` and ensure that the `StorePrefixRouterEnhancerPlugin` precedes the `LanguagePrefixRouterEnhancerPlugin`. Adjusting the order of these plugins is necessary to maintain proper URL generation and routing consistency across the application. **src/Pyz/Yves/Router/RouterDependencyProvider.php** From c70b4702a573dcbc7caa86dd7c19d2494b1e730b Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 08:26:51 +0000 Subject: [PATCH 101/199] PBC Service Point SEO Update following pages amended meta desc for an SEO update; - service point management - unified commerce > enable click and collect - unified commerce > service points cart checkout feature overview - unified commerce > service points cart feature overview - unified commerce > service points feature overview - unified commerce > service points order management - unified commerce > import and export data > import file details service point address csv - unified commerce > import and export data > import file details service point store csv - unified commerce > import and export data > import file details service point csv - unified commerce > import and export data > import file details service type csv - unified commerce > import and export data > import file details service csv - unified commerce > install features > install the service points cart feature - unified commerce > install features > install the service points feature - unified commerce > manage using glue api > manage service point address > glue api add service point addresses - unified commerce > manage using glue api > manage service point address > glue api retrieve service point addresses - unified commerce > manage using glue api > manage service point address > glue api update service point addresses - unified commerce > manage using glue api > manage service points > glue api retrieve service points - unified commerce > manage using glue api > manage service points > glue api add service points - unified commerce > manage using glue api > manage service points > glue api update service points - unified commerce > manage using glue api > manage service types > glue api add service types - unified commerce > manage using glue api > manage service types > glue api retrieve service types - unified commerce > manage using glue api > manage service types > glue api update service types - unified commerce > manage using glue api > manage services > glue api add services - unified commerce > manage using glue api > manage services > glue api retrieve services - unified commerce > manage using glue api > manage services > glue api update services --- .../202410.0/service-point-management.md | 2 +- .../202410.0/unified-commerce/enable-click-collect.md | 2 +- .../import-file-details-service-point-address.csv.md | 1 + .../import-file-details-service-point-store.csv.md | 1 + .../import-file-details-service-point.csv.md | 1 + .../import-file-details-service-type.csv.md | 1 + .../import-and-export-data/import-file-details-service.csv.md | 1 + .../install-features/install-the-service-points-cart-feature.md | 2 +- .../install-features/install-the-service-points-feature.md | 2 +- .../glue-api-add-service-point-addresses.md | 2 +- .../glue-api-retrieve-service-point-addresses.md | 2 +- .../glue-api-update-service-point-addresses.md | 2 +- .../manage-service-points/glue-api-add-service-points.md | 2 +- .../manage-service-points/glue-api-retrieve-service-points.md | 2 +- .../manage-service-points/glue-api-update-service-points.md | 2 +- .../manage-service-types/glue-api-add-service-types.md | 2 +- .../manage-service-types/glue-api-retrieve-service-types.md | 2 +- .../manage-service-types/glue-api-update-service-types.md | 2 +- .../manage-services/glue-api-add-services.md | 2 +- .../manage-services/glue-api-retrieve-services.md | 2 +- .../manage-services/glue-api-update-services.md | 2 +- .../service-points-cart-checkout-feature-overview.md | 2 +- .../unified-commerce/service-points-cart-feature-overview.md | 2 +- .../unified-commerce/service-points-feature-overview.md | 2 +- .../unified-commerce/service-points-order-management-feature.md | 2 +- 25 files changed, 25 insertions(+), 20 deletions(-) diff --git a/docs/pbc/all/service-point-management/202410.0/service-point-management.md b/docs/pbc/all/service-point-management/202410.0/service-point-management.md index b8e1ae38875..9f71e265586 100644 --- a/docs/pbc/all/service-point-management/202410.0/service-point-management.md +++ b/docs/pbc/all/service-point-management/202410.0/service-point-management.md @@ -1,6 +1,6 @@ --- title: Service Points Management -description: Service points let you provide services at offline locations. +description: Learn about the Spryker Service points feature, allowing you to provide your services at offline locations. template: concept-topic-template last_updated: Nov 23, 2023 --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/enable-click-collect.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/enable-click-collect.md index 8ec2582fc07..0b7fa2897e6 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/enable-click-collect.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/enable-click-collect.md @@ -1,6 +1,6 @@ --- title: Enable Click & Collect -description: Learn how to enable Click&Collect +description: Learn how to enable the Spryker Click&Collect feature in to your Spryker unified commerce project. last_updated: Nov 23, 2023 template: howto-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-address.csv.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-address.csv.md index 51088a10dd1..0b784864aca 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-address.csv.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-address.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: service_point_address.csv" +description: Learn how to configure service point addresses via importing data through the service point address CSV file in your Spryker unified commerce project. last_updated: Nov 23, 2023 template: data-import-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-store.csv.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-store.csv.md index e5ec414bbb5..dd256a7ddf6 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-store.csv.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point-store.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: service_point_store.csv" +description: Learn how to configure service point information via importing data through the service point store CSV file in your Spryker unified commerce project. last_updated: Nov 23, 2023 template: data-import-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point.csv.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point.csv.md index 299ddf181ab..eefeb8ad6a0 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point.csv.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-point.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: service_point.csv" +description: Learn how to configure service points information via importing data through the service point CSV file in your Spryker unified commerce project. last_updated: Nov 23, 2023 template: data-import-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-type.csv.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-type.csv.md index 37ffd4b7dd8..c0232083f90 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-type.csv.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service-type.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: service_type.csv" +description: Learn how to configure service type information via importing data through the service type CSV file in your Spryker unified commerce project. last_updated: Nov 23, 2023 template: data-import-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service.csv.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service.csv.md index a2aa54194cc..2f18f7c67ba 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service.csv.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/import-and-export-data/import-file-details-service.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: service.csv" +description: Learn how to configure service information via importing data through the service CSV file in your Spryker unified commerce project. last_updated: Nov 23, 2023 template: data-import-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-cart-feature.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-cart-feature.md index d3d36c47101..0dd7b91b077 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-cart-feature.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-cart-feature.md @@ -1,6 +1,6 @@ --- title: Install the Service Points Cart feature -description: Learn how to integrate the Service Points Cart feature into your project +description: Learn how to integrate the Service Points Cart feature into your Spryker Unified Commerce Project. last_updated: Oct 5, 2023 template: feature-integration-guide-template redirect_from: diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-feature.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-feature.md index 26267f6a272..a718300e211 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-feature.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/install-features/install-the-service-points-feature.md @@ -1,6 +1,6 @@ --- title: Install the Service Points feature -description: Learn how to integrate the Service Points feature into your project +description: Learn how to integrate the Service Points feature into your Spryker Unified Commerce project last_updated: Aug 28, 2023 template: feature-integration-guide-template redirect_from: diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-add-service-point-addresses.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-add-service-point-addresses.md index b4c74cdf734..8f738a49cc5 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-add-service-point-addresses.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-add-service-point-addresses.md @@ -1,6 +1,6 @@ --- title: "Glue API: Add service point addresses" -description: Learn how to add service point addresses using Glue API +description: Learn how to add service point addresses to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-retrieve-service-point-addresses.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-retrieve-service-point-addresses.md index 0c4476b729b..d942c33c393 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-retrieve-service-point-addresses.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-retrieve-service-point-addresses.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve service point addresses" -description: Learn how to retrieve service point addresses using Glue API +description: Learn how to retrieve service point addresses to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-update-service-point-addresses.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-update-service-point-addresses.md index e58c33a859d..91cfcabb62e 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-update-service-point-addresses.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-point-addresses/glue-api-update-service-point-addresses.md @@ -1,6 +1,6 @@ --- title: "Glue API: Update service point addresses" -description: Learn how to update service point addresses using Glue API +description: Learn how to update service point addresses to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-add-service-points.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-add-service-points.md index 34eef05adc4..5d5c41dfd51 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-add-service-points.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-add-service-points.md @@ -1,6 +1,6 @@ --- title: "Glue API: Add service points" -description: Learn how to add service points using Glue API +description: Learn how to add service points to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-retrieve-service-points.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-retrieve-service-points.md index b915ffed242..d9fec5d4728 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-retrieve-service-points.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-retrieve-service-points.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve service points" -description: Learn how to retrieve service points using Glue API +description: Learn how to retrieve service points to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-update-service-points.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-update-service-points.md index 57970d4d41e..3b9a0028367 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-update-service-points.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-points/glue-api-update-service-points.md @@ -1,6 +1,6 @@ --- title: "Glue API: Update service points" -description: Learn how to update service points using Glue API +description: Learn how to update service points to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-add-service-types.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-add-service-types.md index 6bbb3cf7061..4b619ebed85 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-add-service-types.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-add-service-types.md @@ -1,6 +1,6 @@ --- title: "Glue API: Add service types" -description: Learn how to add service types using Glue API +description: Learn how to add service types to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-retrieve-service-types.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-retrieve-service-types.md index 3e5ac6aef66..45e5bd6b7aa 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-retrieve-service-types.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-retrieve-service-types.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve service types" -description: Learn how to retrieve service types using Glue API +description: Learn how to retrieve service types to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-update-service-types.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-update-service-types.md index 2e78c77e8a5..76d72b15ca3 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-update-service-types.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-service-types/glue-api-update-service-types.md @@ -1,6 +1,6 @@ --- title: "Glue API: Update service types" -description: Learn how to update service types using Glue API +description: Learn how to update service types to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-add-services.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-add-services.md index 614c340659d..9b927090a41 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-add-services.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-add-services.md @@ -1,6 +1,6 @@ --- title: "Glue API: Add services" -description: Learn how to add services using Glue API +description: Learn how to add new services to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-retrieve-services.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-retrieve-services.md index 9cd8a1bc832..484d8df9208 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-retrieve-services.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-retrieve-services.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve services" -description: Learn how to retrieve services using Glue API +description: Learn how to retrieve services to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-update-services.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-update-services.md index 56bf5c3abb9..a3f9b9dd2fb 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-update-services.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/manage-using-glue-api/manage-services/glue-api-update-services.md @@ -1,6 +1,6 @@ --- title: "Glue API: Update service points" -description: Learn how to update service points using Glue API +description: Learn how to update services to your Unified Commerce shop using Spryker Glue API last_updated: Nov 23, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-checkout-feature-overview.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-checkout-feature-overview.md index f3b54a5d056..1b7ae82ffc6 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-checkout-feature-overview.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-checkout-feature-overview.md @@ -1,6 +1,6 @@ --- title: Service Points Cart + Checkout feature overview -description: General overview of the Service Points Cart + Checkout feature +description: General overview of the Service Points Cart + Checkout feature for your Spryuker Unified Commerce Projects. template: concept-topic-template last_updated: Dec 19, 2023 --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-feature-overview.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-feature-overview.md index 083e830c0f3..6537193c0a9 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-feature-overview.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-cart-feature-overview.md @@ -1,6 +1,6 @@ --- title: Service Points Cart feature overview -description: General overview of the Service Points Cart feature +description: General overview of the Service Points Cart feature for your Spryker Unified Commerce projects template: concept-topic-template last_updated: Dec 4, 2023 --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-feature-overview.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-feature-overview.md index dd5fceda3f8..5f5334cc7c6 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-feature-overview.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-feature-overview.md @@ -1,6 +1,6 @@ --- title: Service Points feature overview -description: General overview of the Service Points feature +description: General overview of the Spryker Service Points feature enhancing your Spryker Unified Commerce based projects. template: concept-topic-template last_updated: Jan 19, 2024 --- diff --git a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-order-management-feature.md b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-order-management-feature.md index 77a270c94fc..eec5ee6ff45 100644 --- a/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-order-management-feature.md +++ b/docs/pbc/all/service-point-management/202410.0/unified-commerce/service-points-order-management-feature.md @@ -1,6 +1,6 @@ --- title: Service Points + Order Management feature overview -description: General overview of the Service Points + Order Management feature +description: General overview of the Service Points + Order Management feature for your Spryker Unified Commerce Features. template: concept-topic-template last_updated: Dec 4, 2023 --- From b7caa0082bcdf2f25240a07cf237827db5b382a5 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 12 Dec 2024 10:58:30 +0200 Subject: [PATCH 102/199] sidebar --- _data/sidebars/pbc_all_sidebar.yml | 15 ++++++++++++--- ...ia-personalization-with-headless-frontends.md} | 4 ++-- ...on.md => integrate-algolia-personalization.md} | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) rename docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/{algolia-personalization-for-headless-frontends.md => algolia-personalization-with-headless-frontends.md} (91%) rename docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/{algolia-personalization.md => integrate-algolia-personalization.md} (99%) diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index f7147682f58..161d775e761 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -46,7 +46,7 @@ entries: - title: Set up url: /docs/pbc/all/business-intelligence/amazon-quicksight-third-party-integration/set-up-amazon-quicksight.html - title: Install - url: /docs/pbc/all/business-intelligence/amazon-quicksight-third-party-integration/install-amazon-quicksight.html + url: /docs/pbc/all/business-intelligence/amazon-quicksight-third-party-integration/install-amazon-quicksight.html - title: "Best practices: working with analytics" url: /docs/pbc/all/business-intelligence/amazon-quicksight-third-party-integration/best-practices-working-with-analytics.html - title: Refresh analytics datasets @@ -3832,11 +3832,20 @@ entries: - title: Customize Algolia url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/customize-algolia.html include_versions: - - "202410.0" + - "202410.0" - title: Disconnect Algolia url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/disconnect-algolia.html - - title: Getting access to Algolia dashboard + - title: Getting access to Algolia Dashboard url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/getting-access-to-algolia-dashboard.html + - title: Integrate Algolia Personalization + url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.html + include_versions: + - "202410.0" + - title: Algolia Personalization with headless frontends + url: /docs/pbc/all/search/base-shop/third-party-integrations/algolia/algolia-personalization-with-headless-frontends.html + include_versions: + - "202410.0" + - title: Visual Search powered by OpenAI url: /docs/pbc/all/search/base-shop/third-party-integrations/visual-search-powered-by-openai/install-visual-search-powered-by-openai.html include_versions: diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-with-headless-frontends.md similarity index 91% rename from docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md rename to docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-with-headless-frontends.md index a388df8816b..6bb41900c2f 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization-with-headless-frontends.md @@ -1,5 +1,5 @@ --- -title: Algolia Personalization for headless frontends +title: Algolia Personalization with headless frontends description: Find out how you can enable Algolia personalization in your Spryker shop based on headless approach (custom frontend or mobile application). last_updated: Nov 24, 2024 template: howto-guide-template @@ -14,7 +14,7 @@ Algolia requires events from your application to support the following premium f - A/B Testing -Spryker collects only Yves events by default. For custom frontends and mobile applications, we recommend using the Algolia SDK for your specific framework or platform and the built-in Algolia UI components. Algolia UI components support event tracking for most of the required events by default. +Spryker collects only Yves events by default. For custom frontends and mobile applications, we recommend using the Algolia SDK for your specific framework or platform and the built-in Algolia UI components. Algolia UI components support event tracking for most of the required events by default. For information on Aloglia SDK for different platform, see the following docs. For web applications: * JavaScript applications: [API Reference - JavaScript Widgets](https://www.algolia.com/doc/api-reference/widgets/js/) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md similarity index 99% rename from docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md rename to docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md index f83e06e0921..fc8ddac45a0 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md @@ -15,7 +15,7 @@ This document describes how to integrate Algolia Personalization. This integrati {% info_block infoBox "Third-party frontends" %} -By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [Algolia Personalization for headless frontends](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-for-headless-frontends.html). +By default, Spryker supports Algolia Personalization only for Yves. To integrate Algolia Personalization with a third-party or mobile frontend, follow [Algolia Personalization for headless frontends](/docs/pbc/all/search/{{page.version}}/base-shop/third-party-integrations/algolia/algolia-personalization-with-headless-frontends.html). {% endinfo_block %} From 6aef356875799855f1d359f4a9a2a0592282c3b5 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 09:21:59 +0000 Subject: [PATCH 103/199] PBC Wishlist SEO Update Meta desc changed for the following pages ; - base shop > install and upgrade > Install features > install the shopping list agent assist feature - base shop > install and upgrade > Install features > install the shopping lists feature - base shop > install and upgrade > Install features > install the shopping lists quick add to cart feature - base shop > install and upgrade > Install features > install the wishlist alternative product feature - base shop > install and upgrade > Install glue api > install the shopping list glue api - base shop > install and upgrade > Upgrade modules > upgrade the shopping list module - base shop > install and upgrade > Upgrade modules > upgrade the shopping list widget module - base shop > install and upgrade > manage using glue api > glue api manage shopping list items - base shop > install and upgrade > manage using glue api > glue api manage shopping lists - base shop > install and upgrade > manage using glue api > glue api manage wishlists - base shop > install and upgrade > shopping lists feature overview > shopping lists feature overview - marketplace > Domain model and relationship > marketplace shopping lsits feature domain model and relationships - marketplace > install and upgrade > install features > install the marketplace wishlist feature - marketplace > install and upgrade > install glue api > install the marketplace wishlist prices glue api - marketplace > install and upgrade > install glue api > install the marketplace wishlist product offer glue api - marketplace > install and upgrade > install glue api > install the wishlist marketplace product offer prices glue api - marketplace > manage using glue api > glue api manage marketplace shopping list items - marketplace > manage using glue api > glue api manage marketplace shopping lists - marketplace > marketplace wishlist feature overview - shopping list and wishlist --- .../install-the-shopping-list-agent-assist-feature.md | 1 + .../install-features/install-the-shopping-lists-feature.md | 1 + .../install-the-shopping-lists-quick-add-to-cart-feature.md | 2 +- .../install-the-wishlist-alternative-products-feature.md | 2 +- .../install-glue-api/install-the-shopping-lists-glue-api.md | 1 + .../upgrade-modules/upgrade-the-shoppinglist-module.md | 2 +- .../upgrade-modules/upgrade-the-shoppinglistwidget-module.md | 2 +- .../glue-api-manage-shopping-list-items.md | 2 +- .../manage-using-glue-api/glue-api-manage-shopping-lists.md | 1 + .../manage-using-glue-api/glue-api-manage-wishlists.md | 2 +- .../shopping-lists-feature-overview.md | 2 +- ...ace-shopping-lists-feature-domain-model-and-relationships.md | 2 +- .../install-the-marketplace-wishlist-feature.md | 2 +- .../install-the-marketplace-wishlist-prices-glue-api.md | 2 +- .../install-the-marketplace-wishlist-product-offer-glue-api.md | 2 +- ...ll-the-wishlist-marketplace-product-offer-prices-glue-api.md | 2 +- .../glue-api-manage-marketplace-shopping-list-items.md | 2 +- .../glue-api-manage-marketplace-shopping-lists.md | 1 + .../marketplace/marketplace-wishlist-feature-overview.md | 2 +- .../202410.0/shopping-list-and-wishlist.md | 2 +- 20 files changed, 20 insertions(+), 15 deletions(-) diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-list-agent-assist-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-list-agent-assist-feature.md index c5e80365dd6..a9d2c356d77 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-list-agent-assist-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-list-agent-assist-feature.md @@ -1,5 +1,6 @@ --- title: Install the Shopping List + Agent Assist feature +description: Learn how to install the Shopping List + Agent assist feature in to your Spryker Cloud Commerce OS Project. last_updated: Jul 6, 2021 template: feature-integration-guide-template redirect_from: diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md index dc051bf8087..dee405fbbef 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md @@ -1,5 +1,6 @@ --- title: Install the Shopping Lists feature +Learn how to install the Spryker Shopping List feature in to your Spryker Cloud Commerce OS Project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/shopping-lists-feature-integration diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-quick-add-to-cart-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-quick-add-to-cart-feature.md index ce38e6d2ce1..7f6bb894f86 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-quick-add-to-cart-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-quick-add-to-cart-feature.md @@ -1,6 +1,6 @@ --- title: Install the Shopping Lists + Quick Add to Cart feature -description: Quick Add to Cart + Shopping Lists allow creating a shopping list to buy products. This guide describes how to integrate this feature into your project. +description: Quick Add to Cart + Shopping Lists allow creating a shopping list to buy products. Learn how to integrate this feature into your Spryker based project. last_updated: Jun 16, 2021 template: feature-integration-guide-template - /docs/pbc/all/shopping-list-and-wishlist/202311.0/base-shop/install-and-upgrade/install-the-shopping-lists-quick-add-to-cart-feature.html diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-wishlist-alternative-products-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-wishlist-alternative-products-feature.md index c6cfaafb78c..b89b127543b 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-wishlist-alternative-products-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-wishlist-alternative-products-feature.md @@ -1,6 +1,6 @@ --- title: Install the Wishlist + Alternative Products feature -description: The guide walks you through the process of installing the Alternative products and Wishlist features into the project. +description: Learn how to install the Spryker Wishlist + Alternative Product features in to your Spryker Cloud Commerce OS projects. last_updated: Jun 16, 2021 template: feature-integration-guide-template - /docs/pbc/all/shopping-list-and-wishlist/202311.0/base-shop/install-and-upgrade/install-the-wishlist-alternative-products-feature.html diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-glue-api/install-the-shopping-lists-glue-api.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-glue-api/install-the-shopping-lists-glue-api.md index 69c228537a2..d7aff1831fa 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-glue-api/install-the-shopping-lists-glue-api.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-glue-api/install-the-shopping-lists-glue-api.md @@ -1,5 +1,6 @@ --- title: Integrate the Shopping Lists Glue API +description: Learn how to integrate the Spryker Shopping Lists GLUE API in to your Spryker Cloud Commerce OS Projects. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/glue-api-shopping-lists-feature-integration diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.md index d4961ef8ab4..9a6f39d5103 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglist-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the ShoppingList module -description: Use the guide to learn how to update the ShoppingList module. +description: Learn how to upgrade to a newer version of the Spryker Shopping List Module within your Spryker Cloud Commerce OS projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-shopping-list diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.md index 837db3f96f9..2540a07024f 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-shoppinglistwidget-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the ShoppingListWidget module -description: Use the guide to learn how to update the ShoppingListWidget module. +description: Learn how to upgrade to a newer version of the Spryker Shopping List Widget Module within your Spryker Cloud Commerce OS projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-shopping-list-widget diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-list-items.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-list-items.md index 9fd233c420d..316786d2f23 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-list-items.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-list-items.md @@ -1,6 +1,6 @@ --- title: "Glue API: Manage shopping list items" -description: Learn how to manage shopping list items via Glue API. +description: Learn how to manage Spryker shopping list items via the Glue API in your Spryker Cloud Commerce OS Projects. last_updated: Jun 16, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-shopping-list-items diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-lists.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-lists.md index 35047786dfd..546c5f19b34 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-lists.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-shopping-lists.md @@ -1,5 +1,6 @@ --- title: "Glue API: Manage shopping lists" +description: Learn how to manage Spryker shopping list via the Glue API in your Spryker Cloud Commerce OS Projects. last_updated: Jun 16, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-shopping-lists diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-wishlists.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-wishlists.md index 843e9759e8e..f1e6c7d9bf6 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-wishlists.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/manage-using-glue-api/glue-api-manage-wishlists.md @@ -1,6 +1,6 @@ --- title: "Glue API: Manage wishlists" -description: Create, update and delete wishlists via Glue API. +description: Learn how to manage , create, update and delete Spryker wishlist via the Glue API in your Spryker Cloud Commerce OS Projects. last_updated: Jun 16, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-wishlists diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/shopping-lists-feature-overview/shopping-lists-feature-overview.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/shopping-lists-feature-overview/shopping-lists-feature-overview.md index e6e68c5dc70..161173c3d00 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/shopping-lists-feature-overview/shopping-lists-feature-overview.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/shopping-lists-feature-overview/shopping-lists-feature-overview.md @@ -1,6 +1,6 @@ --- title: Shopping Lists feature overview -description: A general overview of the Multiple and shared shopping lists feature. +description: A general overview of the Multiple and shared shopping lists feature within Spryker Cloud Commerce OS. last_updated: Aug 20, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/multiple-and-shared-shopping-lists-overview diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/domain-model-and-relationships/marketplace-shopping-lists-feature-domain-model-and-relationships.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/domain-model-and-relationships/marketplace-shopping-lists-feature-domain-model-and-relationships.md index a18ef1d53ec..8eca3ea2722 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/domain-model-and-relationships/marketplace-shopping-lists-feature-domain-model-and-relationships.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/domain-model-and-relationships/marketplace-shopping-lists-feature-domain-model-and-relationships.md @@ -1,6 +1,6 @@ --- title: "Marketplace Shopping Lists feature: Domain model and relationships" -description: The Marketplace Shopping Lists feature allows customers to create and share multiple lists of merchant products and product offers between company business units or single users. +description: Marketplace Shopping Lists feature allows customers to create and share lists of merchant products and offers between company business units or single users. template: feature-walkthrough-template last_updated: Nov 21, 2023 --- diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-wishlist-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-wishlist-feature.md index aeaa54fbc7e..5bde07e47e3 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-wishlist-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-wishlist-feature.md @@ -1,7 +1,7 @@ --- title: Install the Marketplace Wishlist feature last_updated: Jul 05, 2021 -Description: This document describes the process how to integrate the Marketplace wishlist feature into a Spryker project. +description: This document describes the process how to integrate the Marketplace wishlist feature into a Spryker project. template: feature-integration-guide-template related: - title: Marketplace Wishlist feature walkthrough diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-prices-glue-api.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-prices-glue-api.md index 30ad0c867f6..d28f72c006d 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-prices-glue-api.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-prices-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Marketplace Wishlist + Prices Glue API -description: This document describes how to integrate the Prices + Marketplace Wishlist Glue API feature into a Spryker project. +description: Learn how to integrate the Spryker Prices + Marketplace Wishlist Glue API feature into a Spryker Marketplace project. template: feature-integration-guide-template last_updated: Nov 21, 2023 related: diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-product-offer-glue-api.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-product-offer-glue-api.md index 4884db6a8d8..19c1be0a128 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-product-offer-glue-api.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-marketplace-wishlist-product-offer-glue-api.md @@ -1,7 +1,7 @@ --- title: Install the Marketplace Wishlist + Product Offer Glue API last_updated: Sep 13, 2021 -description: This document describes how to integrate the Marketplace Product Offer + Wishlist Glue API feature into a Spryker project. +description: Learn how to integrate the Spryker Marketplace wishlist + Product Offer Glue API feature into a Spryker Marketplace project. template: feature-integration-guide-template --- diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-wishlist-marketplace-product-offer-prices-glue-api.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-wishlist-marketplace-product-offer-prices-glue-api.md index f541ddbb764..7877dacca43 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-wishlist-marketplace-product-offer-prices-glue-api.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/install-and-upgrade/install-glue-api/install-the-wishlist-marketplace-product-offer-prices-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Wishlist + Marketplace Product Offer Prices Glue API -description: This document describes how to integrate the Marketplace Product Offer Prices + Wishlist Glue API feature into a Spryker project. +description: Learn how to integrate the Spryker Marketplace wishlist + Product Offer Prices Glue API feature into a Spryker Marketplace project. template: feature-integration-guide-template last_updated: Nov 21, 2023 related: diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-list-items.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-list-items.md index ad873dab014..7a6571b8c90 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-list-items.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-list-items.md @@ -1,6 +1,6 @@ --- title: "Glue API: Manage marketplace shopping list items" -description: Learn how to manage shopping list items via Glue API. +description: Learn how to manage Spryker Marketplace shopping list items via the Spryker Glue API. last_updated: May 20, 2022 template: glue-api-storefront-guide-template related: diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-lists.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-lists.md index 5460491fa34..b85500ec650 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-lists.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/manage-using-glue-api/glue-api-manage-marketplace-shopping-lists.md @@ -1,5 +1,6 @@ --- title: "Glue API: Manage marketplace shopping lists" +description: Learn how to manage the Spryker Marketplace Shopping lists with GLUE API for your Spryker Marketplace projects. last_updated: May 20, 2022 template: glue-api-storefront-guide-template related: diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/marketplace-wishlist-feature-overview.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/marketplace-wishlist-feature-overview.md index d8ef52954e0..45d901aed35 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/marketplace-wishlist-feature-overview.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/marketplace/marketplace-wishlist-feature-overview.md @@ -1,6 +1,6 @@ --- title: Marketplace Wishlist feature overview -description: This document contains concept information for the Marketplace Wishlist feature. +description: Learn about the Spryker Marketplace Wishlist Feature with this overview, helping your shoppers save time by having their favourite items in one place. template: concept-topic-template last_updated: Nov 21, 2023 --- diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/shopping-list-and-wishlist.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/shopping-list-and-wishlist.md index fe24ae14988..f6279793384 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/shopping-list-and-wishlist.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/shopping-list-and-wishlist.md @@ -1,6 +1,6 @@ --- title: Shopping List and Wishlist -description: This document contains concept information for the Marketplace Wishlist feature. +description: This document contains concept information for the Spryker Cloud Commerce OS and Spryker Marketplace Shopping list and Wishlist feature template: concept-topic-template last_updated: Nov 21, 2023 --- From 56725303f50f17b1ed7a9045b21ef64d4f74345d Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 10:23:43 +0000 Subject: [PATCH 104/199] PBC Tax Management SEO Update Met desc changed for the following pages; - base shop > import and export data > import file details product abstract csv - base shop > import and export data > import file details product option csv - base shop > import and export data > import file details details shipment csv - base shop > import and export data > import file details details tax sets - base shop > import and export data > tax management data import - base shop > install and upgrade > upgrade the product tax sets rest api module - base shop > install and upgrade > upgrade the tax module - base shop > manage in the back office > create tax rates - base shop > manage in the back office > create tax sets - base shop > manage in the back office > edit tax rates - base shop > manage in the back office > edit tax sets - base shop > manage in the back office > manage taxes in the back office - base shop > manage using the glue api > retrieve tax rates - base shop > third party integrations > avalara > apply avalara tax codes - base shop > third party integrations > avalara > avalara - base shop > third party integrations > avalara > install avalara shipment - base shop > third party integrations > avalara > install avalara product options - base shop > third party integrations > avalara > install avalara - base shop > third party integrations > vertex > connect vertex - base shop > third party integrations > vertex > disconnect vertex - base shop > third party integrations > vertex > install vertex > integrate the acp connector module for tax calculation - base shop > third party integrations > vertex > troubleshooting vertex - base shop > third party integrations > vertex > vertex faq - base shop > third party integrations > vertex > vertex --- .../import-file-details-product-abstract.csv.md | 1 + .../import-file-details-product-option.csv.md | 1 + .../import-and-export-data/import-file-details-shipment.csv.md | 1 + .../import-and-export-data/import-file-details-tax-sets.csv.md | 1 + .../import-and-export-data/tax-management-data-import.md | 2 +- .../upgrade-the-producttaxsetsrestapi-module.md | 1 + .../base-shop/install-and-upgrade/upgrade-the-tax-module.md | 2 +- .../base-shop/manage-in-the-back-office/create-tax-rates.md | 2 +- .../base-shop/manage-in-the-back-office/create-tax-sets.md | 1 + .../base-shop/manage-in-the-back-office/edit-tax-rates.md | 2 +- .../base-shop/manage-in-the-back-office/edit-tax-sets.md | 1 + .../manage-taxes-in-the-back-office.md | 2 +- .../base-shop/manage-using-glue-api/retrieve-tax-sets.md | 2 +- .../third-party-integrations/avalara/apply-avalara-tax-codes.md | 2 +- .../base-shop/third-party-integrations/avalara/avalara.md | 2 +- .../avalara/install-avalara-product-options.md | 2 +- .../avalara/install-avalara-shipment.md | 2 +- .../third-party-integrations/avalara/install-avalara.md | 2 +- .../base-shop/third-party-integrations/vertex/connect-vertex.md | 2 +- .../third-party-integrations/vertex/disconnect-vertex.md | 2 +- .../integrate-the-acp-connector-module-for-tax-calculation.md | 2 +- .../third-party-integrations/vertex/troubleshooting-vertex.md | 2 +- .../base-shop/third-party-integrations/vertex/vertex-faq.md | 2 +- .../base-shop/third-party-integrations/vertex/vertex.md | 2 +- 24 files changed, 24 insertions(+), 17 deletions(-) diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-abstract.csv.md b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-abstract.csv.md index 62dfd67db7a..066176cdc8e 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-abstract.csv.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-abstract.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_abstract.csv" +description: Learn how to import file details for abstract products using the product abstract csv file within you Spryker based project. last_updated: July 22, 2022 template: data-import-template redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-option.csv.md b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-option.csv.md index 44513a2dade..27e74fdd336 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-option.csv.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-product-option.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_option.csv" +description: Learn how to import product options information using the product options csv file within you Spryker based project. last_updated: Aug 2, 2022 template: data-import-template redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment.csv.md b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment.csv.md index 527d9a30ee8..290a3e68bad 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment.csv.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-shipment.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: shipment.csv" +description: Learn how to import shipment information using the shipment csv file within you Spryker based project for the tax management feature. last_updated: Aug 2, 2022 template: data-import-template redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-tax-sets.csv.md b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-tax-sets.csv.md index a2e7325fc03..577b9115a4a 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-tax-sets.csv.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/import-file-details-tax-sets.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: tax_sets.csv" +description: Learn how to import tax sets information using the tax sets csv file within you Spryker based project for the tax management feature. last_updated: Jun 23, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-taxcsv diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/tax-management-data-import.md b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/tax-management-data-import.md index 2e6d9c08e5b..cadeba79658 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/tax-management-data-import.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/import-and-export-data/tax-management-data-import.md @@ -1,6 +1,6 @@ --- title: Tax Management data import -description: Details about data import files for the Tax Management PBC +description: Learn all about data import files and the different ways of importing data for the Tax Management PBC within you Spryker based projects. template: concept-topic-template last_updated: Jul 23, 2023 redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-producttaxsetsrestapi-module.md b/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-producttaxsetsrestapi-module.md index 5f3ecaf75b0..372592579bf 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-producttaxsetsrestapi-module.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-producttaxsetsrestapi-module.md @@ -1,5 +1,6 @@ --- title: Upgrade the ProductTaxSetsRestApi module +description: Learn to upgrade to a newer version of the product tax sets rest api module within your Spryker Tax management feature. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/producttaxsetsrestapi-migration-guide diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-tax-module.md b/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-tax-module.md index 2251fe3fddf..c428d84a0e9 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-tax-module.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/install-and-upgrade/upgrade-the-tax-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Tax module -description: Use the guide to learn how to update the Tax module to a newer version. +description: Learn to upgrade to a newer version of the tax module within your Spryker Tax management feature. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-tax diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-rates.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-rates.md index 55a4d810c77..758c82e1fe5 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-rates.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-rates.md @@ -1,6 +1,6 @@ --- title: Create tax rates -description: Learn how to create tax rates in the Back Office. +description: Learn how you can create tax rates directly in the back office of your Spryker Cloud Commerce OS project. last_updated: May 31, 2022 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-tax-rates diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-sets.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-sets.md index a6483b5ee16..e6ab047824a 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-sets.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/create-tax-sets.md @@ -1,5 +1,6 @@ --- title: Create tax sets +description: Learn how you can create tax sets directly in the back office of your Spryker Cloud Commerce OS project. last_updated: May 31, 2022 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-tax-sets diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-rates.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-rates.md index 1c31415e3a2..6d40df8ce8d 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-rates.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-rates.md @@ -1,6 +1,6 @@ --- title: Edit tax rates -description: Learn how to edit tax rates in the Back Office. +description: Learn how you can edit tax rates directly in the back office of your Spryker Cloud Commerce OS project. last_updated: May 31, 2022 template: back-office-user-guide-template related: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-sets.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-sets.md index 46f9bf508b6..8b91ba5453e 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-sets.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/edit-tax-sets.md @@ -1,5 +1,6 @@ --- title: Edit tax sets +description: Learn how you can edit tax sets directly in the back office of your Spryker Cloud Commerce OS project. last_updated: May 31, 2022 template: back-office-user-guide-template related: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/manage-taxes-in-the-back-office.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/manage-taxes-in-the-back-office.md index 2c8f9530961..bf63a310ca5 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/manage-taxes-in-the-back-office.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-in-the-back-office/manage-taxes-in-the-back-office.md @@ -1,6 +1,6 @@ --- title: Manage taxes in the Back Office -description: Learn how to log into the Back Office. +description: Learn how you can manage tax rates and tax sets directly in the back office of your Spryker Cloud Commerce OS project. last_updated: Apr 13, 2023 template: back-office-user-guide-template reidrect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/manage-using-glue-api/retrieve-tax-sets.md b/docs/pbc/all/tax-management/202410.0/base-shop/manage-using-glue-api/retrieve-tax-sets.md index 210ba38b563..e8c71d46d75 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/manage-using-glue-api/retrieve-tax-sets.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/manage-using-glue-api/retrieve-tax-sets.md @@ -1,6 +1,6 @@ --- title: Retrieve tax sets -description: Retrieve details information about tax sets of abstract products. +description: Learn how you can retrieve Spryker Tax sets using GLUE API within your Spryker based projects. last_updated: Jun 16, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/retrieving-tax-sets diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/apply-avalara-tax-codes.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/apply-avalara-tax-codes.md index 636c60306e8..a3b90467802 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/apply-avalara-tax-codes.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/apply-avalara-tax-codes.md @@ -1,6 +1,6 @@ --- title: Apply Avalara tax codes -description: Apply Avalara tax codes to calculate taxes +description: Learn how to apply Avalara tax codes to calculate taxes within your Spryker Cloud Commerce OS Project. last_updated: Aug 3, 2023 template: concept-topic-template redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/avalara.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/avalara.md index 1003abb0934..2162e7f1b1e 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/avalara.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/avalara.md @@ -1,6 +1,6 @@ --- title: Avalara -description: Avalara technology partner +description: Learn about Sprykers third party Avalara and how you can integrate Avlara to enhance your Spryker based projects. last_updated: Jun 18, 2021 template: concept-topic-template redirect_from: diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-product-options.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-product-options.md index 535b4fcd5e7..1447a570427 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-product-options.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-product-options.md @@ -1,6 +1,6 @@ --- title: Install Avalara + Product Options -description: Integrate the Avalara Tax + Product Options feature into your project +description: Learn how to install Avalara + Product options within your Spryker Cloud Commerce OS Project. last_updated: Aug 3, 2023 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/avalara-tax-product-options-feature-integration diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-shipment.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-shipment.md index 32df04c208b..318ae8dc18c 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-shipment.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara-shipment.md @@ -1,6 +1,6 @@ --- title: Install Avalara + Shipment -description: Install Avalara + Shipment. +description: Learn how to install Avalara + shipment within your Spryker Cloud Commerce OS Project. last_updated: Jun 18, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/avalara-tax-shipment-feature-integration diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara.md index 0d42aed785a..404153be3de 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/avalara/install-avalara.md @@ -1,6 +1,6 @@ --- title: Install Avalara -description: Install Avalara to automatically calculate taxes. +description: Install Sprykers third party Avalara to automatically calculate taxes within your Spryker based projects. last_updated: Jun 29, 2023 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/avalara-tax-integration diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/connect-vertex.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/connect-vertex.md index dba1fd31c36..cb69c37dbae 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/connect-vertex.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/connect-vertex.md @@ -1,6 +1,6 @@ --- title: Connect Vertex -description: Find out how you can configure Vertex in your Spryker shop +description: Find out how you can confiure Sprykers third party Vertex in to your Spryker Based project. last_updated: Nov 3 2023 template: howto-guide-template --- diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/disconnect-vertex.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/disconnect-vertex.md index 2452cf6a427..5fb10cd5732 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/disconnect-vertex.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/disconnect-vertex.md @@ -1,6 +1,6 @@ --- title: Disconnect Vertex -description: Find out how you can disconnect Vertex from your Spryker shop +description: Find out how you can disconnect Sprykers third party Vertex in to your Spryker Based project. last_updated: Jan 10, 2024 template: howto-guide-template --- diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/install-vertex/integrate-the-acp-connector-module-for-tax-calculation.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/install-vertex/integrate-the-acp-connector-module-for-tax-calculation.md index 35f67a2bad5..681e17ede61 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/install-vertex/integrate-the-acp-connector-module-for-tax-calculation.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/install-vertex/integrate-the-acp-connector-module-for-tax-calculation.md @@ -1,6 +1,6 @@ --- title: Integrate the ACP connector module for tax calculation -description: Find out how to integrate the connector module for tax calculation +description: Learn how you can configure and integrate Vertex via Spryker App Compositon Platform into your Spryker project. draft: true last_updated: Jan 10, 2024 template: howto-guide-template diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/troubleshooting-vertex.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/troubleshooting-vertex.md index 4287a3e1250..8db1fcd377f 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/troubleshooting-vertex.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/troubleshooting-vertex.md @@ -1,6 +1,6 @@ --- title: Troubleshooting Vertex -description: Troubleshoot issues related to the Vertex app +description: Some hints and tips on troubleshoot issues related to the Vertex app within your Spryker project. template: troubleshooting-guide-template last_updated: Dec 4, 2023 --- diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex-faq.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex-faq.md index 95adebe1f4a..ac3078e9079 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex-faq.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex-faq.md @@ -1,6 +1,6 @@ --- title: Vertex FAQ -description: FAQ about Vertex +description: Frequently asked questions about the Spryker third party integration, Vertex. template: concept-topic-template last_updated: May 17, 2024 --- diff --git a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex.md b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex.md index 22b387e7f04..4de6d90fd24 100644 --- a/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex.md +++ b/docs/pbc/all/tax-management/202410.0/base-shop/third-party-integrations/vertex/vertex.md @@ -1,6 +1,6 @@ --- title: Vertex -description: Vertex technology partner +description: Spryker's third party Vertex technology partner, and how tax calculations can enhance your Spryker based project. last_updated: May 17, 2024 template: concept-topic-template related: From 3bf75e28d9fdd0b3a1cd96759db693135e616d7a Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 11:01:44 +0000 Subject: [PATCH 105/199] PBC User Management SEO Update Meta desc changed for the following pages; - base shop > install and upgrade > install the agent assist glue api - base shop > install and upgrade > install the agent assist shopping list feature - base shop > manage in the back office > manage user groups > create user groups - base shop > manage in the back office > manage user groups > edit user groups - base shop > manage in the back office > manage user roles > create user roles - base shop > manage in the back office > manage user roles > edit user roles - base shop > manage in the back office > manage users in the back office - base shop > manage in the back office > manage users > create users - base shop > manage in the back office > manage users > delete users - base shop > manage in the back office > manage users > edit users - base shop > manage using glue api > glie api impersonate customers as an agent assist - marketplace > back office create users - marketplace > persistence acl feature domain model and relationshops - marketplace > persistence acl feature overview > persistence acl feature configuration - user management --- .../install-and-upgrade/install-the-agent-assist-glue-api.md | 2 +- .../install-the-agent-assist-shopping-list-feature.md | 1 + .../manage-user-groups/create-user-groups.md | 2 +- .../manage-user-groups/edit-user-groups.md | 2 +- .../manage-user-roles/create-user-roles.md | 2 +- .../manage-user-roles/edit-user-roles.md | 2 +- .../manage-users-in-the-back-office.md | 2 +- .../manage-in-the-back-office/manage-users/create-users.md | 2 +- .../manage-in-the-back-office/manage-users/delete-users.md | 2 +- .../manage-in-the-back-office/manage-users/edit-users.md | 2 +- .../glue-api-impersonate-customers-as-an-agent-assist.md | 2 +- .../202410.0/marketplace/back-office-create-users.md | 2 +- .../persistence-acl-feature-domain-model-and-relationships.md | 2 +- .../persistence-acl-feature-configuration.md | 2 +- docs/pbc/all/user-management/202410.0/user-management.md | 2 +- 15 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-glue-api.md b/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-glue-api.md index 3d478b1ffde..0e8dad4865b 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-glue-api.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Agent Assist Glue API -description: Integrate the Glue API - Agent Assist feature into your project. +description: Learn how to Integrate the Glue API - Agent Assist feature into your Spryker based project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/glue-api-agent-assist-feature-integration diff --git a/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-shopping-list-feature.md b/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-shopping-list-feature.md index 507016a67a1..4688e4786d3 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-shopping-list-feature.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/install-and-upgrade/install-the-agent-assist-shopping-list-feature.md @@ -1,5 +1,6 @@ --- title: Install the Agent Assist + Shopping List feature +description: Learn how to install the Agent Assist + Shopping List feature in to your Spryker based projects. last_updated: Jul 6, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/agent-assist-shopping-list-feature-integration diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/create-user-groups.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/create-user-groups.md index cfc9415d528..f5f7c8c4183 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/create-user-groups.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/create-user-groups.md @@ -1,6 +1,6 @@ --- title: Create user groups -description: Learn how to create user groups in the Back Office. +description: Learn how you can create new user groups directly in the back office of Spryker Cloud Commerce OS. last_updated: Aug 2, 2021 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-groups diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/edit-user-groups.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/edit-user-groups.md index 73c4ca44894..1836f918fe6 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/edit-user-groups.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-groups/edit-user-groups.md @@ -1,6 +1,6 @@ --- title: Edit user groups -description: Learn how to edit user groups in the Back Office +description: Learn how you can edit user groups directly in the back office of Spryker Cloud Commerce OS. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/create-user-roles.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/create-user-roles.md index e78ebde53f1..d4051753ef0 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/create-user-roles.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/create-user-roles.md @@ -1,6 +1,6 @@ --- title: Create user roles -description: Learn how to create roles in the Back Office. +description: Learn how you can create new user roles directly in the back office of Spryker Cloud Commerce OS. last_updated: Aug 2, 2021 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-roles diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/edit-user-roles.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/edit-user-roles.md index 13cd7744c56..41f16b4341e 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/edit-user-roles.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-user-roles/edit-user-roles.md @@ -1,6 +1,6 @@ --- title: Edit user roles -description: Learn how to edit user roles in the Back Office. +description: Learn how you can edit user roles directly in the back office of Spryker Cloud Commerce OS. template: back-office-user-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users-in-the-back-office.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users-in-the-back-office.md index 6e0b568b8e8..9bdb1297a70 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users-in-the-back-office.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users-in-the-back-office.md @@ -1,6 +1,6 @@ --- title: Manage users in the Back Office -description: Learn how to log into the Back Office. +description: Learn how you can manager user directly in the back office of Spryker Cloud Commerce OS projects. last_updated: Apr 13, 2023 template: back-office-user-guide-template redirect_from: diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/create-users.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/create-users.md index 71a4c5dc530..2b56e9d3aa7 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/create-users.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/create-users.md @@ -1,6 +1,6 @@ --- title: Create users -description: Learn how to create users in the Back Office +description: Learn how you can create new users directly in the back office of your Spryker Cloud Commerce OS Shop. last_updated: Aug 2, 2021 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-users diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/delete-users.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/delete-users.md index 2c483cad939..92bc728607e 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/delete-users.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/delete-users.md @@ -1,6 +1,6 @@ --- title: Delete users -description: Learn how to delete users in the Back Office +description: Learn how you can delete users directly in the back office of your Spryker Cloud Commerce OS Shop. last_updated: Aug 2, 2021 template: back-office-user-guide-template redirect_from: diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/edit-users.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/edit-users.md index 53067ad87c9..9469f72c7a7 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/edit-users.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-in-the-back-office/manage-users/edit-users.md @@ -1,6 +1,6 @@ --- title: Edit users -description: Learn how to edit users in the Back Office +description: Learn how you can edit users directly in the back office of your Spryker Cloud Commerce OS Shop. template: back-office-user-guide-template last_updated: Jan 4, 2024 redirect_from: diff --git a/docs/pbc/all/user-management/202410.0/base-shop/manage-using-glue-api/glue-api-impersonate-customers-as-an-agent-assist.md b/docs/pbc/all/user-management/202410.0/base-shop/manage-using-glue-api/glue-api-impersonate-customers-as-an-agent-assist.md index 0b53974d37b..a195cb56ddb 100644 --- a/docs/pbc/all/user-management/202410.0/base-shop/manage-using-glue-api/glue-api-impersonate-customers-as-an-agent-assist.md +++ b/docs/pbc/all/user-management/202410.0/base-shop/manage-using-glue-api/glue-api-impersonate-customers-as-an-agent-assist.md @@ -1,6 +1,6 @@ --- title: "Glue API: Impersonate customers as an agent assist" -description: As an agent assist, authenticate as a customer and impersonate them. +description: As an agent assist, authenticate as a customer and impersonate them using the GLUE API within your Spryker Projects. last_updated: Jun 16, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/impersonating-customers-as-an-agent-assist diff --git a/docs/pbc/all/user-management/202410.0/marketplace/back-office-create-users.md b/docs/pbc/all/user-management/202410.0/marketplace/back-office-create-users.md index 866b0f03a39..6a7b8fd2306 100644 --- a/docs/pbc/all/user-management/202410.0/marketplace/back-office-create-users.md +++ b/docs/pbc/all/user-management/202410.0/marketplace/back-office-create-users.md @@ -1,6 +1,6 @@ --- title: "Back Office: Create users" -description: Learn how to create users in the Back Office for Marketplace +description: Learn how to create new users directly in the Back Office for you Spryker Marketplace shop. last_updated: Jan 14, 2024 template: back-office-user-guide-template --- diff --git a/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-domain-model-and-relationships.md b/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-domain-model-and-relationships.md index 3ace4264e76..612d52bf77d 100644 --- a/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-domain-model-and-relationships.md +++ b/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-domain-model-and-relationships.md @@ -1,7 +1,7 @@ --- title: "Persistence ACL feature: Domain model and relationships" last_updated: Nov 05, 2021 -description: Technical details about the Persistence ACL feature. +description: Learn the Technical details about the Persistence ACL feature in your Spryker Marketplace shop. template: concept-topic-template --- diff --git a/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-overview/persistence-acl-feature-configuration.md b/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-overview/persistence-acl-feature-configuration.md index 38b0d058848..b197f9ece63 100644 --- a/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-overview/persistence-acl-feature-configuration.md +++ b/docs/pbc/all/user-management/202410.0/marketplace/persistence-acl-feature-overview/persistence-acl-feature-configuration.md @@ -1,7 +1,7 @@ --- title: Persistence ACL feature configuration last_updated: Nov 05, 2021 -description: Learn how to configure the Persistence ACL feature. +description: Learn how to configure the Persistence ACL feature in to your Spryker based marketplace shop. template: concept-topic-template --- This document describes how you can configure the [Persistence ACL feature](/docs/pbc/all/user-management/{{page.version}}/marketplace/persistence-acl-feature-overview/persistence-acl-feature-overview.html). diff --git a/docs/pbc/all/user-management/202410.0/user-management.md b/docs/pbc/all/user-management/202410.0/user-management.md index 9f3c7772a79..4b3d28f5bc0 100644 --- a/docs/pbc/all/user-management/202410.0/user-management.md +++ b/docs/pbc/all/user-management/202410.0/user-management.md @@ -1,6 +1,6 @@ --- title: Users Management -description: User Management capability lets you manage Back Office users. +description: The Spryker User Management capability lets you manage Back Office users within your Spryker based projects. last_updated: Aug 20, 2021 template: concept-topic-template redirect_from: From e00b9be0d5496b37621b58da6b360a5d25d3be0f Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 11:06:18 +0000 Subject: [PATCH 106/199] PBC Usercentrics SEO Update Meta description changed for user centric documentation; - configure usercentrics - disconnect usercentrics - integrate usercentrics --- docs/pbc/all/usercentrics/configure-usercentrics.md | 2 +- docs/pbc/all/usercentrics/disconnect-usercentrics.md | 2 +- docs/pbc/all/usercentrics/integrate-usercentrics.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pbc/all/usercentrics/configure-usercentrics.md b/docs/pbc/all/usercentrics/configure-usercentrics.md index 534c4208c65..75002777af7 100644 --- a/docs/pbc/all/usercentrics/configure-usercentrics.md +++ b/docs/pbc/all/usercentrics/configure-usercentrics.md @@ -1,6 +1,6 @@ --- title: Configure Usercentrics -description: Find out how you can configure Usercentrics in your Spryker shop +description: Learn how you can configure Spryker Third Party Usercentrics in to your Spryker based shop last_updated: July 3, 2023 template: howto-guide-template --- diff --git a/docs/pbc/all/usercentrics/disconnect-usercentrics.md b/docs/pbc/all/usercentrics/disconnect-usercentrics.md index 2f4e3e68910..96f4e744fb8 100644 --- a/docs/pbc/all/usercentrics/disconnect-usercentrics.md +++ b/docs/pbc/all/usercentrics/disconnect-usercentrics.md @@ -1,6 +1,6 @@ --- title: Disconnect Usercentrics -description: Find out how you can disconnect Usercentrics from your Spryker shop +description: Learn how you can disconnect Spryker Third Party Usercentrics in to your Spryker based shop template: howto-guide-template last_updated: Sep 13, 2022 --- diff --git a/docs/pbc/all/usercentrics/integrate-usercentrics.md b/docs/pbc/all/usercentrics/integrate-usercentrics.md index 138605ef181..a2dcdeeb382 100644 --- a/docs/pbc/all/usercentrics/integrate-usercentrics.md +++ b/docs/pbc/all/usercentrics/integrate-usercentrics.md @@ -1,6 +1,6 @@ --- title: Integrate Usercentrics -description: Find out how you can integrate Usercentrics in your Spryker shop +description: Learn how you can integrate Spryker Third Party Usercentrics in to your Spryker based shop template: howto-guide-template last_updated: Jan 09, 2024 --- From a814a1015e3a09df0fc50bf7b5cae81c1eabf72c Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 12 Dec 2024 15:15:37 +0200 Subject: [PATCH 107/199] Update install-dynamic-multistore.md --- .../install-features/202410.0/install-dynamic-multistore.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index e6c73038979..c3df36721cd 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -1641,9 +1641,9 @@ class StorageRouterDependencyProvider extends SprykerShopStorageRouterDependency } ``` -{% info_block warningBox "Verification" %} +{% info_block infoBox "" %} -We do not need `LanguagePrefixRouterEnhancerPlugin` for the StorageRouter, as the language is already part of the URL for the StorageRouter. +`LanguagePrefixRouterEnhancerPlugin` isn't needed for `StorageRouter` because the language is already part of the URL for `StorageRouter`. {% endinfo_block %} From 9ce81af22a904a2749633c29cdd4070c1b7b04fd Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Thu, 12 Dec 2024 14:15:35 +0000 Subject: [PATCH 108/199] PBC WMS SEO Update Changed meta description for some of the pages within Warehouse management system PBC folder. --- .../availability-notification-domain-model-and-relationships.md | 2 +- .../import-file-details-product-stock.csv.md | 1 + .../import-file-details-warehouse-address.csv.md | 2 +- .../import-file-details-warehouse-store.csv.md | 1 + .../import-and-export-data/import-file-details-warehouse.csv.md | 1 + .../install-the-availability-notification-glue-api.md | 2 +- .../install-the-inventory-management-feature.md | 2 +- .../upgrade-modules/upgrade-the-availability-module.md | 2 +- .../manage-in-the-back-office/check-availability-of-products.md | 2 +- .../base-shop/manage-in-the-back-office/create-warehouses.md | 2 +- .../base-shop/manage-in-the-back-office/edit-warehouses.md | 2 +- .../manage-warehouses-in-the-back-office.md | 2 +- .../glue-api-manage-availability-notifications.md | 2 +- .../glue-api-retrieve-abstract-product-availability.md | 2 +- ...i-retrieve-availability-when-retrieving-abstract-products.md | 2 +- ...i-retrieve-availability-when-retrieving-concrete-products.md | 2 +- .../glue-api-retrieve-concrete-product-availability.md | 2 +- ...-api-retrieve-subscriptions-to-availability-notifications.md | 2 +- .../marketplace/glue-api-retrieve-product-offer-availability.md | 2 +- ...ry-management-merchant-portal-marketplace-product-feature.md | 2 +- .../marketplace-inventory-management-feature-domain-model.md | 2 +- .../marketplace-inventory-management-feature-overview.md | 2 +- .../202410.0/unified-commerce/fulfillment-app-fulfill-orders.md | 2 +- .../202410.0/unified-commerce/fulfillment-app-overview.md | 2 +- .../install-the-warehouse-picking-feature.md | 2 +- .../install-the-warehouse-user-management-feature.md | 2 +- .../glue-api-authenticate-as-a-warehouse-user.md | 2 +- .../manage-picklists/glue-api-pick-picklist-items.md | 2 +- .../manage-picklists/glue-api-retrieve-picklists.md | 2 +- .../manage-picklists/glue-api-start-picking.md | 2 +- .../glue-api-create-warehouse-user-assignments.md | 2 +- .../glue-api-retrieve-warehouse-user-assignments.md | 2 +- .../glue-api-update-warehouse-user-assignments.md | 2 +- .../202410.0/unified-commerce/set-up-fulfillment-app.md | 2 +- .../warehouse-user-management-feature-overview.md | 2 +- .../202410.0/warehouse-management-system.md | 2 +- 36 files changed, 36 insertions(+), 33 deletions(-) diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/domain-model-and-relationships/availability-notification-domain-model-and-relationships.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/domain-model-and-relationships/availability-notification-domain-model-and-relationships.md index e68ef798206..64e9fc10abb 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/domain-model-and-relationships/availability-notification-domain-model-and-relationships.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/domain-model-and-relationships/availability-notification-domain-model-and-relationships.md @@ -1,6 +1,6 @@ --- title: Availability Notification domain model and relationships -description: Relations between modules in the Availability Notification feature. +description: Relations between modules in the Availability Notification feature for Spryker Warehouse management system. last_updated: Aug 12, 2021 template: concept-topic-template redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-product-stock.csv.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-product-stock.csv.md index de1c6bb6019..d5e7737bc52 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-product-stock.csv.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-product-stock.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: product_stock.csv" +description: learn how to configure product stock data in your Spryker based project using the product stock csv file. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-product-stockcsv diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-address.csv.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-address.csv.md index 8550f0412d3..e53e4203a77 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-address.csv.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-address.csv.md @@ -1,6 +1,6 @@ --- title: "Import file details: warehouse_address.csv" -description: Import the warehouse address data into your project +description: learn how to configure warehouse address data in your Spryker based project using the warehouse address csv file. last_updated: Oct 4, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-warehouse-addresscsv diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-store.csv.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-store.csv.md index d77342bd20a..9e3d24a2c3c 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-store.csv.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse-store.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: warehouse_store.csv" +description: learn how to configure warehouse store data in your Spryker based project using the warehouse store csv file. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-warehouse-storecsv diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse.csv.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse.csv.md index 3d16f6e5550..46859d63027 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse.csv.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/import-and-export-data/import-file-details-warehouse.csv.md @@ -1,5 +1,6 @@ --- title: "Import file details: warehouse.csv" +description: learn how to configure warehouse data in your Spryker based project using the warehouse csv file. last_updated: Jun 16, 2021 template: data-import-template originalLink: https://documentation.spryker.com/2021080/docs/file-details-warehousecsv diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-availability-notification-glue-api.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-availability-notification-glue-api.md index cade5b03d5b..149682d38b9 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-availability-notification-glue-api.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-availability-notification-glue-api.md @@ -1,6 +1,6 @@ --- title: Install the Availability Notification Glue API -description: Integrate the Glue API - Availability Notification feature into your project +description: Learn how to integrate the Glue API - Availability Notification feature into your Spryker based project last_updated: Jun 18, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/glue-api-availability-notification-feature-integration diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-inventory-management-feature.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-inventory-management-feature.md index 9ca55ff3a2c..bfaf4970752 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-inventory-management-feature.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/install-features/install-the-inventory-management-feature.md @@ -1,6 +1,6 @@ --- title: Install the Inventory Management feature -description: Install the Inventory Management feature in your project +description: Learn how to install the Spryker inventory management feature in to your Spryker based project. template: feature-integration-guide-template last_updated: Feb 8, 2023 redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-availability-module.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-availability-module.md index 9ceaf994bf5..35d406f3bb5 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-availability-module.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/install-and-upgrade/upgrade-modules/upgrade-the-availability-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Availability module -description: Use the guide to migrate to the new version of the Availability module. +description: Use the guide to upgrade or migrate to the new version of the Availability module in your Spryker based project. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mg-availability diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/check-availability-of-products.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/check-availability-of-products.md index 56a31869143..65ca43abe18 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/check-availability-of-products.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/check-availability-of-products.md @@ -1,6 +1,6 @@ --- title: Check availability of products -description: Learn how to check availability of products in the Back Office. +description: Learn how to check availability of products directly in the Back Office of your Spryker based project. last_updated: June 3, 2022 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-products-availability diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/create-warehouses.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/create-warehouses.md index 653f6699c36..0704cf4370d 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/create-warehouses.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/create-warehouses.md @@ -1,6 +1,6 @@ --- title: Create warehouses -description: Learn how to create warehouses in the Back Office. +description: Learn how to create new warhouses directly in the Back Office of your Spryker based project. last_updated: May 28, 2022 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/creating-a-warehouse diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/edit-warehouses.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/edit-warehouses.md index 0eec5f45ede..2a4e60c7fcd 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/edit-warehouses.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/edit-warehouses.md @@ -1,6 +1,6 @@ --- title: Edit warehouses -description: Learn how to edit warehouses in the Back Office. +description: Learn how to edit warhouses directly in the Back Office of your Spryker Cloud Commerce OS project. last_updated: May 28, 2022 template: back-office-user-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-warehouses diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/manage-warehouses-in-the-back-office.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/manage-warehouses-in-the-back-office.md index 0301e783486..6e60c20d586 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/manage-warehouses-in-the-back-office.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-in-the-back-office/manage-warehouses-in-the-back-office.md @@ -1,6 +1,6 @@ --- title: Manage warehouses in the Back Office -description: Learn how to log into the Back Office. +description: Learn how to manage warhouses directly in the Back Office of your Spryker Cloud Commerce OS project. last_updated: Apr 13, 2023 template: back-office-user-guide-template redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-manage-availability-notifications.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-manage-availability-notifications.md index 2642edd973f..8efa75e5b9f 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-manage-availability-notifications.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-manage-availability-notifications.md @@ -1,6 +1,6 @@ --- title: Manage availability notifications -description: Manage product availability notifications for registered users +description: Manage product availability notifications for registered users with the Spryker Glue API for your Spryker based projects. last_updated: Jun 22, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/managing-availability-notifications diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-abstract-product-availability.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-abstract-product-availability.md index 79fd8e53125..62951904c8a 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-abstract-product-availability.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-abstract-product-availability.md @@ -1,6 +1,6 @@ --- title: Retrieve abstract product availability -description: Retrieve information about availability of abstract products. +description: Learn how to retrieve information about availability of abstract products using Spryker GLUE API within your Spryker based projects. last_updated: Jul 12, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/retrieving-abstract-product-availability diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-abstract-products.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-abstract-products.md index 9de17213892..5761bd9a089 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-abstract-products.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-abstract-products.md @@ -1,6 +1,6 @@ --- title: Retrieve availability when retrieving abstract products -description: Learn how to retrieve availability when retrieving abstract products using Glue API. +description: Learn how to retrieve availability when retrieving abstract products using Glue API within your Spryker based projects. last_updated: Aug 22, 2022 template: glue-api-storefront-guide-template redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-concrete-products.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-concrete-products.md index 30327d02a9a..23eebf3e5aa 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-concrete-products.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-availability-when-retrieving-concrete-products.md @@ -1,6 +1,6 @@ --- title: Retrieve availability when retrieving concrete products -description: Retrieve general information about concrete products. +description: Learn how to retrieve availability when retrieving concrete products using Glue API within your Spryker based projects. last_updated: Aug 22, 2022 template: glue-api-storefront-guide-template redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-concrete-product-availability.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-concrete-product-availability.md index a7a9635cb80..ce9ef26c256 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-concrete-product-availability.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-concrete-product-availability.md @@ -1,6 +1,6 @@ --- title: Retrieve concrete product availability -description: Retrieve availability of concrete products. +description: Learn how to retrieve availability of concrete products using Spryker GLUE API within your Spryker based projects. last_updated: Jul 12, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/retrieving-concrete-product-availability diff --git a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-subscriptions-to-availability-notifications.md b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-subscriptions-to-availability-notifications.md index 1442a6b3d32..c57435bd834 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-subscriptions-to-availability-notifications.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-subscriptions-to-availability-notifications.md @@ -1,6 +1,6 @@ --- title: Retrieve subscriptions to availability notifications -description: Retrieve subscriptions to notifications on product availability via Glue API +description: Learn how to retrieve subscriptions to notifications on product availability via Glue API for your Spryker based projects. last_updated: Jun 22, 2021 template: glue-api-storefront-guide-template originalLink: https://documentation.spryker.com/2021080/docs/retrieving-subscriptions-to-availability-notifications diff --git a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/glue-api-retrieve-product-offer-availability.md b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/glue-api-retrieve-product-offer-availability.md index d0747095be5..cca79ea0542 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/glue-api-retrieve-product-offer-availability.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/glue-api-retrieve-product-offer-availability.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve product offer availability" -description: Retrieve Marketplace product offer availabilities via Glue API +description: Learn how to retrieve Marketplace product offer availabilities via Glue API for your Spryker Marketplace projects. template: glue-api-storefront-guide-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/install-features/install-the-inventory-management-merchant-portal-marketplace-product-feature.md b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/install-features/install-the-inventory-management-merchant-portal-marketplace-product-feature.md index d77233dcd32..9a1a980c072 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/install-features/install-the-inventory-management-merchant-portal-marketplace-product-feature.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/install-features/install-the-inventory-management-merchant-portal-marketplace-product-feature.md @@ -1,7 +1,7 @@ --- title: Install the Inventory Management + Merchant Portal - Marketplace Product feature last_updated: Sep 13, 2021 -description: This document describes the process how to integrate theMerchant Portal - Marketplace Product + Inventory Management feature into a Spryker project. +description: In this article learn the process how to integrate theMerchant Portal - Marketplace Product + Inventory Management feature into a Spryker Marketplace project. template: feature-integration-guide-template --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-domain-model.md b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-domain-model.md index 86b1e56b82d..359aa4c18ae 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-domain-model.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-domain-model.md @@ -1,6 +1,6 @@ --- title: "Marketplace Inventory Management feature: Domain model" -description: Merchants are product and service sellers in the Marketplace. +description: Learn about Marketplace Inventory Management feature domain model within your Spryker Marketplace project. template: feature-walkthrough-template last_updated: Nov 21, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-overview.md b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-overview.md index 3d9e1fad473..414f543fb1f 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-overview.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/marketplace/marketplace-inventory-management-feature-overview.md @@ -1,6 +1,6 @@ --- title: Marketplace Inventory Management feature overview -description: This document contains concept information for the Marketplace Products feature. +description: Learn all about the Spryker Marketplace Inventory Management feature and how you can use it within your Spryker Marketplace store. template: concept-topic-template last_updated: Nov 21, 2023 redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-fulfill-orders.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-fulfill-orders.md index c5e24228219..71bc0b957e6 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-fulfill-orders.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-fulfill-orders.md @@ -1,6 +1,6 @@ --- title: "Fulfillment App: Fulfill orders" -description: Learn how to fulfill orders in the Fulfillment App +description: Learn how you can fulfill orders in the Spryker Fulfillment App within your unified commerce store. last_updated: Nov 3, 2023 template: back-office-user-guide-template --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-overview.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-overview.md index 7a439fbf9d4..8be1fbf772a 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-overview.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/fulfillment-app-overview.md @@ -1,6 +1,6 @@ --- title: Fulfillment App overview -description: Fulfillment App streamlines the process of fulfilling orders. +description: Fulfillment App streamlines the process of fulfilling orders, learn all you need to know about the Spryker Fulfilment app for your Unified Commerce Store. last_updated: Oct 3, 2023 template: concept-topic-template --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-picking-feature.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-picking-feature.md index 5e5ece26ac6..1a571e51832 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-picking-feature.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-picking-feature.md @@ -1,6 +1,6 @@ --- title: Install the Warehouse picking feature -description: Learn how to integrate the Warehouse picking feature into your project +description: Learn how to integrate the Spryker Warehouse picking feature into your Spryker Unified Commerce project last_updated: Feb 10, 2023 template: feature-integration-guide-template redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-user-management-feature.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-user-management-feature.md index 442fb2ec2a1..41e5abbe8c6 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-user-management-feature.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/install-and-upgrade/install-the-warehouse-user-management-feature.md @@ -1,6 +1,6 @@ --- title: Install the Warehouse User Management feature -description: Install the Warehouse User Management feature in your project +description: Learn how to install the Spryker Warehouse User Management feature in your Spryker Unified Commerce project template: feature-integration-guide-template last_updated: Jan 10, 2024 redirect_from: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/glue-api-authenticate-as-a-warehouse-user.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/glue-api-authenticate-as-a-warehouse-user.md index 6fc23f1fd60..a8ce3e665f6 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/glue-api-authenticate-as-a-warehouse-user.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/glue-api-authenticate-as-a-warehouse-user.md @@ -1,6 +1,6 @@ --- title: "Glue API: Authenticate as a warehouse user" -description: Learn how to authenticate as a warehouse user using Glue API +description: Learn how to authenticate as a warehouse user using Glue API in your Spryker Unified Commerce projects. last_updated: Nov 13, 2023 template: glue-api-storefront-guide-template --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-pick-picklist-items.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-pick-picklist-items.md index d801e0d9001..2b83151eb11 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-pick-picklist-items.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-pick-picklist-items.md @@ -1,6 +1,6 @@ --- title: "Glue API: Pick picklist items" -description: Learn how to pick picklist items using Glue API +description: Learn how to pick picklist items using Spryker Glue API in your Spryker Unified Commerce Store. template: glue-api-storefront-guide-template last_updated: Dec 7, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-retrieve-picklists.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-retrieve-picklists.md index c3cba4545c5..8e64e72cce7 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-retrieve-picklists.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-retrieve-picklists.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve picklists" -description: Learn how to retrieve picklists using Glue API +description: Learn how to retrieve picklist items using Spryker Glue API in your Spryker Unified Commerce Store. template: glue-api-storefront-guide-template last_updated: Dec 7, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-start-picking.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-start-picking.md index 5eee5eaa8d5..c716b40d17a 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-start-picking.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-picklists/glue-api-start-picking.md @@ -1,6 +1,6 @@ --- title: "Glue API: Start picking" -description: Learn how to start picking using Glue API +description: Learn how to start picking items using Spryker Glue API in your Spryker Unified Commerce Store. template: glue-api-storefront-guide-template last_updated: Dec 7, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-create-warehouse-user-assignments.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-create-warehouse-user-assignments.md index c713c5301ed..935e0c56be4 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-create-warehouse-user-assignments.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-create-warehouse-user-assignments.md @@ -1,6 +1,6 @@ --- title: "Glue API: Create warehouse user assignments" -description: Learn how to create warehouse user assignments using Glue API +description: Learn how to create warehouse user assignments using Glue API within your Spryker Unified Commerce project. template: glue-api-storefront-guide-template last_updated: Dec 14, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-retrieve-warehouse-user-assignments.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-retrieve-warehouse-user-assignments.md index 16a79d8fc6f..dd696536007 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-retrieve-warehouse-user-assignments.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-retrieve-warehouse-user-assignments.md @@ -1,6 +1,6 @@ --- title: "Glue API: Retrieve warehouse user assignments" -description: Learn how to retrieve warehouse user assignments using Glue API +description: Learn how to retrieve warehouse user assignments using Glue API within your Spryker Unified Commerce project. template: glue-api-storefront-guide-template last_updated: Dec 7, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-update-warehouse-user-assignments.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-update-warehouse-user-assignments.md index f6261b83804..50f29945e19 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-update-warehouse-user-assignments.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/manage-using-glue-api/manage-warehouse-user-assignments/glue-api-update-warehouse-user-assignments.md @@ -1,6 +1,6 @@ --- title: "Glue API: Update warehouse user assignments" -description: Learn how to update warehouse user assignments using Glue API +description: Learn how to update warehouse user assignments using Glue API within your Spryker Unified Commerce project. template: glue-api-storefront-guide-template last_updated: Dec 7, 2023 --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/set-up-fulfillment-app.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/set-up-fulfillment-app.md index 91f615ac575..e4d61c927d1 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/set-up-fulfillment-app.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/set-up-fulfillment-app.md @@ -1,6 +1,6 @@ --- title: Set up Fulfillment App -description: Learn how to install and configure Fulfillment App +description: Learn how to install and configure Fulfillment App within your Spryker Unified Commerce projects. last_updated: Nov 23, 2023 template: howto-guide-template --- diff --git a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/warehouse-user-management-feature-overview.md b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/warehouse-user-management-feature-overview.md index 6d6e13167ec..fccaaad1a15 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/warehouse-user-management-feature-overview.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/unified-commerce/warehouse-user-management-feature-overview.md @@ -1,6 +1,6 @@ --- title: Warehouse User Management feature overview -description: General overview of the Warehouse User Management feature +description: General overview of the Spryker Warehouse User Management feature and how it can enhance your Spryker Unified Commerce store. last_updated: Nov 23, 2023 template: concept-topic-template related: diff --git a/docs/pbc/all/warehouse-management-system/202410.0/warehouse-management-system.md b/docs/pbc/all/warehouse-management-system/202410.0/warehouse-management-system.md index 89cc80fe2f4..5d7b71f1e42 100644 --- a/docs/pbc/all/warehouse-management-system/202410.0/warehouse-management-system.md +++ b/docs/pbc/all/warehouse-management-system/202410.0/warehouse-management-system.md @@ -1,6 +1,6 @@ --- title: Warehouse Management System -description: Capability for managing stock and warehouses. +description: Learn all about creating and managing warhouses and stock within the Spryker Warehouse Management Sytem feature. last_updated: Sep 2, 2022 template: concept-topic-template redirect_from: From 27bcd6949514c03f91d214a5fb9c5e8e535e2909 Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Thu, 12 Dec 2024 15:46:28 +0100 Subject: [PATCH 109/199] ACP-4467: Added fixes. --- .../202410.0/install-the-payments-feature.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index d07a092e443..badd51aef1a 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -47,9 +47,7 @@ Make sure that the following modules have been installed: ### 2) Set up Express Checkout payments configuration -1. Add the following configuration to your project: - -2. Configure the checkout payment step to hide the express checkout payment methods. +1. Configure the checkout payment step to hide the express checkout payment methods. Depending on your project needs, you can exclude the payment methods that you do not want to show on the checkout payment step. In case you are using the ACP Payone app, you can exclude the `payone-paypal-express` payment method. @@ -109,7 +107,7 @@ Make sure that: {% endinfo_block %} -3. Configure the checkout steps to hide during the express checkout flow. +2. Configure the checkout steps to hide during the express checkout flow. The express checkout flow is a simplified checkout flow that skips some of the checkout steps. Depending on your project needs, you can configure the checkout steps to be skipped during the express checkout flow. @@ -146,8 +144,10 @@ Make sure that: {% endinfo_block %} -4. Configure the quote fields to be cleaned during the express checkout flow. +3. Configure the quote fields to be cleaned during the express checkout flow. When customers return to the cart page during the express checkout flow, certain quote fields are cleared to allow them to restart the checkout process from the beginning. +In the example below, the `PAYMENT`, `PAYMENTS`, `SHIPMENT`, `BILLING_ADDRESS`, `SHIPPING_ADDRESS`, and `PRE_ORDER_PAYMENT_DATA` quote fields are cleared during the express checkout flow. +Chose the quote fields that you want to clear during the express checkout flow based on your project needs. **src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** From 83348213ac6a7ba3fae35f966cd2691a056a988d Mon Sep 17 00:00:00 2001 From: Alexey Kravchenko Date: Thu, 12 Dec 2024 16:53:34 +0200 Subject: [PATCH 110/199] FRW-9287: update twig integration guide --- .../upgrade-the-twig-module.md | 8 ++++---- .../twig-and-twigextension.md | 19 +++++++++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-twig-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-twig-module.md index 9850bf81dfb..3828f459e44 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-twig-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-twig-module.md @@ -89,10 +89,10 @@ class ShopApplicationDependencyProvider extends SprykerShopApplicationDependency namespace Pyz\Zed\Twig; use Spryker\Service\UtilDateTime\Plugin\Twig\DateTimeFormatterTwigPlugin; -use Spryker\Shared\Twig\Plugin\DebugTwigPlugin; use Spryker\Shared\Twig\Plugin\FormTwigPlugin; use Spryker\Shared\Twig\Plugin\RoutingTwigPlugin; use Spryker\Shared\Twig\Plugin\SecurityTwigPlugin; +use Spryker\Shared\Twig\Plugin\VarDumperTwigPlugin; use Spryker\Zed\Application\Communication\Plugin\Twig\ApplicationTwigPlugin; use Spryker\Zed\ChartGui\Communication\Plugin\Twig\Chart\ChartGuiTwigPlugin; use Spryker\Zed\Currency\Communication\Plugin\Twig\CurrencyTwigPlugin; @@ -135,7 +135,7 @@ class TwigDependencyProvider extends SprykerTwigDependencyProvider protected function getTwigPlugins(): array { return [ - new DebugTwigPlugin(), + new VarDumperTwigPlugin(), new FormTwigPlugin(), new HttpKernelTwigPlugin(), new RoutingTwigPlugin(), @@ -224,10 +224,10 @@ class EventDispatcherDependencyProvider extends SprykerEventDispatcherDependency namespace Pyz\Yves\Twig; use Spryker\Service\UtilDateTime\Plugin\Twig\DateTimeFormatterTwigPlugin; -use Spryker\Shared\Twig\Plugin\DebugTwigPlugin; use Spryker\Shared\Twig\Plugin\FormTwigPlugin; use Spryker\Shared\Twig\Plugin\RoutingTwigPlugin; use Spryker\Shared\Twig\Plugin\SecurityTwigPlugin; +use Spryker\Shared\Twig\Plugin\VarDumperTwigPlugin; use Spryker\Yves\CmsContentWidget\Plugin\Twig\CmsContentWidgetTwigPlugin; use Spryker\Yves\Http\Plugin\Twig\HttpKernelTwigPlugin; use Spryker\Yves\Http\Plugin\Twig\RuntimeLoaderTwigPlugin; @@ -266,7 +266,7 @@ class TwigDependencyProvider extends SprykerTwigDependencyProvider protected function getTwigPlugins(): array { return [ - new DebugTwigPlugin(), + new VarDumperTwigPlugin(), new FormTwigPlugin(), new HttpKernelTwigPlugin(), new RoutingTwigPlugin(), diff --git a/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md b/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md index a59d0f33705..4e25bcb6c4c 100644 --- a/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md +++ b/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md @@ -169,19 +169,29 @@ This interface gets the Twig environment and `ContainerInterface` to be able to ```php addExtension(new DebugExtension()); + $twig->addExtension(new DumpExtension(new VarCloner())); return $twig; } } + ``` {% info_block infoBox %} From 0ec0d677589491956e6a37800a60a7e4e231611c Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 12 Dec 2024 18:52:26 +0200 Subject: [PATCH 111/199] tw-review --- .../install-the-payments-glue-api.md | 25 +++--- .../202410.0/install-the-payments-feature.md | 83 ++++++++----------- 2 files changed, 50 insertions(+), 58 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md index 22ad53bb0f3..11023fc2ca7 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md @@ -142,8 +142,8 @@ Activate the following plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |--------------------------------------------------------|----------------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------| -| PaymentMethodsByCheckoutDataResourceRelationshipPlugin | Adds payment-methods resource as relationship in case `RestCheckoutDataTransfer` is provided as payload. | None | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | -| PaymentCustomersResourceRoutePlugin | Returns customer data that should be used on the store front address page. | None | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | +| PaymentMethodsByCheckoutDataResourceRelationshipPlugin | Adds the `payment-methods` resource as relationship in case `RestCheckoutDataTransfer` is provided as payload. | | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | +| PaymentCustomersResourceRoutePlugin | Returns customer data to use on the Storefront address page. | | Spryker\Glue\PaymentsRestApi\Plugin\GlueApplication | **src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php** @@ -174,7 +174,7 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency return $resourceRelationshipCollection; } - + /** * {@inheritDoc} * @@ -191,11 +191,12 @@ class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependency {% info_block warningBox "Verification" %} -To verify `PaymentMethodsByCheckoutDataResourceRelationshipPlugin` is activated, send a POST request to `https://glue.mysprykershop.com/checkout-data?include=payment-methods` and make sure that `checkout-data` resource has a relationship to the `payment-methods` resources. -To verify `PaymentCustomersResourceRoutePlugin` is activated, send a POST request to `https://glue.mysprykershop.com/payment-customers` and make sure that you get a response with customer data. +* To verify `PaymentMethodsByCheckoutDataResourceRelationshipPlugin` is activated, send a `POST https://glue.mysprykershop.com/checkout-data?include=payment-methods` and request and make sure that `checkout-data` resource has a relationship to the `payment-methods` resources. +* To verify `PaymentCustomersResourceRoutePlugin` is activated, send a `POST https://glue.mysprykershop.com/payment-customers` request and make sure that customer data is returned. -Here is an example request for the PayOne PayPal Express payment method, used by a guest or authorized customer to retrieve user data such as addresses and other information from the PSP: https://glue.mysprykershop.com/payment-customers. +Here is an example request for the PayOne PayPal Express payment method used by a guest or authorized customer to retrieve user data such as addresses from the PSP: +`POST https://glue.mysprykershop.com/payment-customers` ```json { "data": { @@ -218,8 +219,10 @@ Here is an example request for the PayOne PayPal Express payment method, used by } ``` -Depending on the payment method, the response may vary. -An example of the response: +The response can be different depending on the payment method. + +
    + Response example ```json { @@ -273,6 +276,8 @@ An example of the response: } ``` +
    + {% endinfo_block %} ### Configure mapping @@ -281,7 +286,7 @@ Mappers should be configured on a project level to map the data from the request | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | | --- | --- | --- |--- | -| PaymentsQuoteMapperPlugin | Adds a mapper that maps Payments information to `QuoteTransfer`. | None | `Spryker\Zed\PaymentsRestApi\Communication\Plugin\CheckoutRestApi` | +| PaymentsQuoteMapperPlugin | Adds a mapper that maps Payments information to `QuoteTransfer`. | | `Spryker\Zed\PaymentsRestApi\Communication\Plugin\CheckoutRestApi` | **src/Pyz/Zed/CheckoutRestApi/CheckoutRestApiDependencyProvider.php** @@ -317,7 +322,7 @@ To verify that `PaymentsQuoteMapperPlugin` is activated, send a POST request to | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | | --- | --- | --- | --- | -| SelectedPaymentMethodCheckoutDataResponseMapperPlugin | Maps the selected payment method data to the checkout-data resource attributes. | None | Spryker\Glue\PaymentsRestApi\Plugin\CheckoutRestApi | +| SelectedPaymentMethodCheckoutDataResponseMapperPlugin | Maps the selected payment method data to the checkout-data resource attributes. | | Spryker\Glue\PaymentsRestApi\Plugin\CheckoutRestApi | **src/Pyz/Glue/CheckoutRestApi/CheckoutRestApiDependencyProvider.php** diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index d07a092e443..bf137493c2c 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -2,11 +2,13 @@ {% info_block errorBox %} -The following feature integration guide expects the basic feature to be in place.
    The current feature integration guide only adds the following functionalities: -* Payment Back Office UI; -* Payment method per store; -* Payment data import. -* Payment App express checkout flow. +The following feature integration guide expects the basic feature to be in place. + +The current feature integration guide only adds the following functionalities: +* Payment Back Office UI +* Payment method per store +* Payment data import +* Payment App express checkout flow. {% endinfo_block %} @@ -34,14 +36,14 @@ Make sure that the following modules have been installed: | MODULE | EXPECTED DIRECTORY | REQUIRED ONLY FOR ACP PAYMENTS | |---------------------------|--------------------------------------------------|--------------------------------| -| PaymentDataImport | vendor/spryker/payment-data-import | no | -| PaymentGui | vendor/spryker/payment-gui | no | -| PaymentApp | vendor/spryker/payment-app | yes | -| PaymentAppExtension | vendor/spryker/payment-app-extension | yes | -| PaymentAppShipment | vendor/spryker/payment-app-shipment | yes | -| PaymentAppWidget | vendor/spryker-shop/payment-app-widget | yes | -| PaymentAppWidgetExtension | vendor/spryker-shop/payment-app-widget-extension | yes | -| PaymentCartConnector | vendor/spryker/payment-cart-connector | no | +| PaymentDataImport | vendor/spryker/payment-data-import | | +| PaymentGui | vendor/spryker/payment-gui | | +| PaymentApp | vendor/spryker/payment-app | v | +| PaymentAppExtension | vendor/spryker/payment-app-extension | v | +| PaymentAppShipment | vendor/spryker/payment-app-shipment | v | +| PaymentAppWidget | vendor/spryker-shop/payment-app-widget | v | +| PaymentAppWidgetExtension | vendor/spryker-shop/payment-app-widget-extension | v | +| PaymentCartConnector | vendor/spryker/payment-cart-connector | | {% endinfo_block %} @@ -49,9 +51,7 @@ Make sure that the following modules have been installed: 1. Add the following configuration to your project: -2. Configure the checkout payment step to hide the express checkout payment methods. -Depending on your project needs, you can exclude the payment methods that you do not want to show on the checkout payment step. -In case you are using the ACP Payone app, you can exclude the `payone-paypal-express` payment method. +2. Configure the checkout payment step to hide the express checkout payment methods. For example, if you're using the ACP Payone app, you can exclude the `payone-paypal-express` payment method. **src/Pyz/Yves/CheckoutPage/CheckoutPageConfig.php** @@ -75,10 +75,7 @@ class CheckoutPageConfig extends SprykerCheckoutPageConfig } ``` -Cart reload, remove item, and update quantity are the default cart operations. -Define the payment methods that you want to exclude from the cart operations. -During the checkout steps, cart reloads are executed multiple times, and the payment methods are cleared. -In the example below, the `PayPal Express` payment method name should be excluded from the cart operations in order to prevent the payment method from being cleared. +3. Cart reload, remove item, and update quantity are the default cart operations. Define the payment methods that you want to exclude from the cart operations. During the checkout steps, cart reloads are executed multiple times, and the payment methods are cleared. In the example below, the `PayPal Express` payment method name should be excluded from the cart operations to prevent the payment method from being cleared. **src/Pyz/Zed/PaymentCartConnector/PaymentCartConnectorConfig.php** @@ -102,16 +99,11 @@ class PaymentCartConnectorConfig extends SprykerPaymentCartConnectorConfig {% info_block warningBox "Verification" %} -Make sure that: -* The payment methods you have excluded are not shown on the checkout payment step page: - * Add several products to the cart and proceed to the checkout. - * Check that the excluded payment methods are not shown on the checkout payment step page. +Add several products to cart and proceed to checkout. Make sure that the payment methods you've excluded are not shown on the checkout payment step page. {% endinfo_block %} -3. Configure the checkout steps to hide during the express checkout flow. -The express checkout flow is a simplified checkout flow that skips some of the checkout steps. -Depending on your project needs, you can configure the checkout steps to be skipped during the express checkout flow. +3. The express checkout flow is a simplified checkout flow that skips some of the checkout steps. Depending on your project needs, configure the needed checkout steps to be skipped during the express checkout flow. **src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** @@ -137,17 +129,16 @@ class PaymentAppWidgetConfig extends SprykerPaymentAppWidgetConfig ``` {% info_block warningBox "Verification" %} -Make sure that: -* The express checkout flow skips the checkout steps you have configured: - * Add several products to the cart and proceed to the express checkout flow. - * Use the express checkout widget to place an order shown on the cart page. - * After the confirmation, you will be redirected to the order confirmation page. - * Check that the express checkout flow skips the checkout steps you have configured. + +1. Add several products to the cart and proceed to the express checkout flow. +2. Use the express checkout widget to place an order shown on the cart page. +3. Confirming the order opens the order confirmation page. +Make sure the steps you have configured to skip are skipped in the checkout flow. {% endinfo_block %} -4. Configure the quote fields to be cleaned during the express checkout flow. -When customers return to the cart page during the express checkout flow, certain quote fields are cleared to allow them to restart the checkout process from the beginning. +4. When a customer returns to the cart page during the express checkout flow, some quote fields are cleared to allow them to restart the checkout process from the beginning. Configure the quote fields to be cleared during the express checkout flow. + **src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** @@ -178,16 +169,14 @@ class PaymentAppWidgetConfig extends SprykerPaymentAppWidgetConfig {% info_block warningBox "Verification" %} -Make sure that: -* The quote fields you have configured are cleared when customers return to the cart page during the express checkout flow: - * Add several products to the cart and proceed to the express checkout flow. - * Use the express checkout widget to place an order shown on the cart page. - * After the confirmation, you will be redirected to the order confirmation page. - * Return to the cart page and check that the quote fields you have configured are cleared. +1. Add several products to cart and proceed to the express checkout flow. +2. Use the express checkout widget to place an order shown on the cart page. +3. Confirming the order opens the order confirmation page. +4. Return to the cart page and check that the quote fields you have configured are cleared. {% endinfo_block %} -5. Configure the default shipment method for the express checkout payment that will be used in the order and the cost is added to the total price. +5. Configure a shipment method to be used by default in the express checkout and its cost to be added to the total price. In the example below, the `spryker_dummy_shipment-standard` shipment method is configured for the `payone-paypal-express` payment method. The key is the payment method key, and the value is the shipment method key. @@ -214,12 +203,10 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig {% info_block warningBox "Verification" %} -Make sure that: -* The shipment method you have configured is used for the express checkout payment request: - * Add several products to the cart and proceed to the express checkout flow. - * Use the express checkout widget to place an order shown on the cart page. - * After the confirmation, you will be redirected to the order confirmation page. - * Check that the shipment method you have configured is used for the express checkout payment request. +1. Add several products to cart and proceed to the express checkout flow. +2. Use the express checkout widget to place an order shown on the cart page. +3. Confirm the order, which opens the order confirmation page. + Make sure the shipment methods you've configured to be used by default was applied to the order. {% endinfo_block %} From 7e22281643449fa62c9a3f8fad68262b7996b70d Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Thu, 12 Dec 2024 19:18:41 +0200 Subject: [PATCH 112/199] Update install-the-payments-feature.md --- .../202410.0/install-the-payments-feature.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index fc6df8f4044..d928f2c72a5 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -135,8 +135,7 @@ Make sure the steps you have configured to skip are skipped in the checkout flow {% endinfo_block %} -4. When a customer returns to the cart page during the express checkout flow, some quote fields are cleared to allow them to restart the checkout process from the beginning. Configure the quote fields to be cleared during the express checkout flow. In the example below, the `PAYMENT`, `PAYMENTS`, `SHIPMENT`, `BILLING_ADDRESS`, `SHIPPING_ADDRESS`, and `PRE_ORDER_PAYMENT_DATA` quote fields are cleared during the express checkout flow. -Chose the quote fields that you want to clear during the express checkout flow based on your project needs. +4. When a customer returns to the cart page during the express checkout flow, some quote fields are cleared to allow them to restart the checkout process from the beginning. In the example below, the `PAYMENT`, `PAYMENTS`, `SHIPMENT`, `BILLING_ADDRESS`, `SHIPPING_ADDRESS`, and `PRE_ORDER_PAYMENT_DATA` quote fields are configured to be cleared. Configure the quote fields to be cleared during the express checkout flow according to your needs. **src/Pyz/Yves/PaymentAppWidget/PaymentAppWidgetConfig.php** @@ -209,7 +208,7 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig {% endinfo_block %} -6. Enable the express checkout shipment for the product bundles. +6. Enable the express checkout shipment for product bundles. **src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** @@ -234,16 +233,13 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig {% info_block warningBox "Verification" %} -Make sure that: -* The express checkout shipment is enabled for the product bundle: - * Add a product bundle to the cart and proceed to the express checkout flow. - * Place an order using the express checkout flow. - * The order is placed successfully. +Add a product bundle to cart and place the order using the express checkout flow. + Make sure the order is placed successfully. {% endinfo_block %} -7. Enable the cart clean up for the regular checkout flow. -When customers start the regular checkout, the quote is cleaned up to allow them to restart the checkout process from the beginning. +7. When customers start a regular checkout, the quote is cleaned up to let them to restart the checkout process from the beginning. Enable cart clean up for the regular checkout flow. + **src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** @@ -267,12 +263,14 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig } } ``` -Make sure that: -* The quote is cleaned up when customers start the regular checkout: - * Add several products to the cart and proceed to the express checkout flow. - * On summary page, click the "Back to cart" button. - * Start the regular checkout by clicking the "Checkout" button. - * You will be redirected to the address step of the regular checkout. + +{% info_block warningBox "Verification" %} + + +* Add several products to cart and proceed to the express checkout flow. +* On the summary page, click the **Back to cart** button. +* Start the regular checkout by clicking the **Checkout** button. +* You will be redirected to the address step of the regular checkout. {% endinfo_block %} From 98f10bdfa7251b6a6e6f38a06ac155fd7fbe397d Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 13 Dec 2024 12:43:45 +0200 Subject: [PATCH 113/199] meta --- .../backend-development/zed/create-table-views.md | 2 +- .../zed/persistence-layer/database-overview.md | 14 +++++++------- .../database-schema-definition.md | 12 ++++++------ .../zed/persistence-layer/entity-manager.md | 12 ++++++------ .../zed/persistence-layer/entity.md | 12 ++++++------ .../zed/persistence-layer/persistence-layer.md | 14 +++++++------- .../query-container/implement-a-query-container.md | 4 ++-- .../query-container/query-container.md | 6 +++--- .../query-container/using-a-query-container.md | 4 ++-- .../query-objects-creation-and-usage.md | 12 ++++++------ .../zed/persistence-layer/repository.md | 12 ++++++------ docs/dg/dev/backend-development/zed/zed.md | 2 +- docs/dg/dev/best-practices/best-practices.md | 2 +- .../non-functional-requirement-templates.md | 2 +- 14 files changed, 55 insertions(+), 55 deletions(-) diff --git a/docs/dg/dev/backend-development/zed/create-table-views.md b/docs/dg/dev/backend-development/zed/create-table-views.md index edd89c8049a..d2bd424a2f5 100644 --- a/docs/dg/dev/backend-development/zed/create-table-views.md +++ b/docs/dg/dev/backend-development/zed/create-table-views.md @@ -1,6 +1,6 @@ --- title: Create table views -description: Use the guide to render data, fetched from the database, in the table. +description: Learn to create and configure table views in Zed. This guide covers steps for defining custom table data and optimizing the user interface for efficient data management. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/t-create-table-view diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md b/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md index 94bd59c778b..929dcf419c7 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/database-overview.md @@ -1,6 +1,6 @@ --- title: Database overview -description: This document overviews the database in the ORM directory. +description: Overview of the persistence layer. Learn about schema design, entity management, and efficient data handling in Zed backend development. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/database-overview @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html related: - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html --- diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md b/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md index 2b49ab766c6..77dd6aea550 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.md @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html --- With Propel, a [database schema](http://propelorm.org/documentation/reference/schema.html) is defined in an XML file. Each module has its own part of the big schema that is collected and merged. diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md b/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md index 731ac1b05fe..ad413267381 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.md @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html --- From Kernel version 3.2, you can create an entity manager class in your `Persistence` layer. It is responsible for saving, updating, and deleting data. Using the class, you can separate data from persistence details (Propel). diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/entity.md b/docs/dg/dev/backend-development/zed/persistence-layer/entity.md index cededf5eb30..3e0f71af2c5 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/entity.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/entity.md @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/entity.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html --- In Spryker, an entity represents one entry from a table in the database. Entities are an implementation of the [Active record design pattern](https://en.wikipedia.org/wiki/Active_record_pattern), so their usage is very simple. For more details, see [Propel's Active Record Reference](http://propelorm.org/documentation/reference/active-record.html). diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/persistence-layer.md b/docs/dg/dev/backend-development/zed/persistence-layer/persistence-layer.md index 83679735422..d98ee446370 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/persistence-layer.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/persistence-layer.md @@ -9,19 +9,19 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/persistence-layer.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html - title: About the Business layer link: docs/dg/dev/backend-development/zed/business-layer/business-layer.html - title: About Communication layer diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.md index fe91a8b9de4..6794c8640d5 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.md @@ -10,9 +10,9 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/query-container/implementing-a-query-container.html related: - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Using a query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/using-a-query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.html --- {% info_block infoBox "When to use query containers" %} diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.md index 2833d2e7202..b68020dacd4 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.md @@ -1,6 +1,6 @@ --- title: About the query container -description: A query container holds all the database queries of the current module. +description: Query containers in Persistence Layer. This guide explains their role in managing database queries, ensuring modular and efficient data access for Zed backend development. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/query-container @@ -9,9 +9,9 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html related: - title: Implement a query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/implementing-a-query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.html - title: Using a query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/using-a-query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.html --- {% info_block infoBox "When to use query containers" %} diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md index 161c82c00ea..0cb4db03069 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-container/using-a-query-container.md @@ -9,9 +9,9 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/query-container/using-a-query-container.html related: - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Implement a query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/implementing-a-query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/implement-a-query-container.html --- {% info_block infoBox "When to use query containers" %} diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md b/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md index e3065fdb423..b2541fcebab 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.md @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Repository - link: docs/scos/dev/back-end-development/zed/persistence-layer/repository.html + link: docs/dg/dev/backend-development/zed/persistence-layer/repository.html --- Query objects provide an object-oriented API for writing database queries which are used in [query containers](/docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html). diff --git a/docs/dg/dev/backend-development/zed/persistence-layer/repository.md b/docs/dg/dev/backend-development/zed/persistence-layer/repository.md index dd42da6405a..deaf6634e86 100644 --- a/docs/dg/dev/backend-development/zed/persistence-layer/repository.md +++ b/docs/dg/dev/backend-development/zed/persistence-layer/repository.md @@ -9,17 +9,17 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/persistence-layer/repository.html related: - title: Database overview - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-overview.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-overview.html - title: Database schema definition - link: docs/scos/dev/back-end-development/zed/persistence-layer/database-schema-definition.html + link: docs/dg/dev/backend-development/zed/persistence-layer/database-schema-definition.html - title: Entity - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity.html - title: Entity manager - link: docs/scos/dev/back-end-development/zed/persistence-layer/entity-manager.html + link: docs/dg/dev/backend-development/zed/persistence-layer/entity-manager.html - title: About the query container - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-container/query-container.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-container/query-container.html - title: Query objects - creation and usage - link: docs/scos/dev/back-end-development/zed/persistence-layer/query-objects-creation-and-usage.html + link: docs/dg/dev/backend-development/zed/persistence-layer/query-objects-creation-and-usage.html --- Since Kernel version 3.2 it's possible to use a Repository class in your persistence layer. The repository implements the [repository pattern](https://martinfowler.com/eaaCatalog/repository.html), which means you have a clear separation between business and persistence layers. Propel entities are not allowed outside the persistence layer. We are using transfer objects instead. This separation enables switching to different database systems or ORMs, you could even use NOSQL to store your data. diff --git a/docs/dg/dev/backend-development/zed/zed.md b/docs/dg/dev/backend-development/zed/zed.md index 629ff5538b6..5005b23937d 100644 --- a/docs/dg/dev/backend-development/zed/zed.md +++ b/docs/dg/dev/backend-development/zed/zed.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/back-end-development/zed/zed.html related: - title: Add navigation in the Back Office - link: docs/scos/dev/back-end-development/zed/add-navigation-in-the-back-office.html + link: docs/dg/dev/backend-development/zed/add-navigation-in-the-back-office.html --- Zed is one of the application layers of the Spryker Commerce OS, providing the Back Office and backend functionality. diff --git a/docs/dg/dev/best-practices/best-practices.md b/docs/dg/dev/best-practices/best-practices.md index 59faff59a07..ba17943c940 100644 --- a/docs/dg/dev/best-practices/best-practices.md +++ b/docs/dg/dev/best-practices/best-practices.md @@ -1,6 +1,6 @@ --- title: Best practices -description: Best practices for developers working on Spryker Commerce OS +description: Discover best practices for Spryker development, including coding standards, modular architecture, testing strategies, and optimization techniques. template: concept-topic-template redirect_from: - /docs/scos/dev/best-practices/ diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md index b197070d1f2..4050f195d0d 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md @@ -1,6 +1,6 @@ --- title: Non-functional requirement templates -description: +description: This guide provides templates to document non-functional requirements in Spryker, focusing on performance, security, scalability, and maintainability. template: concept-topic-template redirect_from: --- From ac027308d35004d18386ddfddce3968fffd46826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Fri, 13 Dec 2024 13:36:32 +0100 Subject: [PATCH 114/199] Update pay-pal-express.md --- .../payment-method-flows/pay-pal-express.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md index e3d408a581a..8dcb134812c 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -129,7 +129,7 @@ After making a request to the PayOne API, the payment is created in the PayOne a } ``` -After the customer clicks "Complete Purchase" in the PayPal Express modal he should be redirected to the summary page. +After the customer clicks "Complete Purchase" in the PayPal Express modal he will be redirected to the summary page. Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs to be made to get the customer data. From ffbbc175758c01c9c989d26225f800e3504cabee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Fri, 13 Dec 2024 13:41:33 +0100 Subject: [PATCH 115/199] ACP-4047 Updated per CR --- .../payment-method-flows/pay-pal-express.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md index 8dcb134812c..b1f0a999d91 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -68,6 +68,8 @@ When the custome clicks on "Pay with PayPal Express" button, the `InitializePreO #### Pre-order payment initialization +This script example makes a GLUE request to the `/payments` API endpoint to initialize the pre-order payment. It is important to note that the `transactionId` is empty in the first request but has to be used in further requests. The quote data and the payment method data also needs to be passed. The response of this request has `preOrderPaymentData` that will be used in further requests. + ```JS async initializePreOrderPayment() { From ff55657cb2bd9bc0349ed16589bbe9fbd344a051 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 13 Dec 2024 14:47:04 +0200 Subject: [PATCH 116/199] tw-review --- .../payment-method-flows/pay-pal.md | 37 ------------------- .../payone-paypal-payment-method-flow.md | 36 ++++++++++++++++++ .../payone-acp-app.md | 9 +++-- 3 files changed, 41 insertions(+), 41 deletions(-) delete mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md deleted file mode 100644 index 08dd0a6b9f8..00000000000 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Payone PayPal -description: Payone offers your customers to pay with PayPal. -template: howto-guide-template -last_updated: Now 8, 2024 -redirect_from: - - /docs/aop/user/apps/payone.html - - /docs/acp/user/apps/payone.html - - /docs/pbc/all/payment-service-providers/payone/payone.html - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html - - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html ---- - -## PayPal payment flow - -When customers pay with PayPal, the flow is as follows: - -1. Customer is redirected to the PayPal website, where they have to log in. -2. On the PayPal website, the customer either cancels or validates the transaction. -3. Customer is taken to the checkout page with the message of either a successfully placed or canceled order. - -When paying with PayPal, customers can: - -- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization, without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. -- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. - -When customers pay with PayPal, a shop owner can do the following: - -- Charge customers once the order is ready to be shipped, that is, capture the funds. -- Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. -- Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. - -## Other Payment method flows - -* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md new file mode 100644 index 00000000000..b5931a77478 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md @@ -0,0 +1,36 @@ +--- +title: Payone PayPal payment method flow +description: Payone offers your customers to pay with PayPal. +template: howto-guide-template +last_updated: Now 8, 2024 +redirect_from: + - /docs/aop/user/apps/payone.html + - /docs/acp/user/apps/payone.html + - /docs/pbc/all/payment-service-providers/payone/payone.html + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html + - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +--- + +When customers pay with PayPal, the flow is as follows: + +1. Customer is redirected to the PayPal website. +2. Customer logs in. +3. On the PayPal website, the customer either cancels or validates the transaction. +4. Customer is redirected to the checkout page where a message about order being placed or canceled is displayed. + +When paying with PayPal, customers can do the following: + +- Cancel the entire order before shipment and receive the money back; this voids the preauthorization without charging a fee. +- Cancel the order after it's ready for shipment and receive the money back; this issues a refund. +- Return part or all of the items from an order; this refunds the money for the returned items or for the full order respectively. + +When customers pay with PayPal, a shop owner can do the following: + +- Charge a customer once their order is ready to be shipped, that is, capture the funds. +- Cancel an entire order, that is, void the existing preauthorization. This doesn't charge the customer. +- Cancel one or more items from an order before shipment. The curtomer is charged only for the items that are going to be shipped. + +## Other Payment method flows + +* [Credit Card](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* [PayPal Express](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md index bc84d9633a8..83c6432da33 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payone-acp-app.md @@ -22,7 +22,8 @@ You can have multiple accounts with Payone. For example, you can have different The Payone App supports the B2B and B2C business models and the following payment methods: * Credit Card -* PayPal Standard and Express +* PayPal Standard +* PayPal Express * Klarna: * Invoice: pay later * Installments: slice it @@ -47,9 +48,9 @@ The payment modes like Preauthorization and Capture must be set via the Spryker ## Payment method flows -* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) -* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) +* [Credit Card](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* [PayPal](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* [PayPal Express](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) ## Current limitations From a10d3d738dfd1ae2c392d88cf5f0abcbd831347f Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 13 Dec 2024 15:06:13 +0200 Subject: [PATCH 117/199] meta --- .../non-functional-requirement-templates.md | 2 +- .../operatable-feature-guidelines.md | 2 +- .../operational-and-deployment-guidelines.md | 2 +- docs/dg/dev/code-contribution-guide.md | 5 +---- docs/dg/dev/guidelines/data-processing-guidelines.md | 6 +++--- docs/dg/dev/guidelines/module-configuration-convention.md | 6 +++--- docs/dg/dev/guidelines/project-development-guidelines.md | 6 +++--- docs/dg/dev/guidelines/security-guidelines.md | 7 ++++--- docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md | 2 +- 9 files changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md index 4050f195d0d..9df9173f55f 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/non-functional-requirement-templates.md @@ -1,6 +1,6 @@ --- title: Non-functional requirement templates -description: This guide provides templates to document non-functional requirements in Spryker, focusing on performance, security, scalability, and maintainability. +description: Define key system expectations using Spryker's non-functional requirement templates. Focus on performance, scalability, and security to align development goals effectively. template: concept-topic-template redirect_from: --- diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/operatable-feature-guidelines.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/operatable-feature-guidelines.md index e8f80e51df0..9417f330d9f 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/operatable-feature-guidelines.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/operatable-feature-guidelines.md @@ -1,6 +1,6 @@ --- title: Operatable feature guidelines -description: Guidelines for enabling application operation. +description: Learn Spryker’s operatable feature guidelines to ensure features are scalable, reliable, and manageable. Optimize performance while maintaining operational efficiency. last_updated: April 23, 2024 template: concept-topic-template related: diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/operational-and-deployment-guidelines.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/operational-and-deployment-guidelines.md index d284447a36c..87c1b80f68b 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/operational-and-deployment-guidelines.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/operational-and-deployment-guidelines.md @@ -43,7 +43,7 @@ Software architecture and design must ensure that there is no negative impact on ## Security guidelines -Make sure to define and follow your own project's [security best practices](/docs/scos/dev/guidelines/security-guidelines.html). +Make sure to define and follow your own project's [security best practices](/docs/dg/dev/guidelines/security-guidelines.html). ## Deployability guidelines diff --git a/docs/dg/dev/code-contribution-guide.md b/docs/dg/dev/code-contribution-guide.md index 289f6e36360..34424eddf3f 100644 --- a/docs/dg/dev/code-contribution-guide.md +++ b/docs/dg/dev/code-contribution-guide.md @@ -7,9 +7,6 @@ originalLink: https://documentation.spryker.com/2021080/docs/code-contribution-g originalArticleId: d5ded6f2-5bb9-4288-bc96-3fabf7e32c8f redirect_from: - /docs/scos/dev/code-contribution-guide.html -related: - - title: Contribute to the documentation - link: docs/scos/user/intro-to-spryker/contribute-to-the-documentation/contribute-to-the-documentation.html --- @@ -58,4 +55,4 @@ If you create a pull request and feel that the issue is important, [contact supp \ No newline at end of file +--> diff --git a/docs/dg/dev/guidelines/data-processing-guidelines.md b/docs/dg/dev/guidelines/data-processing-guidelines.md index 39ca78854bb..d9aa2026136 100644 --- a/docs/dg/dev/guidelines/data-processing-guidelines.md +++ b/docs/dg/dev/guidelines/data-processing-guidelines.md @@ -9,11 +9,11 @@ redirect_from: - /docs/scos/dev/guidelines/data-processing-guidelines.html related: - title: Making your Spryker shop secure - link: docs/scos/dev/guidelines/security-guidelines.html + link: docs/dg/dev/guidelines/security-guidelines.html - title: Module configuration convention - link: docs/scos/dev/guidelines/module-configuration-convention.html + link: docs/dg/dev/guidelines/module-configuration-convention.html - title: Project development guidelines - link: docs/scos/dev/guidelines/project-development-guidelines.html + link: docs/dg/dev/guidelines/project-development-guidelines.html - title: Data importer speed optimization link: docs/dg/dev/data-import/page.version/data-import-optimization-guidelines.html --- diff --git a/docs/dg/dev/guidelines/module-configuration-convention.md b/docs/dg/dev/guidelines/module-configuration-convention.md index 2c847f03e2e..dafd6f3bf6c 100644 --- a/docs/dg/dev/guidelines/module-configuration-convention.md +++ b/docs/dg/dev/guidelines/module-configuration-convention.md @@ -9,11 +9,11 @@ redirect_from: - /docs/scos/dev/guidelines/module-configuration-convention.html related: - title: Data Processing Guidelines - link: docs/scos/dev/guidelines/data-processing-guidelines.html + link: docs/dg/dev/guidelines/data-processing-guidelines.html - title: Making your Spryker shop secure - link: docs/scos/dev/guidelines/security-guidelines.html + link: docs/dg/dev/guidelines/security-guidelines.html - title: Project development guidelines - link: docs/scos/dev/guidelines/project-development-guidelines.html + link: docs/dg/dev/guidelines/project-development-guidelines.html --- ## Definitions diff --git a/docs/dg/dev/guidelines/project-development-guidelines.md b/docs/dg/dev/guidelines/project-development-guidelines.md index d3a62721a91..d5fcebaa37e 100644 --- a/docs/dg/dev/guidelines/project-development-guidelines.md +++ b/docs/dg/dev/guidelines/project-development-guidelines.md @@ -9,11 +9,11 @@ redirect_from: - /docs/scos/dev/guidelines/project-development-guidelines.html related: - title: Data Processing Guidelines - link: docs/scos/dev/guidelines/data-processing-guidelines.html + link: docs/dg/dev/guidelines/data-processing-guidelines.html - title: Making your Spryker shop secure - link: docs/scos/dev/guidelines/security-guidelines.html + link: docs/dg/dev/guidelines/security-guidelines.html - title: Module configuration convention - link: docs/scos/dev/guidelines/module-configuration-convention.html + link: docs/dg/dev/guidelines/module-configuration-convention.html --- Spryker OS exposes codebase projects, which enables a high level of customization and can satisfy complex business requirements. diff --git a/docs/dg/dev/guidelines/security-guidelines.md b/docs/dg/dev/guidelines/security-guidelines.md index 13aa57450dc..1882dc26c30 100644 --- a/docs/dg/dev/guidelines/security-guidelines.md +++ b/docs/dg/dev/guidelines/security-guidelines.md @@ -1,5 +1,6 @@ --- title: Security guidelines +description: Explore operational and deployment guidelines for efficient ecommerce system management. Focus on best practices for deployment, monitoring, and scaling infrastructure. last_updated: Sep 15, 2023 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/making-your-spryker-shop-secure @@ -9,11 +10,11 @@ redirect_from: - /docs/scos/dev/guidelines/making-your-spryker-shop-secure.html related: - title: Data Processing Guidelines - link: docs/scos/dev/guidelines/data-processing-guidelines.html + link: docs/dg/dev/guidelines/data-processing-guidelines.html - title: Module configuration convention - link: docs/scos/dev/guidelines/module-configuration-convention.html + link: docs/dg/dev/guidelines/module-configuration-convention.html - title: Project development guidelines - link: docs/scos/dev/guidelines/project-development-guidelines.html + link: docs/dg/dev/guidelines/project-development-guidelines.html --- This document describes the data security guidelines you need to follow on the application level. In cloud environments, infrastructure security measures are implemented by default, so they're not described. diff --git a/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md b/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md index 3a2eaf13b51..bc1f3d301a1 100644 --- a/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md +++ b/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/introduction-tutorials/tutorial-hello-world-spryker-commerce-os.html related: - title: Module configuration convention - link: docs/scos/dev/guidelines/module-configuration-convention.html + link: docs/dg/dev/guidelines/module-configuration-convention.html --- {% info_block infoBox %} From cc44123eb675d52bc5cf54dfeda0f5a1c49c2558 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 13 Dec 2024 15:06:24 +0200 Subject: [PATCH 118/199] Update code-contribution-guide.md --- docs/dg/dev/code-contribution-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dg/dev/code-contribution-guide.md b/docs/dg/dev/code-contribution-guide.md index 34424eddf3f..67aae57cc79 100644 --- a/docs/dg/dev/code-contribution-guide.md +++ b/docs/dg/dev/code-contribution-guide.md @@ -1,6 +1,6 @@ --- title: Code contribution guide -description: Contribute to Spryker repositories +description: Learn how to contribute code to Spryker with this comprehensive guide. Follow best practices for creating, reviewing, and submitting high-quality contributions efficiently. last_updated: Apr 3, 2024 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/code-contribution-guide From f6f6b54e143ce15288477f4513b30e562e914c0a Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Fri, 13 Dec 2024 14:59:28 +0000 Subject: [PATCH 119/199] DEV Migrate pt1 SEO Update Meta desc changed for the following pages; - upgrade and migrate > migrate from auth to securitygui module - upgrade and migrate > migrate from tslint to eslint - upgrade and migrate > migrate from yarn to npm - upgrade and migrate > migrate to cloud > migrate to cloud adapt the filesystem based features - upgrade and migrate > migrate to cloud > migrate to cloud add frontend assets - upgrade and migrate > migrate to cloud > migrate to cloud choose a multistore setup - upgrade and migrate > migrate to cloud > migrate to cloud finalize the migration - upgrade and migrate > migrate to cloud > migrate to cloud integrate the docker sdk - upgrade and migrate > migrate to cloud > migrate to cloud migrate database - upgrade and migrate > migrate to cloud > migrate to cloud migrate non standard services - upgrade and migrate > migrate to cloud > migrate to cloud restore es and redis - upgrade and migrate > migrate to cloud > migrate to cloud upgrade the php version - upgrade and migrate > migrate to cloud > migrate to cloud wire custom services --- .../migrate-from-auth-to-securitygui-module.md | 1 + .../dg/dev/upgrade-and-migrate/migrate-from-tslint-to-eslint.md | 2 +- docs/dg/dev/upgrade-and-migrate/migrate-from-yarn-to-npm.md | 2 +- .../migrate-to-cloud-adapt-the-filesystem-based-features.md | 2 +- .../migrate-to-cloud/migrate-to-cloud-add-frontend-assets.md | 2 +- .../migrate-to-cloud-choose-a-multi-store-setup.md | 2 +- .../migrate-to-cloud/migrate-to-cloud-finalize-the-migration.md | 2 +- .../migrate-to-cloud-integrate-the-docker-sdk.md | 2 +- .../migrate-to-cloud/migrate-to-cloud-migrate-database.md | 2 +- .../migrate-to-cloud-migrate-non-standard-services.md | 2 +- .../migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md | 2 +- .../migrate-to-cloud-upgrade-the-php-version.md | 2 +- .../migrate-to-cloud/migrate-to-cloud-wire-custom-services.md | 2 +- 13 files changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-from-auth-to-securitygui-module.md b/docs/dg/dev/upgrade-and-migrate/migrate-from-auth-to-securitygui-module.md index 1c700ac2bdf..6d8f5e90a78 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-from-auth-to-securitygui-module.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-from-auth-to-securitygui-module.md @@ -1,5 +1,6 @@ --- title: Migrate from Auth to SecurityGui module +description: Learn how to migrate from the Auth module to the Security GUI Module within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-auth-module-to-securitygui-module diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-from-tslint-to-eslint.md b/docs/dg/dev/upgrade-and-migrate/migrate-from-tslint-to-eslint.md index c00c8acc364..f92fb293723 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-from-tslint-to-eslint.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-from-tslint-to-eslint.md @@ -1,6 +1,6 @@ --- title: Migrate from TSLint to ESLint -description: Use this guide to migrate the project from TSLint to ESLint. +description: Use this guide to learn how to migrate the project from TSLint to ESLint for your Spryker based projects. last_updated: Mar 24, 2023 template: module-migration-guide-template redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-from-yarn-to-npm.md b/docs/dg/dev/upgrade-and-migrate/migrate-from-yarn-to-npm.md index 369fdf08a52..16015fa7a43 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-from-yarn-to-npm.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-from-yarn-to-npm.md @@ -1,7 +1,7 @@ --- title: Migrate from Yarn to npm last_updated: May 15, 2023 -description: Use this guide to migrate the project from Yarn to npm. +description: Learn how to migrate your Spryker based projects from Yarn to npm in this helpful migration guide. template: concept-topic-template redirect_from: - /docs/scos/dev/front-end-development/migration-guide-switch-from-yarn-to-npm.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md index 4c4a2dcf32f..4b7846f6c14 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Adapt the file system-based features' -description: To migrate to SCCOS, one of the steps, is restoring Elasticsearch and Redis. +description: Learn how to migrate to Spryker Cloud Commerce os and adapt the file system based features for your Spryker project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-8-adapt-the-filesystem-based-features.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-add-frontend-assets.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-add-frontend-assets.md index e16f2888a93..5ae368c8a1e 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-add-frontend-assets.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-add-frontend-assets.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Add frontend assets' -description: To migrate to SCCOS, one of the steps, is adding the frontend assets. +description: Learn how to migrate to Spryker Cloud Commerce OS and add frontend assets in your Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-10-add-frontend-assets.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-choose-a-multi-store-setup.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-choose-a-multi-store-setup.md index 901d7e07e11..a35d28641f0 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-choose-a-multi-store-setup.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-choose-a-multi-store-setup.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Choose a multi-store setup' -description: To migrate to SCCOS, one of the steps, is choosing a multi-store setup +description: Learn how to migrate to Spryker Cloud Commerce OS and choose a multi-store setup within your Spryker based projects. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-12-choose-a-multi-store-setup.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-finalize-the-migration.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-finalize-the-migration.md index b745affbf4a..4e79d557141 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-finalize-the-migration.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-finalize-the-migration.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Finalize the migration' -description: +description: Learn about how to finalize the migration to Spryker Cloud Commerce OS and what you need to do to prepare your Spryker project for go live. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-14-finalize-the-migration.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-integrate-the-docker-sdk.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-integrate-the-docker-sdk.md index d05a4929622..4c08538322c 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-integrate-the-docker-sdk.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-integrate-the-docker-sdk.md @@ -1,6 +1,6 @@ --- title: "Migrate to cloud: Integrate the Docker SDK" -description: Learn how to integrate the Docker SDK +description: Learn how to integrate the Docker SDK to start your migration to Spryker Cloud Commerce OS. template: howto-guide-template last_updated: Dec 6, 2023 redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-database.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-database.md index 7cef590c69e..6119a2f9e8d 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-database.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-database.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Migrate database' -description: To migrate to SCCOS, one of the steps is migrating the database +description: Learn how to migrate to Spryker Cloud Commerce OS and migrate your data to the databse within your Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-13-migrate-database.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md index 026d375a9df..d4ae6067cc8 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-migrate-non-standard-services.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Migrate non-standard services' -description: To migrate to SCCOS, you need to migrate non-standard services. +description: Learn how to migrate to Spryker Cloud Commerce OS and migrate non-standard services within your Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-3-migrate-non-standard-services.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md index 0ad98f50f4b..c80cc4d7bc1 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Restore Elasticsearch and Redis' -description: To migrate to SCCOS, one of the steps, is restoring Elasticsearch and Redis. +description: Learn how to migrate to Spryker Cloud Commerce OS and restore Elasticsearch and Redis within your Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-7-restore-es-and-redis.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-upgrade-the-php-version.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-upgrade-the-php-version.md index bd4369a09ba..82212910156 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-upgrade-the-php-version.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-upgrade-the-php-version.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Upgrade the PHP version' -description: To migrate to SCCOS, you need to upgrade the PHP version. +description: Learn how to migrate to Spryker Cloud Commerce OS and upgrade the PHP version for your Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-2-upgrade-the-php-version.html diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-wire-custom-services.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-wire-custom-services.md index c705b41a1e1..1ea0434ade0 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-wire-custom-services.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-wire-custom-services.md @@ -1,6 +1,6 @@ --- title: 'Migrate to cloud: Wire custom services' -description: When migrating to SCCOS, you can wire the custom services. +description: Learn how to migrate to Spryker Cloud Commerce OS and wire custom services for Spryker based project. template: howto-guide-template redirect_from: - /docs/scos/dev/migration-concepts/migrate-to-sccos/step-11-wire-custom-services.html From 95ce02ff77dc9dfc9e2c9c7c759bc7bd201615a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Klatt?= Date: Mon, 16 Dec 2024 06:47:06 +0100 Subject: [PATCH 120/199] ACP-4047 Updated link sections, changed to text to point to links instead of sections. --- ...verview-diagrams-for-payment-service-providers-headless.md | 2 +- .../payment-method-flows/credit-card.md | 4 ++-- .../payment-method-flows/pay-pal-express.md | 4 ++-- .../payment-method-flows/pay-pal.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md index 64c5d1eab7d..6052aed1099 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md @@ -14,7 +14,7 @@ The following diagram explains the flow of a headless payment page based on Glue `CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when the headless implementation requires a cancellation. -For information about endpoints and messages, see the following sections. +For information about endpoints and messages, see the following links. ### Further reading diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md index cd3867b5c3f..f1c8c2b21f4 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md @@ -35,5 +35,5 @@ When customers pay with a credit card, a shop owner can do the following: ## Other Payment method flows -* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) -* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) +* [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md index b1f0a999d91..0ee03bc669a 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -180,5 +180,5 @@ After this, the customer should be redirected to the success page or in case of ## Other Payment method flows -* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md index 08dd0a6b9f8..0079cd643b8 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.md @@ -33,5 +33,5 @@ When customers pay with PayPal, a shop owner can do the following: ## Other Payment method flows -* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) +* [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) From 9f4cc3369252fd1602553601aa07496aed5ce02e Mon Sep 17 00:00:00 2001 From: Oleksii Bilan Date: Mon, 16 Dec 2024 10:31:57 +0200 Subject: [PATCH 121/199] Update integrate-algolia-personalization.md --- .../algolia/integrate-algolia-personalization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md index fc8ddac45a0..2b927d73485 100644 --- a/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md +++ b/docs/pbc/all/search/202410.0/base-shop/third-party-integrations/algolia/integrate-algolia-personalization.md @@ -197,7 +197,7 @@ If an event isn't firing, verify that the action, like `click` or `change`, is c data: events.data, } %} - {{ parent() }} + {% raw %}{{ parent() }}{% endraw %} {% raw %}{% endblock %}{% endraw %} ``` @@ -223,7 +223,7 @@ Configuration for built-in components is provided by default. For more details, data: events.data, } %} - {{ parent() }} + {% raw %}{{ parent() }}{% endraw %} {% raw %}{% endblock %}{% endraw %} ``` @@ -244,7 +244,7 @@ You can view event payload in the console under `Adapter Data:`. If payload is i }), } %} - {{ parent() }} + {% raw %}{{ parent() }}{% endraw %} {% raw %}{% endblock %}{% endraw %} ``` From a6703aa23deaa40ee3c264b8534bcb38d1ff07db Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Mon, 16 Dec 2024 10:50:44 +0200 Subject: [PATCH 122/199] tw-review --- .../install-the-payments-glue-api.md | 8 +-- .../202410.0/install-the-payments-feature.md | 49 +++++++++-------- ...-diagrams-for-payment-service-providers.md | 21 ------- ...for-payment-service-providers-async-api.md | 2 - ...vice-providers-configure-and-disconnect.md | 2 +- ...ice-providers-headless-express-checkout.md | 17 +++++- ...-for-payment-service-providers-headless.md | 2 +- ...t-service-providers-hosted-payment-page.md | 0 ...ment-service-providers-oms-payment-flow.md | 4 +- ...-for-payment-service-providers-sync-api.md | 7 +-- ...-diagrams-for-payment-service-providers.md | 21 +++++++ .../payment-method-flows/pay-pal-express.md | 55 +++++++++---------- ....md => payone-credit-card-payment-flow.md} | 22 ++++---- 13 files changed, 106 insertions(+), 104 deletions(-) delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-async-api.md (99%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md (98%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md (83%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-headless.md (94%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md (100%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md (94%) rename docs/dg/dev/acp/{ => apis-and-overview-diagrams-for-payment-service-providers}/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md (91%) create mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md rename docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/{credit-card.md => payone-credit-card-payment-flow.md} (50%) diff --git a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md index 11023fc2ca7..97d4d26d35f 100644 --- a/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md +++ b/_includes/pbc/all/install-features/202410.0/install-glue-api/install-the-payments-glue-api.md @@ -2,9 +2,7 @@ {% info_block errorBox %} - -The following feature integration Guide expects the basic feature to be in place. -The current guide only adds the Payment Management API functionality. +The following feature integration Guide expects the basic feature to be in place. The current guide only adds the Payment Management API functionality. {% endinfo_block %} @@ -20,9 +18,9 @@ To start the feature integration, overview and install the necessary features: | Spryker Core | {{page.version}} | [Install the Spryker Core Glue API](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-glue-api/install-the-spryker-core-glue-api.html) | | Payments | {{page.version}} | [Install the Payments feature](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/install-and-upgrade/install-the-payments-feature.html) | -## 1) Install the required modules using Composer +## 1) Install the required modules using Composer -Run the following command to install the required modules: +Install the required modules: ```bash composer require spryker/payments-rest-api:"1.1.0" --update-with-dependencies diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index d928f2c72a5..1515852ce30 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -361,8 +361,8 @@ Register the following plugin data import plugins: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | | --- | --- | --- | --- | -| PaymentMethodDataImportPlugin | Imports payment method data into the database. | None | \Spryker\Zed\PaymentDataImport\Communication\Plugin | -| PaymentMethodStoreDataImportPlugin | Imports payment method store data into the database. | None | \Spryker\Zed\PaymentDataImport\Communication\Plugin | +| PaymentMethodDataImportPlugin | Imports payment method data into the database. | | \Spryker\Zed\PaymentDataImport\Communication\Plugin | +| PaymentMethodStoreDataImportPlugin | Imports payment method store data into the database. | | \Spryker\Zed\PaymentDataImport\Communication\Plugin | **src/Pyz/Zed/DataImport/DataImportDependencyProvider.php** @@ -457,7 +457,8 @@ console data:import glossary ``` ### 5) Set up behavior -Configure the data import to use your data on the project level. + +1. Configure the data import to use your data on the project level. **src/Pyz/Zed/PaymentDataImport/PaymentDataImportConfig** @@ -489,11 +490,11 @@ class PaymentDataImportConfig extends SprykerPaymentDataImportConfig } ``` -Configure the Payment GUI module with money and store plugins. +2. Configure the Payment GUI module with money and store plugins. | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | | --- | --- | --- | --- | -| StoreRelationToggleFormTypePlugin | Represents a store relation toggle form based on stores registered in the system. | None | Spryker\Zed\Store\Communication\Plugin\Form | +| StoreRelationToggleFormTypePlugin | Represents a store relation toggle form based on stores registered in the system. | | Spryker\Zed\Store\Communication\Plugin\Form | **src/Pyz/Zed/PaymentGui/PaymentGuiDependencyProvider.php** @@ -521,18 +522,18 @@ class PaymentGuiDependencyProvider extends SprykerPaymentGuiDependencyProvider {% info_block warningBox "Verification" %} -Make sure that: +Make sure the following applies: * You can see the list of payment methods in the **Back Office > Administration > Payment Management > Payment Methods** section. * You can see information about the payment method in the **Back Office > Administration > Payment Management > Payment Methods > View** section. * You can edit the payment method in the **Back Office > Administration > Payment Management > Payment Methods > Edit** section. {% endinfo_block %} -Enable the payment app express checkout flow in the Yves step engine. +3. Enable the payment app express checkout flow in the Yves step engine. | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |---------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------| -| PaymentAppExpressCheckoutWorkflowCheckoutStepResolverStrategyPlugin | Returns checkout steps suitable to express checkout workflow and cleans quote fields based on the configuration. | None | SprykerShop\Yves\PaymentAppWidget\Plugin\CheckoutPage | +| PaymentAppExpressCheckoutWorkflowCheckoutStepResolverStrategyPlugin | Returns checkout steps suitable for the express checkout workflow and cleans quote fields based on the configuration. | | SprykerShop\Yves\PaymentAppWidget\Plugin\CheckoutPage | **src/Pyz/Yves/CheckoutPage/CheckoutPageDependencyProvider.php** @@ -559,11 +560,11 @@ class CheckoutPageDependencyProvider extends SprykerShopCheckoutPageDependencyPr } ``` -Enable the default shipment method for the payment app express checkout flow. +4. Enable the default shipment method for the payment app express checkout flow. | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |------------------------------------------------------|-----------------------------------------------------------------------|---------------|----------------------------------------------------------------| -| ShipmentExpressCheckoutPaymentRequestProcessorPlugin | Provides the shipment method for the express checkout payment request.| None | Spryker\Zed\PaymentAppShipment\Communication\Plugin\PaymentApp | +| ShipmentExpressCheckoutPaymentRequestProcessorPlugin | Provides the shipment method for the express checkout payment request.| | Spryker\Zed\PaymentAppShipment\Communication\Plugin\PaymentApp | **src/Pyz/Zed/PaymentApp/PaymentAppDependencyProvider.php** @@ -595,13 +596,13 @@ Make sure that: * Enabled the express checkout payment method for the payment app. * Depends on the payment app enabled in the project. * Not all payment methods support the express checkout flow. -* You can see the express checkout button on the cart page. -* Proceed to the express checkout flow by clicking the express checkout button. -* Place an order using the express checkout flow. +* The express checkout button is displayed on the Cart page. +* Clicking the express checkout button opens the express checkout page. +* You can place an order using the express checkout flow. {% endinfo_block %} -Register the following route provider plugins: +5. Register the following route provider plugin: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |-------------------------------------|------------------------------------------------------|---------------|-------------------------------------------------| @@ -631,11 +632,11 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider } ``` -Enable the payment method clean up for the cart operations. +6. Enable the payment method clean up for cart operations. | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |------------------------------------------|----------------------------------------------------------------------------|---------------|------------------------------------------------------------| -| RemoveQuotePaymentCartItemExpanderPlugin | Removes the payment information from the quote when cart changes are made. | None | Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart | +| RemoveQuotePaymentCartItemExpanderPlugin | Removes payment information from the quote when cart changes are made. | | Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart | **src/Pyz/Zed/Cart/CartDependencyProvider.php** @@ -665,18 +666,18 @@ class CartDependencyProvider extends SprykerCartDependencyProvider {% info_block warningBox "Verification" %} -Make sure that: -* The payment method is removed from the quote when cart changes are made: - * Add a product to the cart and proceed to the checkout with express checkout. - * Navigate back to the cart page to adjust product quantities, add new products, or remove existing ones. - * Check that the payment method is removed from the cart. +1. Add a product to cart and proceed to the express checkout. +2. Go to the cart page and change product quantities, add new products, or remove existing ones. + Make sure the payment method has been removed from the cart. + {% endinfo_block %} -### 6) Additional cleanups: +### 6) Replace deprecated funtionality -The `SalesPaymentMethodTypeInstallerPlugin` plugin was removed, please use the `PaymentDataImport module` instead. -The `PaymentConfig::getSalesPaymentMethodTypes()` config method was removed, please use the `PaymentDataImport` module instead. +Use the `PaymentDataImport` module instead of the following: +* `SalesPaymentMethodTypeInstallerPlugin` plugin +* `PaymentConfig::getSalesPaymentMethodTypes()` config method ### 7) Set up widgets diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md deleted file mode 100644 index 50edee6bf1a..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: APIs and overview diagrams for payment service providers -description: Overview of PSP APIs -last_updated: Sep 27, 2024 -template: concept-topic-template -related: - - title: Stripe - link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html ---- - -This document provides an overview of Payment Service Provider (PSP) APIs. All PSPs use both synchronous and asynchronous APIs. - -The following pages contain detailed information about the PSP APIs: - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md similarity index 99% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md index 1e03053fa62..0525278efa3 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-async-api.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md @@ -8,8 +8,6 @@ related: link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html --- -## Asynchronous API - All PSP integrations are based on a asynchronous API. The asynchronous API is used to process payments and refunds. The following asynchronous messages are used: Sent from the app: diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md similarity index 98% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md index 9cf5f9f639d..13ba20b5710 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md @@ -12,7 +12,7 @@ The following diagram explains the configuration and disconnect flows for a paym ![configure-and-disconnect-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/configure-and-disconnect-flows.png) -The following messages are optional: +Optional messages: * `AddPaymentMethod` * `UpdatePaymentMethod` * `DeletePaymentMethod` diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md similarity index 83% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md index 8ba737d4958..9dcc6e5dd55 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md @@ -12,8 +12,14 @@ The following diagram explains the flow of a headless payment page with an expre ![headless-express-checkout-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-express-checkout-flow.png) -The main difference here is that the customer skips most of the default checkout steps such as enter addresses and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during the checkout steps will be retrieved via the Glue `/payment-customer` API call. The returned data can then be used on SCOS side to update e.g. addresses. -Here is an example request for the PayOne PayPal Express payment method, used by a guest or authorized customer to retrieve user data such as addresses and other information from the PSP: https://glue.mysprykershop.com/payment-customers. +The customer skips most of the default checkout steps, such as the addresses step, and goes directly to the payment step. The payment is created before the order is persisted. The data a customer usually enters during a regualr checkout is retrieved via the `/payment-customer` Glue API call. The returned data can then be used on Spryker's side to update customer data like addresses. +Here is an example request for the PayOne PayPal Express payment method used by a guest or authorized customer to retrieve user data such as addresses and other information from the PSP: + +`https://glue.mysprykershop.com/payment-customers` + +
    + Request example + ```json { "data": { @@ -36,7 +42,10 @@ Here is an example request for the PayOne PayPal Express payment method, used by } ``` -An example of the response: +
    + +
    + Response example ```json { @@ -90,6 +99,8 @@ An example of the response: } ``` +
    + ### Further reading * [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md similarity index 94% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md index 64c5d1eab7d..f76bc3672a2 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md @@ -12,7 +12,7 @@ The following diagram explains the flow of a headless payment page based on Glue ![headless-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-payment-flow.png) -`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when the headless implementation requires a cancellation. +`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when a headless implementation requires a cancellation. For information about endpoints and messages, see the following sections. diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md similarity index 100% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md similarity index 94% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md index 49d58c3d24e..d492bb089f3 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md @@ -8,7 +8,7 @@ related: link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html --- -The following diagram shows the flow of an order in the OMS together with an app. +The following diagram shows the flow of an order in the OMS with an app. ![oms-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/oms-payment-flow.png) @@ -24,4 +24,4 @@ Optional elements: * [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) * [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) * [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file +* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md similarity index 91% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md rename to docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md index 30bc93ec153..26a60e3f4b7 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md @@ -8,19 +8,16 @@ related: link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html --- - -## Synchronous API - All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and transfers to merchants. The following endpoints are used: * `/configure`: Used from the ACP app catalog to configure an app. * `/disconnect`: Used from the ACP app catalog to disconnect an app. -* `/initialize-payment`: Used from the Spryker backend after an order was created and before the hosted payment page is shown to the customer. Initialize the payment in the PSP app, and the PSP app returns the URL to the hosted payment page. +* `/initialize-payment`: Used from the Spryker backend after an order was created and before the hosted payment page is shown to the customer. Initializes the payment in the PSP app, and the PSP app returns the URL to the hosted payment page. * `/payments`: Glue API endpoint to initialize a payment. * `/payment-cancellations`: Glue API endpoint to cancel a previously created payment. * `/confirm-pre-order-payment`: Used from the Spryker backend after an order was created using a headless approach where the payment gets created before the order persists. This connects a previously created (preOrder) payment on the app side with the order on the Zed side. * `/cancel-pre-order-payment`: Used from the Glue API application in a headless approach when a customer clicks cancel or in case the headless implementation requires a cancellation. This cancels the payment on the PSP side. -* `/payments/transfers`: Used from the Back Office or OMS with the app being used in a marketplace. This initiates the transfer of money from the marketplace to the merchant. +* `/payments/transfers`: Used from the Back Office or OMS with the app being used in a marketplace. This initiates a money transfer from the marketplace to the merchant. * `/webhooks`: Used from external applications to send requests to an app. * `/webhooks/test`: Used from external applications in test mode to send requests to an app. diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md new file mode 100644 index 00000000000..209c22f1db8 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md @@ -0,0 +1,21 @@ +--- +title: APIs and overview diagrams for payment service providers +description: Overview of PSP APIs +last_updated: Sep 27, 2024 +template: concept-topic-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +This section provides an overview of Payment Service Provider (PSP) APIs. All PSPs use both synchronous and asynchronous APIs. + +For detailed information on PSP APIs, see the following docs: + +* [Configure and disconnect flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) +* [Hosted payment page flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) +* [Headless payment flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) +* [Headless payment flow with express-checkout payment methods](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) +* [OMS payment flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) +* [Asynchronous messages](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) +* [Synchronous API endpoints](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md index b1f0a999d91..84b26091f44 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md @@ -22,11 +22,11 @@ Install or upgrade the modules to the specified or later versions: - `spryker/payment:5.27.0` - `spryker/payments-rest-api:1.4.0` -### Pre-order payment flow +### Preorder payment flow -When PayOne PayPal Express is integrated into a headless application, orders are processed using a pre-order payment flow: +When PayOne PayPal Express is integrated into a headless application, orders are processed using a preorder payment flow: -1. The customer either selects PayPal Express as the payment method at the Product Detail page or the Cart Page. +1. Customer selects PayPal Express as the payment method at the Product Details or Cart page. 2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: * Payment provider name: Payone * Payment method name: PayPal Express @@ -34,41 +34,40 @@ When PayOne PayPal Express is integrated into a headless application, orders are * Quote data 3. Back Office sends the quote data and the payment amount to the PayOne app through an API. 4. The payment with the given data is persisted in the PayOne app. -5. PayOne app makes a request through an API to PayOne to `preauthorize` the payment. +5. PayOne app makes a request through an API to PayOne to preauthorize the payment. 6. PayOne returns a JSON response with the following parameters: * transactionId - * orderId + * orderId * workorderid * token * currency * clientId * merchantId -7. When the customer clicks "Complete Purchase" the modal closes and the customer data is requested. -8. After this the customer should be redirected to the summary page. -9. Here he should see his address data that was received from PayPal, and he can change the data or submit it which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. -10. The customer is redirected to the application's success page. -11. PayOne app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. +7. When the customer clicks **Complete Purchase**, the modal closes and the customer data is requested. +8. The customer is redirected to the summary page. On this page, the customer can see their address data that was received from PayPal. If they change the data, an API request is made to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. +9. The customer is redirected to the application's success page. +10. PayOne app confirms the preorder payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. The `order_reference` is passed to the PayOne app to be connected with `transaction_id`. -12. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. -13. Depending on payment status, one of the following messages is returned through an asynchronous API: +11. PayOne app processes the payment and sends a `PaymentUpdated` message to Spryker. +12. Depending on payment status, one of the following messages is returned through an asynchronous API: * Payment is successful: `PaymentAuthorized` message. * Payment is failed: `PaymentAuthorizationFailed` message. -14. Further on, the order is processed through the OMS. +13. Further on, the order is processed through the OMS. -All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. +All payment-related messages in the preorder flow are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider::getMessageHandlerPlugins()`. ### Example of the headless checkout with PayOne -The PaymentMethods which are returned by the `/checkout-data?include=payment-methods` endpoint are used to render the express-checkout buttons e.g. on the Product Detail Page or the Cart Page. The customer can select the payment method and proceed to the payment page. +The payment methods returned by the `/checkout-data?include=payment-methods` endpoint are used to render the express checkout buttons, for example–on the Product Details page or Cart page. The customer can select one of the provided payment methods and proceed to the payment page. -You can read more details about this in the [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html) document. +When the customer clicks the **Pay with PayPal Express** button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. -When the custome clicks on "Pay with PayPal Express" button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. -#### Pre-order payment initialization +For more details on payment methods in a headless chechout, see [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html). -This script example makes a GLUE request to the `/payments` API endpoint to initialize the pre-order payment. It is important to note that the `transactionId` is empty in the first request but has to be used in further requests. The quote data and the payment method data also needs to be passed. The response of this request has `preOrderPaymentData` that will be used in further requests. + +#### Preorder payment initialization ```JS @@ -101,7 +100,7 @@ async initializePreOrderPayment() { // This gets passed back from the App server and is different for each PSP this.preOrderPaymentData = responseData.data.attributes.preOrderPaymentData; - + return this.preOrderPaymentData; // This has to be forwarded in any upcoming request } @@ -131,13 +130,13 @@ After making a request to the PayOne API, the payment is created in the PayOne a } ``` -After the customer clicks "Complete Purchase" in the PayPal Express modal he will be redirected to the summary page. - -Since we skipped some important checkout steps here (addresses, shipment method, etc) another request needs to be made to get the customer data. +After the customer clicks **Complete Purchase** in the PayPal Express modal, he should be redirected to the summary page. #### Getting the customer data -```JAVASCRIPT +Because the express checkout skips some steps, such as address or shipment, another request needs to be made to get the customer data. + +```JS async getCustomerData() { const url = `${this.GLUE_BASE_URL}/payment-customer`; @@ -171,14 +170,14 @@ async getCustomerData() { } ``` -This data must be used to fill the quote with the missing data of the custer. +This data must be used to fill the quote with the missing customer data. When the customer submits the order, the payment data is sent to PayOne. -After this, the customer should be redirected to the success page or in case of a failure to an error page. +After this, the customer is redirected to the success or error page depending on the result. ## Other Payment method flows -* `Credit Card` - [Learn more about the Credit Card payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* [Credit Card](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) +* [PayPal](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md similarity index 50% rename from docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md rename to docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md index cd3867b5c3f..baedf2b28d8 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md @@ -1,5 +1,5 @@ --- -title: Payone Credit Card +title: PayOne Credit Card payment flow description: Payone offers your customers to pay with Credit Card. template: howto-guide-template last_updated: Now 8, 2024 @@ -11,20 +11,18 @@ redirect_from: - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html --- -## Credit card payment flow - -When customers pay with a credit card (with optional support of 3DS), the flow is as follows: +When customers pay with a credit card, the flow is as follows: 1. Customer provides their credit card payment credentials and pays the required amount for the placed order. 2. The customer's credit card data is validated. -3. Customer receives a payment message, whether the payment or authorization was successful. +3. Customer receives a payment message indidcating if the payment or authorization was successful. When paying with a credit card, customers can do the following: -- Repeat payments as often as they want if the payment (preauthorization) has failed, or cancel and close the payment page. -- Cancel the entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. -- Cancel the order after it is ready for shipment and receive the money back, that is, trigger a refund. -- Return the order or its items after it has been successfully shipped and is refunded for the returned items or the entire order. +- Repeat payment as often as they want if a payment or preauthorization failed, or cancel and close the payment page. +- Cancel an entire order before shipment and receive the money back, that is, void the existing preauthorization without being charged a fee. +- Cancel an order after it's ready for shipment and receive the money back, that is, trigger a refund. +- Return part or all items of an order after it was shipped and recieve a refund for the returned items of full order respectively. When customers pay with a credit card, a shop owner can do the following: @@ -33,7 +31,7 @@ When customers pay with a credit card, a shop owner can do the following: - Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. - Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. -## Other Payment method flows +## Other payment method flows -* `PayPal` - [Learn more about the PayPal payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) -* `PayPal Express` - [Learn more about the PayPal Express payment flow.](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) +* [PayPal](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) +* [PayPal Express](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) From 135ff0f74bb68aba69a0052f1b748bc7edea141f Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 11:08:20 +0000 Subject: [PATCH 123/199] DEV Migrate pt2 SEO update Following meta description changed for the SEO update; - upgrade and migrate > migrate to decoupled glue infrastructure > decoupled glue infrastructure integrate api key authorization - upgrade and migrate > migrate to decoupled glue infrastructure > decoupled glue infrastructure integrate the documentation generator - upgrade and migrate > migrate to docker > adjust jenkins for a docker environment - upgrade and migrate >migrating from twig v1 to twig v3 - upgrade and migrate > upgrade nodejs to v18 and npm to v9 - upgrade and migrate > upgrade to angular 12 - upgrade and migrate > upgrade to angluar 15 - upgrade and migrate > upgrade to angluar 17 - upgrade and migrate > upgrade to styelint 16 and css loader 6 - upgrade and migrate > upgrade to symfony 6 - upgrade and migrate > upgrade to webpack v5 - zed api > integrate zed api > integrate zep api for merchant relationshops - zed api > tutorial using zed api - zed api > zed api configuration - zed api > zed api resources - zed api > zed api - upgrade and migrate > silex replacement > upgrade modules > upgrade the errorhandler module - upgrade and migrate > silex replacement > upgrade modules > upgrade the form module - upgrade and migrate > silex replacement > upgrade modules > upgrade the http module - upgrade and migrate > silex replacement > upgrade modules > upgrade the locale module - upgrade and migrate > silex replacement > upgrade modules > upgrade the messenger module - upgrade and migrate > silex replacement > upgrade modules > upgrade the propel module - upgrade and migrate > silex replacement > upgrade modules > upgrade the router module - upgrade and migrate > silex replacement > upgrade modules > upgrade the session module - upgrade and migrate > silex replacement > upgrade modules > upgrade the store module - upgrade and migrate > silex replacement > upgrade modules > upgrade the translator module - upgrade and migrate > silex replacement > upgrade modules > upgrade the twig module - upgrade and migrate > silex replacement > upgrade modules > upgrade the validator module - upgrade and migrate > silex replacement > upgrade modules > upgrade the webprofiler module - upgrade and migrate > silex replacement > router / router --- ...pled-glue-infrastructure-integrate-api-key-authorization.md | 2 +- ...lue-infrastructure-integrate-the-documentation-generator.md | 2 +- .../adjust-jenkins-for-a-docker-environment.md | 2 +- .../upgrade-and-migrate/migrating-from-twig-v1-to-twig-v3.md | 2 +- .../dev/upgrade-and-migrate/silex-replacement/router/router.md | 2 +- .../upgrade-modules/upgrade-the-errorhandler-module.md | 2 +- .../upgrade-modules/upgrade-the-form-module.md | 2 +- .../upgrade-modules/upgrade-the-http-module.md | 2 +- .../upgrade-modules/upgrade-the-locale-module.md | 2 +- .../upgrade-modules/upgrade-the-messenger-module.md | 2 +- .../upgrade-modules/upgrade-the-propel-module.md | 2 +- .../upgrade-modules/upgrade-the-router-module.md | 2 +- .../upgrade-modules/upgrade-the-security-module.md | 2 +- .../upgrade-modules/upgrade-the-session-module.md | 2 +- .../upgrade-modules/upgrade-the-store-module.md | 2 +- .../upgrade-modules/upgrade-the-translator-module.md | 2 +- .../upgrade-modules/upgrade-the-twig-module.md | 2 +- .../upgrade-modules/upgrade-the-validator-module.md | 2 +- .../upgrade-modules/upgrade-the-webprofiler-module.md | 2 +- .../upgrade-and-migrate/upgrade-nodejs-to-v18-and-npm-to-v9.md | 2 +- docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-12.md | 2 +- docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-15.md | 2 +- docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-17.md | 2 +- .../upgrade-to-stylelint-16-and-css-loader-6.md | 2 +- docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-6.md | 2 +- docs/dg/dev/upgrade-and-migrate/upgrade-to-webpack-v5.md | 2 +- .../integrate-zed-api-for-merchant-relationships.md | 2 +- docs/dg/dev/zed-api/tutorial-using-zed-api.md | 1 + docs/dg/dev/zed-api/zed-api-configuration.md | 2 +- docs/dg/dev/zed-api/zed-api-resources.md | 3 ++- docs/dg/dev/zed-api/zed-api.md | 2 +- 31 files changed, 32 insertions(+), 30 deletions(-) diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-api-key-authorization.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-api-key-authorization.md index b0931d90978..c76a0111dc0 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-api-key-authorization.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-api-key-authorization.md @@ -1,6 +1,6 @@ --- title: "Decoupled Glue infrastructure: Integrate the API Key authorization" -description: Integration of the API Key authorization mechanism into a Spryker project. +description: Learn about Integration of the API Key authorization mechanism into a Spryker based project. last_updated: October 10, 2023 template: feature-integration-guide-template redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-the-documentation-generator.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-the-documentation-generator.md index 4c57f5ac056..25f12e0a670 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-the-documentation-generator.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-decoupled-glue-infrastructure/decoupled-glue-infrastructure-integrate-the-documentation-generator.md @@ -1,6 +1,6 @@ --- title: "Decoupled Glue infrastructure: Integrate the documentation generator" -description: Integrate the Glue documentation generation into your project +description: Learn how to integrate the Glue documentation generation into your Spryker based project template: feature-integration-guide-template last_updated: Oct 30, 2023 redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-docker/adjust-jenkins-for-a-docker-environment.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-docker/adjust-jenkins-for-a-docker-environment.md index 42be85395a0..d77eeb5f9e1 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-docker/adjust-jenkins-for-a-docker-environment.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-docker/adjust-jenkins-for-a-docker-environment.md @@ -1,6 +1,6 @@ --- title: Adjust Jenkins for a Docker environment -description: DevOPS guidelines for running Spryker in Docker. +description: Learn how you can adjust Jenkins with these DevOPS guidelines for running Spryker projects in Docker. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/additional-devops-guidelines diff --git a/docs/dg/dev/upgrade-and-migrate/migrating-from-twig-v1-to-twig-v3.md b/docs/dg/dev/upgrade-and-migrate/migrating-from-twig-v1-to-twig-v3.md index 49f3dd3938b..9f859dce035 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrating-from-twig-v1-to-twig-v3.md +++ b/docs/dg/dev/upgrade-and-migrate/migrating-from-twig-v1-to-twig-v3.md @@ -1,6 +1,6 @@ --- title: Migrate from Twig v1 to Twig v3 -description: The article describes how you can migrate from Twig v1 to Twig v3 +description: The article describes how you can migrate from Twig v1 to Twig v3 for your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migrating-from-twig-v1-to-twig-v3 diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router.md index bad154ce4da..80b7877d77d 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/router/router.md @@ -1,6 +1,6 @@ --- title: Router -description: This section lists documents inside the Router section. +description: Learn how you can Install, Integrate and Configure the router for both Yves and Zed in your Spryker based projects. last_updated: Apr 26, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-errorhandler-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-errorhandler-module.md index 260c9d8bdc4..8c62d366d2d 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-errorhandler-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-errorhandler-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the ErrorHandler module -description: Use the guide to perform the ErrorHandler part of the Silex Migration Effort. +description: Learn how you can upgrade the ErrorHandler module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-errorhandler diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-form-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-form-module.md index 60c85d9fb1f..5d3b208df3f 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-form-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-form-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Form module -description: Use the guide to perform the Form part of the Silex Migration Effort. +description: Learn how you can upgrade the form module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-form diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-http-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-http-module.md index 60bd7cc2cff..9be29cde6dc 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-http-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-http-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the HTTP module -description: Use the guide to perform the HTTP part of the Silex Migration Effort. +description: Learn how you can upgrade the HTTP module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-http diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-locale-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-locale-module.md index f35b428ca3e..f4a5e103fe4 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-locale-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-locale-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Locale module -description: Use the guide to perform the Locale part of the Silex Migration Effort. +description: Learn how you can upgrade the Locale module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-locale diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-messenger-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-messenger-module.md index 31ccb7128a0..27a7aefe583 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-messenger-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-messenger-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Messenger module -description: Use the guide to perform the Messenger part of the Silex Migration Effort. +description: Learn how you can upgrade the messenger module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-messenger diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-propel-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-propel-module.md index 68c2fd844f0..80cd72813b8 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-propel-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-propel-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Propel module -description: Use the guide to perform the Propel part of the Silex Migration Effort. +description: Learn how you can upgrade the Propel module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-propel diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-router-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-router-module.md index b2b3e093d33..651eaa6151c 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-router-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-router-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Router module -description: Use the guide to perform the Router part of the Silex Migration Effort. +description: Learn how you can upgrade the Router module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-router diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-security-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-security-module.md index c626de87cf7..ba6b25cc900 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-security-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-security-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Security module -description: Use the guide to perform the Security part of the Silex Migration Effort. +description: Learn how you can upgrade the security module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-security diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-session-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-session-module.md index 0ad2acf19bb..770904c0b79 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-session-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-session-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Session module -description: Use the guide to perform the Session part of the Silex Migration Effort. +description: Learn how you can upgrade the session module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-session diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-store-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-store-module.md index 6d6702de15d..7484cb5019a 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-store-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-store-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Store module -description: Use the guide to perform the Store part of the Silex Migration Effort. +description: Learn how you can upgrade the store module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-store diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-translator-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-translator-module.md index b9373577dc5..294399887a1 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-translator-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-translator-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Translator module -description: Use the guide to perform the Translator part of the Silex Migration Effort. +description: Learn how you can upgrade the translator module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-translator diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-twig-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-twig-module.md index 3ea00937b24..5a8a58903e3 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-twig-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-twig-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Twig module -description: Use the guide to perform the Twig part of the Silex Migration Effort. +description: Learn how you can upgrade the twig module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-twig diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-validator-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-validator-module.md index 74b395b0ea5..e494271de16 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-validator-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-validator-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the Validator module -description: Use the guide to perform the Validator part of the Silex Migration Effort. +description: Learn how you can upgrade the validator module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-validator diff --git a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-webprofiler-module.md b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-webprofiler-module.md index 6745c97857a..e95d2946886 100644 --- a/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-webprofiler-module.md +++ b/docs/dg/dev/upgrade-and-migrate/silex-replacement/upgrade-modules/upgrade-the-webprofiler-module.md @@ -1,6 +1,6 @@ --- title: Upgrade the WebProfiler module -description: Use the guide to perform the WebProfiler part of the Silex Migration Effort. +description: Learn how you can upgrade the WebProfiler module of the Silex Migration within your Spryker based projects. last_updated: Jun 16, 2021 template: module-migration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/migration-guide-webprofiler diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-nodejs-to-v18-and-npm-to-v9.md b/docs/dg/dev/upgrade-and-migrate/upgrade-nodejs-to-v18-and-npm-to-v9.md index 5e3bb15c94a..3157e5e2077 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-nodejs-to-v18-and-npm-to-v9.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-nodejs-to-v18-and-npm-to-v9.md @@ -1,7 +1,7 @@ --- title: Upgrade Node.js to v18 and npm to v9 last_updated: May 16, 2023 -description: Use this guide to upgrade Node.js to v18 and npm to v9. +description: Learn how you can upgreade your Node.js to version 18 and how to upgrade NPM to version 9 for your Spryker projects. template: concept-topic-template redirect_from: - /docs/scos/dev/front-end-development/202304.0/migration-guide-upgrade-nodejs-to-v18-and-npm-to-v9.html diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-12.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-12.md index 67a063212a5..1f2723342d0 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-12.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-12.md @@ -1,6 +1,6 @@ --- title: Upgrade to Angular 12 -description: Use the guide to update versions of the Angular and related modules. +description: Learn how you can upgrade to Version 12 of Angular for your Spryker project for improved performance and security. template: module-migration-guide-template last_updated: Jul 13, 2023 redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-15.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-15.md index cf026ec6e21..7c1898b0451 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-15.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-15.md @@ -1,6 +1,6 @@ --- title: Upgrade to Angular 15 -description: Use the guide to update versions of the Angular and related modules. +description: Learn how you can upgrade to Version 15 of Angular for your Spryker project for bug fixes, optimized performance and tooling. last_updated: Mar 24, 2023 template: module-migration-guide-template redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-17.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-17.md index b061d068a11..94c2d103d91 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-17.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-angular-17.md @@ -1,6 +1,6 @@ --- title: Upgrade to Angular 17 -description: Use the guide to update versions of the Angular and related modules. +description: Learn how you can upgrade to Version 17 of Angular for your Spryker project for bug fixes, optimized performance and tooling. template: module-migration-guide-template --- diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-stylelint-16-and-css-loader-6.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-stylelint-16-and-css-loader-6.md index 1d2eb5bff4a..35a5fc6ac0f 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-stylelint-16-and-css-loader-6.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-stylelint-16-and-css-loader-6.md @@ -1,6 +1,6 @@ --- title: Upgrade to Stylelint 16 and css-loader 6 -description: Learn how to update versions of the Stylelint and css-loader. +description: Learn how you can upgrade to version 16 of Stylelint and upgrade to version 6 of css-loader for your spryker projects. template: module-migration-guide-template --- diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-6.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-6.md index 12d9f7336fa..6bf9b9624e3 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-6.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-6.md @@ -1,6 +1,6 @@ --- title: Upgrade to Symfony 6.4 -description: Learn about the main changes in the new Symfony version 6 +description: Learn how you can upgrade the version 6.4 of Symfony for your Spryker projects and Spryker modules that use Symfony. last_updated: Apr 1, 2024 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-webpack-v5.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-webpack-v5.md index c13e4fb5aa1..8d9f2d75819 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-webpack-v5.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-webpack-v5.md @@ -1,6 +1,6 @@ --- title: Upgrade to Webpack v5 -description: Use the guide to update versions of the Webpack and related modules. +description: Use the guide to update versions of the Webpack to Version 5 and related modules for your Spryker projects. last_updated: Jan 12, 2023 template: module-migration-guide-template redirect_from: diff --git a/docs/dg/dev/zed-api/integrate-zed-api/integrate-zed-api-for-merchant-relationships.md b/docs/dg/dev/zed-api/integrate-zed-api/integrate-zed-api-for-merchant-relationships.md index 11042a70550..af8bc431492 100644 --- a/docs/dg/dev/zed-api/integrate-zed-api/integrate-zed-api-for-merchant-relationships.md +++ b/docs/dg/dev/zed-api/integrate-zed-api/integrate-zed-api-for-merchant-relationships.md @@ -1,6 +1,6 @@ --- title: Integrate Zed API for merchant relationships -description: Learn how to integrate the Zed API for merchant relationships into your project. +description: Learn how to integrate Spryker ZED API for merchant relationships into your Spryker based project. template: feature-integration-guide-template last_updated: Nov 6, 2023 redirect_from: diff --git a/docs/dg/dev/zed-api/tutorial-using-zed-api.md b/docs/dg/dev/zed-api/tutorial-using-zed-api.md index b7ddd5a3f79..c0b6cb81189 100644 --- a/docs/dg/dev/zed-api/tutorial-using-zed-api.md +++ b/docs/dg/dev/zed-api/tutorial-using-zed-api.md @@ -1,5 +1,6 @@ --- title: "Tutorial: Using Zed API" +description: Learn how to use the ZED API, creating simple client librarys or extracting controller endpoints to use within your Spryker Projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/t-zed-rest-api diff --git a/docs/dg/dev/zed-api/zed-api-configuration.md b/docs/dg/dev/zed-api/zed-api-configuration.md index ba2a00a8d3e..489cb1f2169 100644 --- a/docs/dg/dev/zed-api/zed-api-configuration.md +++ b/docs/dg/dev/zed-api/zed-api-configuration.md @@ -1,6 +1,6 @@ --- title: Zed API configuration -description: The article describes how you can configure API for Zed. +description: Learn how you can configure the Spryker Zed API and install it within your Spryker based projects. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/zed-api-config diff --git a/docs/dg/dev/zed-api/zed-api-resources.md b/docs/dg/dev/zed-api/zed-api-resources.md index ade40f76dd6..f600968bc62 100644 --- a/docs/dg/dev/zed-api/zed-api-resources.md +++ b/docs/dg/dev/zed-api/zed-api-resources.md @@ -1,5 +1,6 @@ --- -title: Zed API resources +title: Zed API resources\ +description: Some quick and helpful resources when it comes to using Spryker Zed API within your Spryker based projects. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/zed-api-resources diff --git a/docs/dg/dev/zed-api/zed-api.md b/docs/dg/dev/zed-api/zed-api.md index 68bd93bcae2..8aa146ba047 100644 --- a/docs/dg/dev/zed-api/zed-api.md +++ b/docs/dg/dev/zed-api/zed-api.md @@ -1,6 +1,6 @@ --- title: Zed API -description: This section lists documents inside the Zed API section. +description: Learn everything you need to know about the Spryker Zed API and how you can configure and use it within your Spryker based projects. last_updated: Apr 26, 2023 template: concept-topic-template redirect_from: From ca32ca161ccec190c9149916b18e23ae9be45e6f Mon Sep 17 00:00:00 2001 From: AntonKhabiuk Date: Mon, 16 Dec 2024 13:28:00 +0200 Subject: [PATCH 124/199] CC-34932 Add Merchant Discount feature IG --- ...rchant-promotions-and-discounts-feature.md | 85 +++++++++++++++++++ ...rchant-promotions-and-discounts-feature.md | 8 ++ 2 files changed, 93 insertions(+) create mode 100644 _includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md create mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md new file mode 100644 index 00000000000..4acc9f27195 --- /dev/null +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md @@ -0,0 +1,85 @@ +This document describes how to install the Merchant + Promotions & Discounts feature. + +## Install feature core + +Follow the steps below to install the feature core. + +### Prerequisites + +Install the required features: + +| NAME | VERSION | INSTALLATION GUIDE | +|------------------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Marketplace Merchant | {{page.version}} | [Install the Marketplace Merchant feature](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/install-and-upgrade/install-features/install-the-marketplace-merchant-feature.html) | +| Promotions & Discounts | {{page.version}} | [Install the Promotions & Discounts feature](/docs/pbc/all/discount-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-promotions-and-discounts-feature.html) | +| Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | + +### 1) Install the required modules + +Install the required modules using Composer: + +```bash +composer require spryker/merchant-discount-connector:"^1.0.0" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|---------------------------|--------------------------------------------| +| MerchantDiscountConnector | vendor/spryker/merchant-discount-connector | + +{% endinfo_block %} + +### 2) Set up behavior + +Set up the following behaviors: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|--------------------------------------------------|------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------| +| MerchantReferenceDecisionRulePlugin | Defines if a discount can be applied to a cart item with a merchant reference specified. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | +| MerchantReferenceDiscountableItemCollectorPlugin | Collects the cart items with merchant reference to which a discount should be applied. | | Spryker\Zed\MerchantDiscountConnector\Communication\Plugin\Discount | + +**src/Pyz/Zed/Discount/DiscountDependencyProvider.php** + +```php + + */ + protected function getDecisionRulePlugins(): array + { + return array_merge(parent::getDecisionRulePlugins(), [ + new MerchantReferenceDecisionRulePlugin(), + ]); + } + + /** + * @return list<\Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemCollectorPluginInterface> + */ + protected function getCollectorPlugins(): array + { + return array_merge(parent::getCollectorPlugins(), [ + new MerchantReferenceDiscountableItemCollectorPlugin(), + ]); + } +} +``` + +{% info_block warningBox "Verification" %} + +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-refernce` field. +2. Add a product sold by the defined merchant to the cart. +3. Verify that the discount is applied to the cart. + +{% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md new file mode 100644 index 00000000000..00b213b612f --- /dev/null +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Merchant + Promotions & Discounts feature +description: Learn how to integrate the Merchant + Promotions & Discounts feature into a Spryker project. +last_updated: Dec 16, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/install-the-merchant-promotions-and-discounts-feature.md %} From 3c3cf6035b7f4b45841cd55883662db483ce0c78 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 13:45:29 +0000 Subject: [PATCH 125/199] DEV troubleshooting SEO Update changed some of the meta descriptions within the Dev > troubelshooting section of the docs. --- .../nc-command-does-not-give-any-output.md | 2 +- .../nc-command-tells-that-the-port-is-opened.md | 2 +- .../troubleshooting-debugging-in-docker/xdebug-does-not-work.md | 2 +- .../413-request-entity-too-large.md | 2 +- .../an-application-is-not-reachable-via-http.md | 2 +- .../mutagen-error.md | 2 +- .../mutagen-synchronization-issue.md | 2 +- .../port-is-already-occupied-on-host.md | 2 +- .../composer-version-2-compatibility-issues.md | 2 +- .../could-not-resolve-host-zed-calls-are-forbidden-from-zed.md | 2 +- .../error-remove-spryker-logs-volume-is-in-use.md | 2 +- .../fail-whale-on-the-frontend.md | 2 +- .../no-data-on-the-storefront.md | 2 +- .../phpstan-memory-issues.md | 1 + .../prices-filter-and-sorting-does-t-work-on-frontend.md | 2 +- .../processtimedoutexception-after-queue-task-start.md | 2 +- .../the-spy-oms-transition-log-table-takes-up-too-much-space.md | 2 +- .../troubleshooting-rabbitmq/troubleshooting-rabbitmq.md | 2 +- .../external-calls-several-calls-to-zed.md | 2 +- .../external-calls-take-a-lot-of-time.md | 2 +- .../troubleshooting-performance-issues/n+1-problem.md | 2 +- .../not-optimised-composer-on-the-production-environment.md | 2 +- .../slow-publish-and-synchronization.md | 2 +- .../troubleshooting-performance-issues.md | 2 +- docs/dg/dev/troubleshooting/troubleshooting.md | 2 +- docs/dg/dev/updating-spryker/feature-or-module-updates.md | 2 +- .../installing-features-and-updating-modules.md | 2 +- docs/dg/dev/updating-spryker/planning-updates.md | 2 +- docs/dg/dev/updating-spryker/switch-demo-shop-version.md | 2 +- docs/dg/dev/updating-spryker/testing-updates.md | 2 +- docs/dg/dev/updating-spryker/troubleshooting-updates.md | 2 +- 31 files changed, 31 insertions(+), 30 deletions(-) diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-does-not-give-any-output.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-does-not-give-any-output.md index bc5785b31ae..0a94d67b285 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-does-not-give-any-output.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-does-not-give-any-output.md @@ -1,6 +1,6 @@ --- title: nc command does not give any output -description: If the nc command does not give any output, contact us +description: Learn what to do if the nc Command does not give any output when troubleshooting your Spryker project. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/nc-command-does-not-give-any-output diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-tells-that-the-port-is-opened.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-tells-that-the-port-is-opened.md index 6173012c602..3a1632c71ee 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-tells-that-the-port-is-opened.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/nc-command-tells-that-the-port-is-opened.md @@ -1,6 +1,6 @@ --- title: nc command tells that the port is opened -description: Learn how to fix the issue when nc command tells that the port is opened +description: Learn how to fix the issue when nc command tells that the port is opened when troubleshooting your Spryker project. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/nc-command-tells-that-the-port-is-opened diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/xdebug-does-not-work.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/xdebug-does-not-work.md index 7610ff95d0c..5b68d2f1e9a 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/xdebug-does-not-work.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-debugging-in-docker/xdebug-does-not-work.md @@ -1,6 +1,6 @@ --- title: Xdebug does not work -description: Learn how to fix the issue with a non-working Xdebug +description: Learn how to fix the issue with a non-working Xdebug when troubleshooting your Spryker project. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/xdebug-does-not-work diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/413-request-entity-too-large.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/413-request-entity-too-large.md index 8526bf0b99b..736db4e3c3f 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/413-request-entity-too-large.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/413-request-entity-too-large.md @@ -1,6 +1,6 @@ --- title: 413 Request Entity Too Large -description: Learn how to fix the issue 413 Request Entity Too Large +description: Learn how to fix the issue 413 Request Entity Too Large when running your applications in docker with your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/413-request-entity-too-large diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/an-application-is-not-reachable-via-http.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/an-application-is-not-reachable-via-http.md index bc4e0c790e8..763a52cae20 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/an-application-is-not-reachable-via-http.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/an-application-is-not-reachable-via-http.md @@ -1,6 +1,6 @@ --- title: An application is not reachable via http -description: Learn how to fix the issue when an application is not reachable via http +description: Learn how to fix the issue when an application is not reachable via http when running your applications in docker with your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/an-application-is-not-reachable-via-http diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-error.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-error.md index ea25c56b358..67200137d21 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-error.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-error.md @@ -1,6 +1,6 @@ --- title: Mutagen error -description: Learn how to fix the Mutagen error +description: Learn how to fix the Mutagen error when running applications in docker with your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mutagen-error diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-synchronization-issue.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-synchronization-issue.md index 5c46dc52725..dc8731607c9 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-synchronization-issue.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/mutagen-synchronization-issue.md @@ -1,6 +1,6 @@ --- title: Mutagen synchronization issue -description: Learn how to fix the Mutagen synchronization issue +description: Learn how to fix the Mutagen synchronization issue when running applications in docker with your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mutagen-synchronization-issue diff --git a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/port-is-already-occupied-on-host.md b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/port-is-already-occupied-on-host.md index d6d0158eef6..be72cab6db5 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/port-is-already-occupied-on-host.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-running-applications-in-docker/port-is-already-occupied-on-host.md @@ -1,6 +1,6 @@ --- title: Port is already occupied on host -description: Learn how to fix the issue when port is already occupied on host +description: Learn how to fix the issue when port is already occupied on host when running applications in docker for your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/port-is-already-occupied-on-host diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/composer-version-2-compatibility-issues.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/composer-version-2-compatibility-issues.md index a4b729c32c6..f05a11808e4 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/composer-version-2-compatibility-issues.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/composer-version-2-compatibility-issues.md @@ -1,6 +1,6 @@ --- title: Composer version 2 compatibility issues -description: Learn how to solve Composer version 2 compatibility issues. +description: Learn how to troubleshoot and solve Composer version 2 compatibility issues within your Spryker based projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/composer-version-2-compatibility-issues diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/could-not-resolve-host-zed-calls-are-forbidden-from-zed.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/could-not-resolve-host-zed-calls-are-forbidden-from-zed.md index 63acfe00a61..6f5ad25f981 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/could-not-resolve-host-zed-calls-are-forbidden-from-zed.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/could-not-resolve-host-zed-calls-are-forbidden-from-zed.md @@ -1,6 +1,6 @@ --- title: Could not resolve host zed.calls.are.forbidden.from.zed -description: The solution for the zed.calls.are.forbidden.from.zed +description: The solution to resolve the zed.calls.are.forbidden.from.zed issue within your Spryker based project. last_updated: Nov 24, 2023 template: troubleshooting-guide-template related: diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/error-remove-spryker-logs-volume-is-in-use.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/error-remove-spryker-logs-volume-is-in-use.md index 41cc2e7c50a..b2b20a0e92c 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/error-remove-spryker-logs-volume-is-in-use.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/error-remove-spryker-logs-volume-is-in-use.md @@ -1,6 +1,6 @@ --- title: ERROR- remove spryker_logs- volume is in use -description: The solution to the `ERROR- remove spryker_logs- volume is in use` error. +description: Learn how to troubleshoot and the solution to the `ERROR- remove spryker_logs- volume is in use` error within your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/error-remove-spryker-logs-volume-is-in-use diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/fail-whale-on-the-frontend.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/fail-whale-on-the-frontend.md index 148da5582a8..0f78a907796 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/fail-whale-on-the-frontend.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/fail-whale-on-the-frontend.md @@ -1,6 +1,6 @@ --- title: Fail whale on the frontend -description: The solution for the fail whale on the front end. +description: Learn how to troubleshoot and the solution for the fail whale on the front end within your Spryker based projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/fail-whale-on-the-front-end diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/no-data-on-the-storefront.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/no-data-on-the-storefront.md index 1029a1f9f3a..d0e9b473bf3 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/no-data-on-the-storefront.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/no-data-on-the-storefront.md @@ -1,6 +1,6 @@ --- title: No data on the Storefront -description: The solution to the data being absent on the Storefront. +description: A troubleshoot guide for the solution to the data being absent on the Storefront within your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/no-data-on-the-storefront diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md index ae022e9d5ae..3686fe235eb 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md @@ -1,5 +1,6 @@ --- title: PHPStan memory issues +description: Learn how to troubleshoot and resolve PHPStan memory issues that you may come across in your Spryker based projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/phpstan-memory-issues diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/prices-filter-and-sorting-does-t-work-on-frontend.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/prices-filter-and-sorting-does-t-work-on-frontend.md index cc05794adcf..5a57044b533 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/prices-filter-and-sorting-does-t-work-on-frontend.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/prices-filter-and-sorting-does-t-work-on-frontend.md @@ -1,6 +1,6 @@ --- title: Prices filter and sorting doesn't work on Frontend -description: Explanation why these filters might not work. +description: Learn the explanation to why prices and sorting filters might not work within your Spryker based project. last_updated: Oct 6, 2023 template: troubleshooting-guide-template --- diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/processtimedoutexception-after-queue-task-start.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/processtimedoutexception-after-queue-task-start.md index fcf25f46c05..16902a54772 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/processtimedoutexception-after-queue-task-start.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/processtimedoutexception-after-queue-task-start.md @@ -1,6 +1,6 @@ --- title: ProcessTimedOutException after queue-task-start -description: Learn how to fix the exception after running queue-task-start +description: Learn how to fix the exception after running queue-task-start within your Spryker based projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/processtimedoutexception-after-queuetaskstart diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/the-spy-oms-transition-log-table-takes-up-too-much-space.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/the-spy-oms-transition-log-table-takes-up-too-much-space.md index 9f6af344636..a05f833e311 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/the-spy-oms-transition-log-table-takes-up-too-much-space.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/the-spy-oms-transition-log-table-takes-up-too-much-space.md @@ -1,6 +1,6 @@ --- title: The spy_oms_transition_log table takes up too much space -description: Configure transition logs to be removed automatically. +description: Learn how you can Configure transition logs to be removed automatically within your Spryker projects. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/the-spy-oms-transition-log-table-takes-up-too-much-space diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/troubleshooting-rabbitmq.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/troubleshooting-rabbitmq.md index 380f18fec7b..c27405a9e90 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/troubleshooting-rabbitmq.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/troubleshooting-rabbitmq.md @@ -1,6 +1,6 @@ --- title: Troubleshooting RabbitMQ -description: Troubleshoot RabbitMQ issues +description: Common issues that may occur with RabbitMQ and how to troubleshoot and resolve those issues within you Spryker based project. template: concept-topic-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/troubleshooting-rabbitmq.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-several-calls-to-zed.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-several-calls-to-zed.md index f54a8a42e7b..21b49fe4678 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-several-calls-to-zed.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-several-calls-to-zed.md @@ -1,6 +1,6 @@ --- title: External calls—several calls to Zed -description: Troubleshoot the performance issue with several external calls to Zed +description: Troubleshoot the performance issue with several external calls to Zed with your Spryker based project. template: troubleshooting-guide-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-performance-issues/external-calls-several-calls-to-zed.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-take-a-lot-of-time.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-take-a-lot-of-time.md index 4e3b61bae9f..281efaac0cf 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-take-a-lot-of-time.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/external-calls-take-a-lot-of-time.md @@ -1,6 +1,6 @@ --- title: External calls take a lot of time -description: Troubleshoot the performance issue with external calls taking much time +description: Learn how to troubleshoot the performance issue with external calls taking much time within your Spryker project. template: troubleshooting-guide-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-performance-issues/external-calls-take-a-lot-of-time.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/n+1-problem.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/n+1-problem.md index 535de174f2a..4fc8b4d846c 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/n+1-problem.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/n+1-problem.md @@ -1,6 +1,6 @@ --- title: N+1 problem -description: N+1 problem +description: Learn how to troubleshoot and resolve issues for N+1 problems within your Spryker based projects. template: troubleshooting-guide-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-performance-issues/n+1-problem.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/not-optimised-composer-on-the-production-environment.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/not-optimised-composer-on-the-production-environment.md index 36faf18bf51..88fe9ff240b 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/not-optimised-composer-on-the-production-environment.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/not-optimised-composer-on-the-production-environment.md @@ -1,6 +1,6 @@ --- title: Not optimized Composer on the production environment -description: Fix the issue when all pages are slow on the production environment +description: Fix the issue when all pages are slow on the production environment and optimize compose within your Spryker projects. template: troubleshooting-guide-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-performance-issues/not-optimised-composer-on-the-production-environment.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/slow-publish-and-synchronization.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/slow-publish-and-synchronization.md index 47d8f11f457..0d3e4fe29db 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/slow-publish-and-synchronization.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/slow-publish-and-synchronization.md @@ -1,6 +1,6 @@ --- title: Slow Publish and Synchronization -description: Publish and Synchronization is slow on all or some actions. +description: Learn how to troubelshoot and resolve if Publish and Synchronization is slow on all or some actions for your Spryker projects. template: troubleshooting-guide-template last_updated: Feb 23, 2023 redirect_from: diff --git a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/troubleshooting-performance-issues.md b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/troubleshooting-performance-issues.md index 6ad0b8d72fa..91401099d5f 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/troubleshooting-performance-issues.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-performance-issues/troubleshooting-performance-issues.md @@ -1,6 +1,6 @@ --- title: Troubleshooting performance issues -description: Learn how you can troubleshoot the most common performance issues +description: Learn how you can troubleshoot and resolve the most common performance issues within your Spryker based projects template: concept-topic-template redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-performance-issues/troubleshooting-performance-issues.html diff --git a/docs/dg/dev/troubleshooting/troubleshooting.md b/docs/dg/dev/troubleshooting/troubleshooting.md index 160ec562aa5..48d966447c4 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting.md +++ b/docs/dg/dev/troubleshooting/troubleshooting.md @@ -1,6 +1,6 @@ --- title: Troubleshooting -description: Learn how you can fix technical issues with Spryker +description: Learn how you can troubleshoot and resolve technical issues with your Spryker based project. template: concept-topic-template last_updated: Jun 30, 2023 redirect_from: diff --git a/docs/dg/dev/updating-spryker/feature-or-module-updates.md b/docs/dg/dev/updating-spryker/feature-or-module-updates.md index 8bb8cafd063..c082ea7f3b1 100644 --- a/docs/dg/dev/updating-spryker/feature-or-module-updates.md +++ b/docs/dg/dev/updating-spryker/feature-or-module-updates.md @@ -1,6 +1,6 @@ --- title: Feature or module updates -description: Choose at which level to take updates +description: Learn how to update modules or features and to choose at which level to take updates within your Spryker based projects. last_updated: Jun 16, 2021 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/updating-spryker/installing-features-and-updating-modules.md b/docs/dg/dev/updating-spryker/installing-features-and-updating-modules.md index 7c3d526aac2..b22cee3e46b 100644 --- a/docs/dg/dev/updating-spryker/installing-features-and-updating-modules.md +++ b/docs/dg/dev/updating-spryker/installing-features-and-updating-modules.md @@ -1,6 +1,6 @@ --- title: Installing features and updating modules -description: Learn how to take different kinds of updates and install new packages +description: Learn how to take different kinds of updates and install new packages within your Spryker based projects. last_updated: Jun 16, 2021 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/updating-spryker/planning-updates.md b/docs/dg/dev/updating-spryker/planning-updates.md index 08ac148924d..a2cdd1a651a 100644 --- a/docs/dg/dev/updating-spryker/planning-updates.md +++ b/docs/dg/dev/updating-spryker/planning-updates.md @@ -1,6 +1,6 @@ --- title: Planning updates -description: Learn how to plan updates in your development process +description: Learn how to build a process and plan updates in your development process for your Spryker projects. last_updated: Apr 3, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/updating-spryker/switch-demo-shop-version.md b/docs/dg/dev/updating-spryker/switch-demo-shop-version.md index 235a0b38c71..3fd589ebd6b 100644 --- a/docs/dg/dev/updating-spryker/switch-demo-shop-version.md +++ b/docs/dg/dev/updating-spryker/switch-demo-shop-version.md @@ -1,6 +1,6 @@ --- title: Switch Demo Shop version -description: Learn how to switch the version of a Demo Shop +description: Learn how you can switch the version of a Demo Shop to a previous or next version within your Spryker projects. last_updated: Apr 13, 2023 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/updating-spryker/testing-updates.md b/docs/dg/dev/updating-spryker/testing-updates.md index 9fbfc897be5..be18cc3a5ef 100644 --- a/docs/dg/dev/updating-spryker/testing-updates.md +++ b/docs/dg/dev/updating-spryker/testing-updates.md @@ -1,6 +1,6 @@ --- title: Testing updates -description: Learn how to test your code after taking updates +description: Learn how you can test your code after taking updates to make sure your Spryker based projects work as expected. last_updated: Apr 3, 2023 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/updating-spryker/troubleshooting-updates.md b/docs/dg/dev/updating-spryker/troubleshooting-updates.md index 6d1e6fa80f3..af7b73fde6c 100644 --- a/docs/dg/dev/updating-spryker/troubleshooting-updates.md +++ b/docs/dg/dev/updating-spryker/troubleshooting-updates.md @@ -1,6 +1,6 @@ --- title: Troubleshooting updates -description: Common update issues and how to solve them +description: Learn how to troubleshoot and resolve common update issues and errors within your Spryker based projects. last_updated: Jun 16, 2021 template: concept-topic-template redirect_from: From bf43b78c02afe24c8e307c717e3f2a6682520517 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Mon, 16 Dec 2024 16:26:16 +0200 Subject: [PATCH 126/199] tw-review --- _data/sidebars/dg_dev_sidebar.yml | 17 ++++++++++ _data/sidebars/pbc_all_sidebar.yml | 8 +++++ ...and-flows-for-payment-service-providers.md | 17 ++++++++++ ...nous-api-for-payment-service-providers.md} | 25 +++++++------- ...ect-flows-for-payment-service-providers.md | 33 +++++++++++++++++++ ...ent-flow-for-payment-service-providers.md} | 25 +++++++------- ...ment-flow-for-payment-service-providers.md | 27 +++++++++++++++ ...page-flow-for-payment-service-providers.md | 23 +++++++++++++ ...ment-flow-for-payment-service-providers.md | 28 ++++++++++++++++ ...nous-api-for-payment-service-providers.md} | 25 +++++++------- ...vice-providers-configure-and-disconnect.md | 32 ------------------ ...-for-payment-service-providers-headless.md | 26 --------------- ...t-service-providers-hosted-payment-page.md | 22 ------------- ...ment-service-providers-oms-payment-flow.md | 27 --------------- ...-diagrams-for-payment-service-providers.md | 21 ------------ .../base-shop/change-default-return-urls.md | 10 +++--- .../payone-credit-card-payment-flow.md | 16 +++------ ...-payment-flow-in-headless-applications.md} | 19 ++++------- ...-flow.md => payone-paypal-payment-flow.md} | 20 ++++------- 19 files changed, 214 insertions(+), 207 deletions(-) create mode 100644 docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.md rename docs/dg/dev/acp/{apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md => apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.md} (51%) create mode 100644 docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.md rename docs/dg/dev/acp/{apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md => apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.md} (70%) create mode 100644 docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.md create mode 100644 docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.md create mode 100644 docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.md rename docs/dg/dev/acp/{apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md => apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.md} (57%) delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md delete mode 100644 docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md rename docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/{pay-pal-express.md => payone-paypal-express-payment-flow-in-headless-applications.md} (87%) rename docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/{payone-paypal-payment-method-flow.md => payone-paypal-payment-flow.md} (56%) diff --git a/_data/sidebars/dg_dev_sidebar.yml b/_data/sidebars/dg_dev_sidebar.yml index 4fb226f82db..2d65a5dfb05 100644 --- a/_data/sidebars/dg_dev_sidebar.yml +++ b/_data/sidebars/dg_dev_sidebar.yml @@ -1622,6 +1622,23 @@ entries: url: /docs/dg/dev/acp/retaining-acp-apps-when-running-destructive-deployments.html - title: APIs and overview diagrams for payment service providers url: /docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html + - title: APIs and flows for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.html + nested: + - title: Asynchronous API for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html # - title: Develop an app # url: /docs/dg/dev/acp/develop-an-app/develop-an-app.html # nested: diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 161d775e761..d3f31094e83 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2426,6 +2426,14 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/configure-payone.html - title: Disconnect Payone url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/disconnect-payone.html + - title: Payment method flows + nested: + - title: PayOne Credit Card payment flow + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.html + - title: PayOne PayPal Express payment flow in headless applications + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.html + - title: Payone PayPal payment flow + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html - title: Manual integration url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/manual-integration/payone-manual-integration.html diff --git a/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.md new file mode 100644 index 00000000000..04ece96ab9b --- /dev/null +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.md @@ -0,0 +1,17 @@ +--- +title: APIs and flows for payment service providers +description: Overview of PSP APIs +last_updated: Sep 27, 2024 +template: concept-topic-template +--- + +This section provides an overview of Payment Service Provider (PSP) APIs. All PSPs use both synchronous and asynchronous APIs. + +For detailed information on PSP APIs, see the following docs: + +- [Configure and disconnect flows for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html) +- [Headless express checkout payment flow for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html) +- [Headless payment flow for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html) +- [Hosted payment page flow for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html) +- [OMS payment flow for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html) +- [Synchronous API for payment service providers](/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.md similarity index 51% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md rename to docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.md index 0525278efa3..1adff8456f1 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-async-api.md +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.md @@ -1,11 +1,21 @@ --- -title: Asynchronous API overview for payment service providers +title: Asynchronous API for payment service providers description: Overview of PSP Asynchronous API last_updated: Now 08, 2024 template: concept-topic-template related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html --- All PSP integrations are based on a asynchronous API. The asynchronous API is used to process payments and refunds. The following asynchronous messages are used: @@ -32,12 +42,3 @@ Sent from Spryker: * `CancelPayment`: Initiates payment cancellation. * `CapturePayment`: Initiates payment capture. * `RefundPayment`: Initiates payment refund. - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.md new file mode 100644 index 00000000000..57d71c8c9d2 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.md @@ -0,0 +1,33 @@ +--- +title: Configure and disconnect flows for payment service providers +description: Overview of configuration and disconnect flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html +--- + +The following diagram explains the configuration and disconnect flows for a payment app. + +![configure-and-disconnect-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/configure-and-disconnect-flows.png) + +Optional messages: +* `AddPaymentMethod` +* `UpdatePaymentMethod` +* `DeletePaymentMethod` +* `ReadyForMerchantAppOnboarding` + +The Payment Method related messages are used to manage payment methods in Spryker. These messages are sent only when a payment method configuration changes or when the list of available payment methods changes. + +The `ReadyForMerchantAppOnboarding` message is used to inform Spryker that the app is ready to onboard merchants; used only for marketplace projects. diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.md similarity index 70% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md rename to docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.md index 9dcc6e5dd55..2e60c61618b 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.md +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.md @@ -1,11 +1,21 @@ --- -title: API and overview diagram the Headless express-checkout payment flow for payment service providers +title: Headless express checkout payment flow for payment service providers description: Overview of the Headless payment flow with express-checkout payment methods last_updated: Now 08, 2024 template: concept-topic-template related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html --- The following diagram explains the flow of a headless payment page with an express-checkout payment method based on Glue API. @@ -100,12 +110,3 @@ Here is an example request for the PayOne PayPal Express payment method used by ``` - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.md new file mode 100644 index 00000000000..869158a9ec9 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.md @@ -0,0 +1,27 @@ +--- +title: Headless payment flow for payment service providers +description: Overview of the Headless payment flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html +--- + +The following diagram explains the flow of a headless payment page based on Glue API. + +![headless-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-payment-flow.png) + +`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when a headless implementation requires a cancellation. diff --git a/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.md new file mode 100644 index 00000000000..de1e714bca4 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.md @@ -0,0 +1,23 @@ +--- +title: Hosted payment page flow for payment service providers +description: Overview of the Hosted payment page flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html +--- + +The following diagram explains the hosted payment page flow. + +![hosted-payment-page-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/hosted-payment-page-flow.png) diff --git a/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.md new file mode 100644 index 00000000000..09efc6eb1c9 --- /dev/null +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.md @@ -0,0 +1,28 @@ +--- +title: OMS payment flow for payment service providers +description: Overview of POMS payment flow +last_updated: Now 08, 2024 +template: concept-topic-template +related: + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: Synchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.html +--- + +The following diagram shows the flow of an order in the OMS with an app. + +![oms-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/oms-payment-flow.png) + +Optional elements: +* `/payments/transfers` transfers request: used only in marketplaces. +* `CancelPayment` message: used only when a payment needs to be canceled. +* `RefundPayment` message: used only when the refund process is triggered for one or more order items. diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.md similarity index 57% rename from docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md rename to docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.md index 26a60e3f4b7..c84e8da9c09 100644 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-sync-api.md +++ b/docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/synchronous-api-for-payment-service-providers.md @@ -1,11 +1,21 @@ --- -title: Synchronous API overview +title: Synchronous API for payment service providers description: Overview of Synchronous API endpoints last_updated: Now 08, 2024 template: concept-topic-template related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html + - title: Asynchronous API for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + - title: Configure and disconnect flows for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html + - title: Headless express checkout payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-express-checkout-payment-flow-for-payment-service-providers.html + - title: Headless payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/headless-payment-flow-for-payment-service-providers.html + - title: Hosted payment page flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/hosted-payment-page-flow-for-payment-service-providers.html + - title: OMS payment flow for payment service providers + link: docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/oms-payment-flow-for-payment-service-providers.html --- All PSP integrations are based on a synchronous API. A synchronous API is used to process payments and transfers to merchants. The following endpoints are used: @@ -20,12 +30,3 @@ All PSP integrations are based on a synchronous API. A synchronous API is used t * `/payments/transfers`: Used from the Back Office or OMS with the app being used in a marketplace. This initiates a money transfer from the marketplace to the merchant. * `/webhooks`: Used from external applications to send requests to an app. * `/webhooks/test`: Used from external applications in test mode to send requests to an app. - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md deleted file mode 100644 index 13ba20b5710..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: API and overview diagram the configure and disconnect flows for payment service providers -description: Overview of configuration and disconnect flow -last_updated: Now 08, 2024 -template: concept-topic-template -related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html ---- - -The following diagram explains the configuration and disconnect flows for a payment app. - -![configure-and-disconnect-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/configure-and-disconnect-flows.png) - -Optional messages: -* `AddPaymentMethod` -* `UpdatePaymentMethod` -* `DeletePaymentMethod` -* `ReadyForMerchantAppOnboarding` - -The Payment Method related messages are used to manage payment methods in Spryker. These messages are sent only when a payment method configuration changes or when the list of available payment methods changes. - -The `ReadyForMerchantAppOnboarding` message is used to inform Spryker that the app is ready to onboard merchants; used only for marketplace projects. - -### Further reading - -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md deleted file mode 100644 index 1fece1e7207..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-headless.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: API and overview diagram the Headless payment flow for payment service providers -description: Overview of the Headless payment flow -last_updated: Now 08, 2024 -template: concept-topic-template -related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html ---- - -The following diagram explains the flow of a headless payment page based on Glue API. - -![headless-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/headless-payment-flow.png) - -`CancelPreOrderPayment` is an optional element. It's used to cancel a payment that had been created before an order was persisted. This can happen when a customer clicks cancel or when a headless implementation requires a cancellation. - -For information about endpoints and messages, see the following links. - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md deleted file mode 100644 index 3c825f4ea54..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: API and overview diagram the Hosted payment page flow for payment service providers -description: Overview of the Hosted payment page flow -last_updated: Now 08, 2024 -template: concept-topic-template -related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html ---- - -The following diagram explains the hosted payment page flow. - -![hosted-payment-page-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/hosted-payment-page-flow.png) - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the OMS payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) \ No newline at end of file diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md deleted file mode 100644 index d492bb089f3..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: API and overview diagram the OMS payment flow for payment service providers -description: Overview of POMS payment flow -last_updated: Now 08, 2024 -template: concept-topic-template -related: - - title: APIs and overview diagrams for payment service providers - link: docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html ---- - -The following diagram shows the flow of an order in the OMS with an app. - -![oms-payment-flow](https://spryker.s3.eu-central-1.amazonaws.com/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.md/oms-payment-flow.png) - -Optional elements: -* `/payments/transfers` transfers request: used only in marketplaces. -* `CancelPayment` message: used only when a payment needs to be canceled. -* `RefundPayment` message: used only when the refund process is triggered for one or more order items. - -### Further reading - -* [Learn about the configure and disconnect flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Learn about the Hosted payment page flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Learn about the Headless payment flow used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Learn about the Headless payment flow with express-checkout payment methods used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [Learn about the asynchronous messages used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Learn about the synchronous API endpoints used in the ACP.](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md b/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md deleted file mode 100644 index 209c22f1db8..00000000000 --- a/docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers/apis-and-overview-diagrams-for-payment-service-providers.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: APIs and overview diagrams for payment service providers -description: Overview of PSP APIs -last_updated: Sep 27, 2024 -template: concept-topic-template -related: - - title: Stripe - link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html ---- - -This section provides an overview of Payment Service Provider (PSP) APIs. All PSPs use both synchronous and asynchronous APIs. - -For detailed information on PSP APIs, see the following docs: - -* [Configure and disconnect flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-configure-and-disconnect.html) -* [Hosted payment page flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-hosted-payment-page.html) -* [Headless payment flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless.html) -* [Headless payment flow with express-checkout payment methods](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-headless-express-checkout.html) -* [OMS payment flow](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-oms-payment-flow.html) -* [Asynchronous messages](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-asynchronous-api.html) -* [Synchronous API endpoints](docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers-synchronous-api.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md index bc3b2cb8c99..642f563d95e 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md @@ -5,14 +5,12 @@ last_updated: Nov. 27, 2024 template: howto-guide-template --- -Payment methods are configured to redirect the customer to a specific URL after the payment process is completed, has failed, or was cancelled. This document provides information on how to change the default return URLs for payments. +Payment methods are configured to redirect the customer to a specific return URL after the payment process is completed, failed, or cancelled. This document provides information on how to change the default return URLs for payments. -## Change the default return URLs +Some third-party integrations only use a return URL while others can also use a failure and/or cancel URLs. The `ForeignPayment` class is used to send the expected return URLs to the payment app, which are then used when needed. -Some 3rd party integrations only use a return URL while others can also use a failure and/or cancel URL. The ForeignPayment class is responsible to send the expected return URLs to the Payment App which are then used if applicable. - -To change the default return URLs, you can use the following methods: +To change the default return URLs, you can use the following methods: - `\Spryker\Zed\Payment\PaymentConfig::getSuccessRoute()` - `\Spryker\Zed\Payment\PaymentConfig::getCancelRoute()` -- `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` \ No newline at end of file +- `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md index baedf2b28d8..aa58776b782 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.md @@ -3,12 +3,11 @@ title: PayOne Credit Card payment flow description: Payone offers your customers to pay with Credit Card. template: howto-guide-template last_updated: Now 8, 2024 -redirect_from: - - /docs/aop/user/apps/payone.html - - /docs/acp/user/apps/payone.html - - /docs/pbc/all/payment-service-providers/payone/payone.html - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html - - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +related: + - title: PayOne PayPal Express payment flow in headless applications + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.html + - title: Payone PayPal payment flow + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html --- When customers pay with a credit card, the flow is as follows: @@ -30,8 +29,3 @@ When customers pay with a credit card, a shop owner can do the following: - Charge customers once the order is ready to be shipped, that is, capture the funds. - Cancel the entire customer order, that is, void the existing preauthorization. In this case, the customer is not charged anything. - Cancel one or more items of a customer's order before shipment. The customer is not charged for the canceled items. - -## Other payment method flows - -* [PayPal](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) -* [PayPal Express](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md similarity index 87% rename from docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md rename to docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md index 84b26091f44..44a3bae9189 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md @@ -1,14 +1,13 @@ --- -title: Payone PayPal Express in a headless application +title: PayOne PayPal Express payment flow in headless applications description: Payone offers your customers to pay with PayPal Express. template: howto-guide-template last_updated: Now 8, 2024 -redirect_from: - - /docs/aop/user/apps/payone.html - - /docs/acp/user/apps/payone.html - - /docs/pbc/all/payment-service-providers/payone/payone.html - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html - - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +related: + - title: PayOne Credit Card payment flow + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.html + - title: Payone PayPal payment flow + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html --- ## PayPal Express for checkout in a headless application @@ -175,9 +174,3 @@ This data must be used to fill the quote with the missing customer data. When the customer submits the order, the payment data is sent to PayOne. After this, the customer is redirected to the success or error page depending on the result. - - -## Other Payment method flows - -* [Credit Card](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* [PayPal](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.md similarity index 56% rename from docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md rename to docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.md index b5931a77478..21266024662 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-method-flow.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.md @@ -1,14 +1,13 @@ --- -title: Payone PayPal payment method flow +title: Payone PayPal payment flow description: Payone offers your customers to pay with PayPal. template: howto-guide-template -last_updated: Now 8, 2024 -redirect_from: - - /docs/aop/user/apps/payone.html - - /docs/acp/user/apps/payone.html - - /docs/pbc/all/payment-service-providers/payone/payone.html - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html - - /docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/integration-in-the-back-office/payone-integration-in-the-back-office.html +last_updated: Nov 8, 2024 +related: + - title: PayOne Credit Card payment flow + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-credit-card-payment-flow.html + - title: PayOne PayPal Express payment flow in headless applications + url: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html --- When customers pay with PayPal, the flow is as follows: @@ -29,8 +28,3 @@ When customers pay with PayPal, a shop owner can do the following: - Charge a customer once their order is ready to be shipped, that is, capture the funds. - Cancel an entire order, that is, void the existing preauthorization. This doesn't charge the customer. - Cancel one or more items from an order before shipment. The curtomer is charged only for the items that are going to be shipped. - -## Other Payment method flows - -* [Credit Card](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/credit-card.html) -* [PayPal Express](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/pay-pal-express.html) From 45fb7fb45fa6d02954cb7b00435493db2ffebcee Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Mon, 16 Dec 2024 16:33:18 +0200 Subject: [PATCH 127/199] Update install-the-payments-feature.md --- .../202410.0/install-the-payments-feature.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 1515852ce30..3690ce9dde9 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -238,7 +238,7 @@ Add a product bundle to cart and place the order using the express checkout flow {% endinfo_block %} -7. When customers start a regular checkout, the quote is cleaned up to let them to restart the checkout process from the beginning. Enable cart clean up for the regular checkout flow. +7. When customers start a regular checkout, the quote is cleaned up to let them to restart the checkout process from the beginning. Enable cart cleanup for the regular checkout flow. **src/Pyz/Zed/PaymentAppShipment/PaymentAppShipmentConfig.php** @@ -267,10 +267,10 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig {% info_block warningBox "Verification" %} -* Add several products to cart and proceed to the express checkout flow. -* On the summary page, click the **Back to cart** button. -* Start the regular checkout by clicking the **Checkout** button. -* You will be redirected to the address step of the regular checkout. +1. Add several products to cart and proceed to the express checkout flow. +2. On the summary page, click the **Back to cart** button. +3. To proceed to the regular checkout, click **Checkout**. + This opens the address step of the regular checkout. {% endinfo_block %} From b1b5d9455098167309ff1d31eb76d7e7f4017408 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 14:33:38 +0000 Subject: [PATCH 128/199] Dev Set up Locally SEO Update Changed the meta desc for pages within Set up Spryker locally articles for an SEO update. --- .../configure-debugging/configure-debugging.md | 2 +- .../set-up-xdebug-profiling.md | 2 +- .../configure-spryker-after-installing.md | 4 ++-- .../database-access-credentials.md | 2 +- ...-docker-prerequisites-on-windows-with-wsl1.md | 8 ++++---- ...-docker-prerequisites-on-windows-with-wsl2.md | 8 ++++---- .../install-docker-prerequisites.md | 2 +- .../install/choose-an-installation-mode.md | 4 ++-- .../install-in-demo-mode-on-macos-and-linux.md | 4 ++-- .../install/install-in-demo-mode-on-windows.md | 4 ++-- ...all-in-development-mode-on-macos-and-linux.md | 2 +- .../install-in-development-mode-on-windows.md | 4 ++-- .../manage-dependencies-with-composer.md | 2 +- ...t-guide-install-spryker-on-macos-and-linux.md | 2 +- ...uickstart-guide-install-spryker-on-windows.md | 2 +- .../quickstart-guides-install-spryker.md | 2 +- .../set-up-spryker-locally.md | 2 +- .../an-error-during-front-end-setup.md | 16 ++++++++-------- .../demo-data-was-imported-incorrectly.md | 16 ++++++++-------- .../docker-daemon-is-not-running.md | 16 ++++++++-------- .../docker-sync-cannot-start.md | 16 ++++++++-------- ...no-valid-crumb-was-included-in-the-request.md | 16 ++++++++-------- ...s-not-yet-support-your-current-environment.md | 16 ++++++++-------- .../setup-of-new-indexes-throws-an-exception.md | 16 ++++++++-------- .../troubleshooting-installation.md | 2 +- .../vendor-folder-synchronization-error.md | 2 +- 26 files changed, 86 insertions(+), 86 deletions(-) diff --git a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/configure-debugging.md b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/configure-debugging.md index c41ad7e1174..c968a0167b1 100644 --- a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/configure-debugging.md +++ b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/configure-debugging.md @@ -1,6 +1,6 @@ --- title: Configure debugging -description: Learn how to configure debugging in Docker. +description: Learn how you can configure debugging in Docker for your Local environment Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-debugging-in-docker diff --git a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/set-up-xdebug-profiling.md b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/set-up-xdebug-profiling.md index 6fae5b410cb..01a12b5d7db 100644 --- a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/set-up-xdebug-profiling.md +++ b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-debugging/set-up-xdebug-profiling.md @@ -1,6 +1,6 @@ --- title: Set up XDebug profiling -description: Learn how to setup XDebug profiling in a local development environment. +description: Learn how to setup XDebug profiling in a local development environment for your Spryker based projects. template: howto-guide-templatel redirect_from: - /docs/scos/dev/tutorials-and-howtos/howtos/howto-setup-xdebug-profiling.html diff --git a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-spryker-after-installing.md b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-spryker-after-installing.md index 812963b736f..4af0d559b53 100644 --- a/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-spryker-after-installing.md +++ b/docs/dg/dev/set-up-spryker-locally/configure-after-installing/configure-spryker-after-installing.md @@ -1,6 +1,6 @@ --- title: Configure Spryker after installing -description: Instructions for Configure Spryker after installing it with Docker +description: Learn with these instructions to Configure Spryker Local environments after installing it with Docker last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/post-installation-steps-and-additional-info @@ -15,7 +15,7 @@ redirect_from: - /docs/scos/dev/set-up-spryker-locally/installing-spryker-with-development-virtual-machine/configuring-spryker-with-devvm/updating-node.js-in-devvm-to-the-latest-version.html related: - title: Set up a self-signed SSL certificate - link: docs/scos/dev/set-up-spryker-locally/configure-after-installing/set-up-a-self-signed-ssl-certificate.html + link: docs.spryker.com/docs/dg/dev/set-up-spryker-locally/configure-after-installing/set-up-a-self-signed-ssl-certificate.html --- This document describes how to configure Spryker after installing it. diff --git a/docs/dg/dev/set-up-spryker-locally/database-access-credentials.md b/docs/dg/dev/set-up-spryker-locally/database-access-credentials.md index 3d2b7517551..2a6ff5e26c0 100644 --- a/docs/dg/dev/set-up-spryker-locally/database-access-credentials.md +++ b/docs/dg/dev/set-up-spryker-locally/database-access-credentials.md @@ -1,6 +1,6 @@ --- title: Database access credentials -description: Database access credentials for MariaDB, MySQL, and PostgreSQL. +description: Learn how to find Database access credentials for MariaDB, MySQL, and PostgreSQL for your Local Spryker Environments. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/database-access-credentials diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.md index 94686616c51..9e0bd8d86a6 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.md @@ -1,6 +1,6 @@ --- title: Install Docker prerequisites on Windows with WSL1 -description: This page describes the steps that are to be performed before you can start working with Spryker in Docker on Windows. +description: This page describes the steps that are to be performed before you can start working with Spryker in Docker on Windows with WSL1. template: howto-guide-template last_updated: Jul 5, 2023 originalLink: https://documentation.spryker.com/v5/docs/docker-installation-prerequisites-windows @@ -10,11 +10,11 @@ redirect_from: related: - title: Install Docker prerequisites on Linux - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-linux.html + link: docs.spryker.com/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-linux.html#system-requirements-for-installing-spryker - title: Install Docker prerequisites on MacOS - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-macos.html + link: docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-macos.html - title: Install Docker prerequisites on Windows with WSL2 - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.html + link: docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.html --- This document describes the prerequisites for installing Spryker on Windows. diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.md index af3f978704e..4d3b1d2b3dd 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl2.md @@ -1,6 +1,6 @@ --- title: Install Docker prerequisites on Windows with WSL2 -description: This page describes the steps that are to be performed before you can start working with Spryker in Docker on Windows. +description: This page describes the steps that are to be performed before you can start working with Spryker in Docker on Windows with WSL2. last_updated: Oct 21, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/installing-docker-prerequisites-on-windows @@ -11,11 +11,11 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/docker-installation-prerequisites/installing-docker-prerequisites-on-windows-with-wsl2.html related: - title: Install Docker prerequisites on Linux - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-linux.html + link: docs.spryker.com/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-linux.html#system-requirements-for-installing-spryker - title: Install Docker prerequisites on MacOS - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-macos.html + link: docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-macos.html - title: Install Docker prerequisites on Windows with WSL1 - link: docs/scos/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.html + link: docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites-on-windows-with-wsl1.html --- This document describes the prerequisites for installing Spryker on Windows. diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites.md index c64ab92dfa1..3f4e24244cd 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install-docker-prerequisites/install-docker-prerequisites.md @@ -1,6 +1,6 @@ --- title: Installing Docker prerequisites -description: This section +description: Learn about the prerequisites needed for installing Spryker in docker on Linux, MacOS or Windows last_updated: Mar 30, 2023 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/choose-an-installation-mode.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/choose-an-installation-mode.md index 2a0d3f903fd..d61c9438dde 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/choose-an-installation-mode.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/choose-an-installation-mode.md @@ -1,6 +1,6 @@ --- title: Choose an installation mode -description: Choose an installation mode to install Spryker in. +description: Learn about choosing between the Development or Demo installation mode when setting up your Spryker Shop in a Local environment. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/choosing-an-installation-mode @@ -11,7 +11,7 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/installation-guides/choosing-an-installation-mode.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html + link: docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.html --- diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md index b0cee8a7336..012b34f812c 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-macos-and-linux.md @@ -1,6 +1,6 @@ --- title: Install in Demo mode on MacOS and Linux -description: Learn how to install Spryker in Demo mode on MacOS and Linux. +description: Learn how you can install Spryker in Demo mode on MacOS and Linux in a local environment. last_updated: Jul 5, 2022 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/installing-in-demo-mode-on-macos-and-linux @@ -10,7 +10,7 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/installation-guides/installing-in-demo-mode-on-macos-and-linux.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html + link: docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.html --- {% info_block infoBox "" %} diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md index 1aa281ea1eb..6bae8e30597 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-demo-mode-on-windows.md @@ -1,6 +1,6 @@ --- title: Install in Demo mode on Windows -description: Learn how to install Spryker in Demo mode on Windows. +description: Learn how you can install and configure Spryker in Demo mode on Windows in a local environment. last_updated: Oct 21, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/installing-in-demo-mode-on-windows @@ -10,7 +10,7 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/installation-guides/installing-in-demo-mode-on-windows.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html + link: docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.html --- This doc describes how to install Spryker in [Demo Mode](/docs/dg/dev/set-up-spryker-locally/install-spryker/install/choose-an-installation-mode.html#demo-mode) on Windows. diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md index c9bf7ecc4c9..73acc1a7cd6 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md @@ -1,6 +1,6 @@ --- title: Install in Development mode on MacOS and Linux -description: Learn how to install Spryker in Development mode on MacOS and Linux. +description: Learn how to install and configure Spryker in Development mode on MacOS and Linux in a local environment. last_updated: Oct 21, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/installing-in-development-mode-on-macos-and-linux diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md index 485307de613..cb8247190f4 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-windows.md @@ -1,6 +1,6 @@ --- title: Install in Development mode on Windows -description: Learn how to install Spryker in Development mode on Windows. +description: Learn how to install and configure Spryker in Development mode on Windows in a local environment. last_updated: Oct 21, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/installing-in-development-mode-on-windows @@ -11,7 +11,7 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/installation-guides/installing-in-development-mode-on-windows.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html + link: docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.html --- diff --git a/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md b/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md index 2bb8fa85af0..cff22f24a14 100644 --- a/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md +++ b/docs/dg/dev/set-up-spryker-locally/manage-dependencies-with-composer.md @@ -1,6 +1,6 @@ --- title: Manage dependencies with Composer -description: Spryker Cloud Commerce OS uses Composer as a dependency manager. +description: Spryker Cloud Commerce OS uses Composer as a dependency manager this guide helps you learn how to manage those dependencies with your Local Spryker Environement. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/composer diff --git a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md index 4550a519fc4..04114c61278 100644 --- a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md +++ b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-macos-and-linux.md @@ -1,6 +1,6 @@ --- title: "Quickstart guide: Install Spryker on MacOS and Linux" -description: Get started with Spryker on MacOS and Linux +description: A quickstart guide to get you up and running installing Spryker in a local environment on MacOS and Linux. last_updated: Feb 3, 2022 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md index 4f0667118a4..ed7db5c7de7 100644 --- a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md +++ b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guide-install-spryker-on-windows.md @@ -1,6 +1,6 @@ --- title: "Quickstart guide: Install Spryker on Windows" -description: Get started with Spryker using Docker on Windows +description: A quickstart guide to get you up and running installing Spryker in a local environment on Windows. last_updated: Feb 03, 2023 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guides-install-spryker.md b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guides-install-spryker.md index 1a305177be2..97a9cc52e28 100644 --- a/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guides-install-spryker.md +++ b/docs/dg/dev/set-up-spryker-locally/quickstart-guides-install-spryker/quickstart-guides-install-spryker.md @@ -1,6 +1,6 @@ --- title: "Quickstart guides: Install Spryker" -description: Quick install Spryker B2B, B2C, Marketplace B2B, Marketplace B2C +description: Get up and running quickly with these Quickstart guides on how to install Spryker B2B, B2C, Marketplace B2B, Marketplace B2C in a local environment. last_updated: Feb 3, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.md b/docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.md index c9ba4ee25c1..26d6d61821a 100644 --- a/docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.md +++ b/docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.md @@ -1,6 +1,6 @@ --- title: Set up Spryker locally -description: Set up Spryker Cloud Commerce OS locally +description: Learn how you can set up Spryker Cloud Commerce OS in to a local enviroment for Demos, development and experimentation purposes. template: concept-topic-template last_updated: Jun 23, 2023 redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.md index 54c6acaf62c..cbb1980c884 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.md @@ -1,6 +1,6 @@ --- title: An error during front end setup -description: Learn how to fix the error error during front end setup +description: Learn how to troubleshoot and resolve an error during front end setup with your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/an-error-during-front-end-setup @@ -10,19 +10,19 @@ redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-docker-installation/an-error-during-front-end-setup.html related: - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- ## Description diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.md index 99588009967..6d2e5980104 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.md @@ -1,6 +1,6 @@ --- title: Demo data was imported incorrectly -description: Learn how to fix the issue when demo data was imported incorrectly +description: Learn how to troubleshoot and resolve the error Demo data was importer incorrectly with your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/demo-data-was-imported-incorrectly @@ -10,19 +10,19 @@ redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-docker-installation/demo-data-was-imported-incorrectly.html related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- ## Description diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.md index 738ae11317f..c1fd694cb52 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.md @@ -1,6 +1,6 @@ --- title: Docker daemon is not running -description: Learn how to fix the issue when the Docker daemon is not running +description: Learn how to troubleshoot and resolve the error docker daemon is not running with your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-daemon-is-not-running @@ -10,19 +10,19 @@ redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-docker-installation/docker-daemon-is-not-running.html related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- ## Description diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.md index 11a8ccacc88..2d0282138fc 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.md @@ -1,6 +1,6 @@ --- title: docker-sync cannot start -description: Learn how to fix the issue with docker-sync not starting +description: Learn how to troubleshoot and resolve the error docker-sync cannot start with your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-sync-cannot-start @@ -10,19 +10,19 @@ redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-docker-installation/docker-sync-cannot-start.html related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- When running `docker-sync clean`, you might get two errors as described below. diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.md index 151316953a9..d3c76538fc0 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.md @@ -1,6 +1,6 @@ --- title: Error 403 No valid crumb was included in the request -description: Learn how to fix the issue with no valid crumbs provided. +description: Learn how to troubleshoot and resolve the error 403 No valid crumb was included in the request within your Spryker local environment. last_updated: May 4, 2022 template: troubleshooting-guide-template redirect_from: @@ -9,19 +9,19 @@ redirect_from: related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.md index 3c9d65afee1..13e9ce5676a 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.md @@ -1,6 +1,6 @@ --- title: Node Sass does not yet support your current environment -description: Learn how to fix the issue with unsupported Saas +description: Learn how to troubleshoot and resolve the issue of unsupported Sass within your Spryker local environment. last_updated: May 4, 2022 template: troubleshooting-guide-template redirect_from: @@ -9,19 +9,19 @@ redirect_from: related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- You get the error: `Node Sass does not yet support your current environment: Linux Unsupported architecture (arm64) with Node.js`. diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.md index a20c71ad577..4cf7add2f17 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.md @@ -1,6 +1,6 @@ --- title: Setup of new indexes throws an exception -description: Learn how to fix the issue when setup of new indexes throws an exception +description: Learn how to troubleshoot and resolve when setup of new indexes throws an exception within your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/setup-of-new-indexes-throws-an-exception @@ -11,19 +11,19 @@ redirect_from: - /docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Vendor folder synchronization error - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.html --- ## Description diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/troubleshooting-installation.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/troubleshooting-installation.md index 4118d383bfa..7b677e51ee6 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/troubleshooting-installation.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/troubleshooting-installation.md @@ -1,6 +1,6 @@ --- title: Troubleshooting installation -description: Troubleshoot installation issues. +description: Learn how you can troubleshoot issues that occur during installing Spryker to a local environment. last_updated: Jun 16, 2023 template: troubleshooting-guide-template redirect_from: diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md index 2a22b96333f..a6fed3fafa3 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md @@ -1,6 +1,6 @@ --- title: Vendor folder synchronization error -description: Learn how to fix the vendor folder synchronization error +description: Learn how you can troubleshoot and resolve the Vendor Folder Synchronization Error within your Spryker local environment. last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/vendor-folder-synchronization-error From 090ef3a9f1e199ea052dbba567177ac15e62f0fb Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 14:56:21 +0000 Subject: [PATCH 129/199] Fixed the canonical links issue fixed cnanonical links for vendor folder sync errors --- .../vendor-folder-synchronization-error.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md index a6fed3fafa3..3e4813e02e8 100644 --- a/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md +++ b/docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/vendor-folder-synchronization-error.md @@ -10,19 +10,19 @@ redirect_from: - /docs/scos/dev/troubleshooting/troubleshooting-docker-issues/troubleshooting-docker-installation/vendor-folder-synchronization-error.html related: - title: An error during front end setups - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/an-error-during-front-end-setup.html - title: Demo data was imported incorrectly - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/demo-data-was-imported-incorrectly.html - title: Docker daemon is not running - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-daemon-is-not-running.html - title: docker-sync cannot start - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/docker-sync-cannot-start.html - title: Error 403 No valid crumb was included in the request - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/error-403-no-valid-crumb-was-included-in-the-request.html - title: Node Sass does not yet support your current environment - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/node-saas-does-not-yet-support-your-current-environment.html - title: Setup of new indexes throws an exception - link: docs/scos/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html + link: docs/dg/dev/set-up-spryker-locally/troubleshooting-installation/setup-of-new-indexes-throws-an-exception.html --- You get an error similar to `vendor/bin/console: not found`. From b9d351dd00306da0bf3071fd01797a607ff9ef71 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 14:57:17 +0000 Subject: [PATCH 130/199] update to install in dev mode on macos and linux update to install in dev mode on macos and linux --- .../install/install-in-development-mode-on-macos-and-linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md index 73acc1a7cd6..e190ec546f6 100644 --- a/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md +++ b/docs/dg/dev/set-up-spryker-locally/install-spryker/install/install-in-development-mode-on-macos-and-linux.md @@ -15,7 +15,7 @@ redirect_from: - /docs/scos/dev/setup/installing-spryker-with-docker/installation-guides/installing-in-development-mode-on-macos-and-linux.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/set-up-spryker-locally.html + link: docs/dg/dev/set-up-spryker-locally/set-up-spryker-locally.html --- {% info_block infoBox "Info" %} From 932fa7684aea162dfce598a1dc0bebb3bf65ce1b Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Mon, 16 Dec 2024 16:21:54 +0000 Subject: [PATCH 131/199] Dev SDK SEO Update Updated the meta description of the SDK articles for an SEO Update --- .../sdks/sdk/build-flavored-spryker-sdks.md | 2 +- .../sdks/sdk/developing-with-spryker-sdk.md | 2 +- .../development-tools/architecture-sniffer.md | 18 +++++++-------- .../benchmark-performance-audit-tool.md | 2 +- .../sdk/development-tools/code-sniffer.md | 18 +++++++-------- .../development-tools/development-tools.md | 2 +- .../sdks/sdk/development-tools/formatter.md | 20 ++++++++--------- .../dev/sdks/sdk/development-tools/phpstan.md | 20 ++++++++--------- .../sdks/sdk/development-tools/scss-linter.md | 22 +++++++++---------- .../static-security-checker.md | 22 +++++++++---------- .../tooling-configuration-file.md | 22 +++++++++---------- .../sdks/sdk/development-tools/ts-linter.md | 22 +++++++++---------- docs/dg/dev/sdks/sdk/extending-spryker-sdk.md | 2 +- .../sdks/sdk/initialize-and-run-workflows.md | 2 +- ...mands-into-php-storm-command-line-tools.md | 2 +- docs/dg/dev/sdks/sdk/manifest-validation.md | 2 +- docs/dg/dev/sdks/sdk/spryker-sdk.md | 2 +- docs/dg/dev/sdks/sdk/spryks/adding-spryks.md | 4 ++-- .../spryks/checking-and-debugging-spryks.md | 2 +- ...d-disabling-the-code-sniffer-for-spryks.md | 2 +- docs/dg/dev/sdks/sdk/spryks/fileresolver.md | 2 +- .../spryks/spryk-configuration-reference.md | 2 +- .../sdks/sdk/spryks/spryks-qa-automation.md | 2 +- docs/dg/dev/sdks/sdk/task-set.md | 2 +- docs/dg/dev/sdks/sdk/task.md | 2 +- docs/dg/dev/sdks/sdk/telemetry.md | 2 +- .../spryker-sdk-command-not-found.md | 2 +- docs/dg/dev/sdks/sdk/value-resolvers.md | 2 +- docs/dg/dev/sdks/sdk/vcs-connector.md | 2 +- .../the-docker-sdk/choosing-a-mount-mode.md | 2 +- .../the-docker-sdk/configure-a-mount-mode.md | 2 +- ...onfigure-access-to-private-repositories.md | 2 +- ...eploy-file-inheritance-common-use-cases.md | 2 +- .../the-docker-sdk/deploy-file/deploy-file.md | 2 +- .../docker-environment-infrastructure.md | 1 + .../docker-sdk-configuration-reference.md | 2 +- .../docker-sdk-quick-start-guide.md | 2 +- ...llation-recipes-of-deployment-pipelines.md | 2 +- .../reset-docker-environments.md | 2 +- .../running-commands-with-the-docker-sdk.md | 2 +- .../running-tests-with-the-docker-sdk.md | 2 +- .../the-docker-sdk/update-the-docker-sdk.md | 1 + 42 files changed, 116 insertions(+), 116 deletions(-) diff --git a/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md b/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md index 1149d7d499c..477484ea626 100644 --- a/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md +++ b/docs/dg/dev/sdks/sdk/build-flavored-spryker-sdks.md @@ -1,6 +1,6 @@ --- title: Build flavored Spryker SDKs -description: Find out how you can build flavored Spryker SDKs +description: Find out how you can build flavored Spryker SDKs with extension or deep integration of the SDK within your Spryker projects. template: howto-guide-template last_updated: Nov 22, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md b/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md index 5056899df2f..f53df70550d 100644 --- a/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/developing-with-spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Developing with Spryker SDK -description: You can install and use Spryker SDK for your development needs +description: Learn how you can install and use Spryker SDK for your development needs with the dev enironment. template: howto-guide-template last_updated: Nov 22, 2022 related: diff --git a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md index 706f6d09213..2b2ebe35b1f 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.md @@ -18,23 +18,23 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/architecture-sniffer.html related: - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- We use our [Architecture Sniffer Tool](https://github.com/spryker/architecture-sniffer) to ensure the quality of Spryker architecture for both core and project. diff --git a/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md b/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md index 8092730d514..a18b5a06fea 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md +++ b/docs/dg/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.md @@ -1,6 +1,6 @@ --- title: "Benchmark: Performance audit tool" -description: The Benchmark tool allows you to assess an application's performance by seeing how long it takes to load a page and how much memory the application consumes during requests. +description: The Benchmark tool allows you to assess an application's performance by how long it takes to load a page and how much memory the it consumes during requests. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/performance-audit-tool-benchmark diff --git a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md index 660edbdc68d..e459688a598 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md +++ b/docs/dg/dev/sdks/sdk/development-tools/code-sniffer.md @@ -17,23 +17,23 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/code-sniffer.html related: - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- To correspond to [PSR-2](http://www.php-fig.org/psr/psr-2/) and additional standards, we integrated the well known [PHPCodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer). diff --git a/docs/dg/dev/sdks/sdk/development-tools/development-tools.md b/docs/dg/dev/sdks/sdk/development-tools/development-tools.md index 74375689af5..86c682fe700 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/development-tools.md +++ b/docs/dg/dev/sdks/sdk/development-tools/development-tools.md @@ -1,6 +1,6 @@ --- title: Development tools -description: How to use the tools associated with developing using the Spryker SDK +description: Learn how you can use the tools associated with developing with Spryker using the Spryker SDK last_updated: Jan 12, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/sdks/sdk/development-tools/formatter.md b/docs/dg/dev/sdks/sdk/development-tools/formatter.md index cb54da3d9b7..a2d394a3fdf 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/formatter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/formatter.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/formatter.html - /docs/scos/dev/sdk/development-tools/formatter.html related: - - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Architecture sniffer + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- *Formatter* allows you to find and fix code style mistakes and keep your code more readable. diff --git a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md index 12a7ae384a9..b86d62f265b 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md +++ b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md @@ -1,6 +1,6 @@ --- title: PHPStan -description: Learn how to install and use PHPStan, a static code analyzer +description: Learn how to install and use PHPStan, a static code analyzer within your Spryker SDK projects. last_updated: Jun 16, 2021 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/phpstan @@ -17,23 +17,21 @@ redirect_from: - /docs/scos/dev/sdk/development-tools/phpstan.html related: - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- [PHPStan](https://github.com/phpstan/phpstan) is a static code analyzer that introspects the code without running it and catches various classes of bugs prior to unit testing. diff --git a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md index 32261780f7c..ced14d5437b 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/scss-linter.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/scss-linter.html - /docs/scos/dev/sdk/development-tools/scss-linter.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- *SCSS linter* allows you to find and fix code style mistakes. It helps a team follow the same standards and make code more readable. diff --git a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md index ce1705dd665..8da311569c0 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md +++ b/docs/dg/dev/sdks/sdk/development-tools/static-security-checker.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/static-security-checker.html - /docs/scos/dev/sdk/development-tools/static-security-checker.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- The Spryker static Security Checker allows you to detect packages with security vulnerabilities. It is based on the [Local PHP Security Checker](https://github.com/fabpot/local-php-security-checker). diff --git a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md index d59b1f9fdb6..2f8df2e511d 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md +++ b/docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.md @@ -16,24 +16,24 @@ redirect_from: - /docs/scos/dev/sdk/202108.0/development-tools/tooling-config-file.html - /docs/scos/dev/sdk/development-tools/tooling-config-file.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: TS linter - link: docs/scos/dev/sdk/development-tools/ts-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/ts-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html --- In order to make the tool configuring more convenient, we introduced the `.tooling.yml` file. It contains a variety of settings for different tools in one place, helping you to keep the number of files on the root level as small as possible. The `.tooling.yml` file should also be in `.gitattributes` to be ignored for tagging: diff --git a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md index 45333ac1a56..32a2031ce67 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md +++ b/docs/dg/dev/sdks/sdk/development-tools/ts-linter.md @@ -23,24 +23,24 @@ redirect_from: - /docs/sdk/dev/development-tools/ts-linter.html related: + - title: Code sniffer + link: docs/dg/dev/sdks/sdk/development-tools/code-sniffer.html + - title: Formatter + link: docs/dg/dev/sdks/sdk/development-tools/formatter.html - title: Architecture sniffer - link: docs/scos/dev/sdk/development-tools/architecture-sniffer.html - - title: Code sniffer - link: docs/scos/dev/sdk/development-tools/code-sniffer.html - - title: Formatter - link: docs/scos/dev/sdk/development-tools/formatter.html + link: docs/dg/dev/sdks/sdk/development-tools/architecture-sniffer.html - title: Performance audit tool- Benchmark - link: docs/scos/dev/sdk/development-tools/performance-audit-tool-benchmark.html + link: docs/scos/dev/sdks/sdk/development-tools/benchmark-performance-audit-tool.html - title: PHPStan - link: docs/dg/dev/sdks/sdk/development-tools/phpstan.html + link: docs/dg/dev/sdks/sdks/sdk/development-tools/phpstan.html - title: SCSS linter - link: docs/scos/dev/sdk/development-tools/scss-linter.html + link: docs/dg/dev/sdks/sdk/development-tools/scss-linter.html - title: Spryk code generator - link: docs/scos/dev/sdk/development-tools/spryk-code-generator.html + link: docs/dg/dev/sdks/sdk/spryks/spryks.html - title: Static Security Checker - link: docs/scos/dev/sdk/development-tools/static-security-checker.html + link: docs/dg/dev/sdks/sdk/development-tools/static-security-checker.html - title: Tooling config file - link: docs/scos/dev/sdk/development-tools/tooling-config-file.html + link: docs/dg/dev/sdks/sdk/development-tools/tooling-configuration-file.html --- {% info_block warningBox "No longer supported" %} diff --git a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md index 2544481dd81..d97a37f36e4 100644 --- a/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/extending-spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Extending Spryker SDK -description: Find out how you can extend the Spryker SDK +description: Find out how you can extend the Spryker SDK allowing third parties to contribute to the SDK without modifying it. template: howto-guide-template last_updated: Jan 13, 2023 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md b/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md index 0541a2f7110..a2b18548a6e 100644 --- a/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md +++ b/docs/dg/dev/sdks/sdk/initialize-and-run-workflows.md @@ -1,6 +1,6 @@ --- title: Initialize and run workflows -description: Learn about the Spryker SDK telemetry configuration. +description: Learn about the Spryker SDK telemetry configuration and how you can Initialise and run workflows within your Spryker SDK project. template: howto-guide-template last_updated: Dec 16, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md b/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md index 151a4c17703..518131781c9 100644 --- a/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md +++ b/docs/dg/dev/sdks/sdk/integrate-spryker-sdk-commands-into-php-storm-command-line-tools.md @@ -1,6 +1,6 @@ --- title: Integrate Spryker SDK commands into PhpStorm command line tools -description: You can make the Spryker SDK available for the PhpStorm. +description: Learn how to integrate Spryker SDK commands in to PHPStorm command line tools for your Spryker based projects. template: task-topic-template last_updated: Nov 22, 2022 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/manifest-validation.md b/docs/dg/dev/sdks/sdk/manifest-validation.md index 4dc603147e6..776d312f053 100644 --- a/docs/dg/dev/sdks/sdk/manifest-validation.md +++ b/docs/dg/dev/sdks/sdk/manifest-validation.md @@ -1,6 +1,6 @@ --- title: Manifest validation -description: The manifest validation validates the YAML structure for a task. +description: Learn about the Manifest validation feature where it validates the YAML structure for a task within your Spryker projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/manifest-validation.html diff --git a/docs/dg/dev/sdks/sdk/spryker-sdk.md b/docs/dg/dev/sdks/sdk/spryker-sdk.md index 494d0f53cf2..af9110e58c8 100644 --- a/docs/dg/dev/sdks/sdk/spryker-sdk.md +++ b/docs/dg/dev/sdks/sdk/spryker-sdk.md @@ -1,6 +1,6 @@ --- title: Spryker SDK -description: Learn about the Spryker SDK and how you can use it in your project. +description: Learn all about the Spryker SDK and how you can use it to enhance your Spryker projects. template: concept-topic-template last_updated: Aug 31, 2023 redirect_from: diff --git a/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md b/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md index 1f8b33ffb95..7eb5e60453b 100644 --- a/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/adding-spryks.md @@ -1,6 +1,6 @@ --- title: Adding Spryks -description: Find out how you can add a new Spryk +description: Find out how you can add a new Spryk in to your Spryker project with Spryker SDKs template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/adding-a-new-spryk.html @@ -8,7 +8,7 @@ redirect_from: last_updated: Nov 10, 2022 related: - title: Spryk configuration reference - link: docs/sdk/dev/spryks/spryk-configuration-reference.html + link: docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.html --- To add a new Spryk, you need to add a YAML configuration file to the `config/spryk/spryks/` directory. diff --git a/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md b/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md index 033231f1a59..eae66659748 100644 --- a/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/checking-and-debugging-spryks.md @@ -1,6 +1,6 @@ --- title: Checking and debugging Spryks -description: Find out how you can check and debug Spryks +description: Learn how you can check, troubleshoot and debug Spryks nad how to avoid dependencies within your Spryker project. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/checking-and-debugging-spryks.html diff --git a/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md b/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md index 32294dc3057..469c2c3a8ce 100644 --- a/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md +++ b/docs/dg/dev/sdks/sdk/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.md @@ -1,6 +1,6 @@ --- title: Enabling and disabling the Code Sniffer for Spryks -description: Find out how you can enable or disable the Code Sniffer when running Spryks +description: Find out how you can enable or disable the Code Sniffer when running Spryks within your spryker projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/enabling-and-disabling-the-code-sniffer-for-spryks.html diff --git a/docs/dg/dev/sdks/sdk/spryks/fileresolver.md b/docs/dg/dev/sdks/sdk/spryks/fileresolver.md index 4c5d9320076..f1ac4c0ad49 100644 --- a/docs/dg/dev/sdks/sdk/spryks/fileresolver.md +++ b/docs/dg/dev/sdks/sdk/spryks/fileresolver.md @@ -1,6 +1,6 @@ --- title: FileResolver -description: Find out how you can enable or disable the Code Sniffer when running Spryks +description: Learn all about the FileResolver, a core part to file management within your Spryker Projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/fileresolver.html diff --git a/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md b/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md index a30a9a6b93f..a2f2e015be4 100644 --- a/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md +++ b/docs/dg/dev/sdks/sdk/spryks/spryk-configuration-reference.md @@ -1,6 +1,6 @@ --- title: Spryk configuration reference -description: Learn about the Spryk file structure and its elements +description: Learn about the Spryk file structure and its elements with this Spryks configuration reference for your projects. template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/spryk-configuration-reference.html diff --git a/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md b/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md index 722c25d0a4f..42220fd430b 100644 --- a/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md +++ b/docs/dg/dev/sdks/sdk/spryks/spryks-qa-automation.md @@ -1,6 +1,6 @@ --- title: Spryks QA automation -description: QA automation lets you run QA tools and unit tests required by Spryker +description: Learn all about QA automation lets you run QA tools and unit tests required by Spryker template: howto-guide-template redirect_from: - /docs/sdk/dev/spryks/qa-automation.html diff --git a/docs/dg/dev/sdks/sdk/task-set.md b/docs/dg/dev/sdks/sdk/task-set.md index 8874d41a65a..298734e1cb6 100644 --- a/docs/dg/dev/sdks/sdk/task-set.md +++ b/docs/dg/dev/sdks/sdk/task-set.md @@ -1,6 +1,6 @@ --- title: Task set -description: Task set is a group of related tasks that you can run with one command. +description: Learn about task sets and how a Task set is a group of related tasks that you can run with one command. template: concept-topic-template redirect_from: - /docs/sdk/dev/task-set.html diff --git a/docs/dg/dev/sdks/sdk/task.md b/docs/dg/dev/sdks/sdk/task.md index 8815b425043..71c16876c1f 100644 --- a/docs/dg/dev/sdks/sdk/task.md +++ b/docs/dg/dev/sdks/sdk/task.md @@ -1,6 +1,6 @@ --- title: Task -description: Task is the smallest unit for running commands in the Spryker SDK which serves as a command wrapper. +description: Learn about Tasks and how a Task is the smallest unit for running commands in the Spryker SDK which serves as a command wrapper. template: concept-topic-template redirect_from: - /docs/sdk/dev/task.html diff --git a/docs/dg/dev/sdks/sdk/telemetry.md b/docs/dg/dev/sdks/sdk/telemetry.md index e57a737943b..b5b6e7fc8a0 100644 --- a/docs/dg/dev/sdks/sdk/telemetry.md +++ b/docs/dg/dev/sdks/sdk/telemetry.md @@ -1,6 +1,6 @@ --- title: Telemetry -description: Learn about the Spryker SDK telemetry configuration. +description: Learn about the Spryker SDK telemetry configuration and how to implement custom events within your Spryker project. template: howto-guide-template redirect_from: - /docs/sdk/dev/telemetry.html diff --git a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md index ea8a43d23fd..e7c2ca03ac5 100644 --- a/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md +++ b/docs/dg/dev/sdks/sdk/troubleshooting/spryker-sdk-command-not-found.md @@ -1,6 +1,6 @@ --- title: spryker-sdk command not found -description: Troubleshooting for the Spryker SDK document. +description: Learn how to Troubleshooting and resolve for the Spryker SDK command not found within your spryker projects. template: concept-topic-template redirect_from: - /docs/sdk/dev/troubleshooting/spryker-sdk-command-not-found.html diff --git a/docs/dg/dev/sdks/sdk/value-resolvers.md b/docs/dg/dev/sdks/sdk/value-resolvers.md index cbe759204ce..7c451b6ce2e 100644 --- a/docs/dg/dev/sdks/sdk/value-resolvers.md +++ b/docs/dg/dev/sdks/sdk/value-resolvers.md @@ -1,6 +1,6 @@ --- title: Value resolvers -description: Spryker SDK has several value resolvers described in this document. +description: Learn about Spryker SDK and its several value resolvers described in this document for your spryker projects. template: concept-topic-template redirect_from: - /docs/sdk/dev/value-resolvers.html diff --git a/docs/dg/dev/sdks/sdk/vcs-connector.md b/docs/dg/dev/sdks/sdk/vcs-connector.md index 938de0884b6..2cf388c879a 100644 --- a/docs/dg/dev/sdks/sdk/vcs-connector.md +++ b/docs/dg/dev/sdks/sdk/vcs-connector.md @@ -1,6 +1,6 @@ --- title: VCS connector -description: The VCS connector feature for the Spryker SDK. +description: A quick guide to learn everyting you need to know about the VCS connector feature for the Spryker SDK. template: concept-topic-template redirect_from: - /docs/sdk/dev/vcs.html diff --git a/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md b/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md index ac692374c4a..4c9881c0ba6 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md +++ b/docs/dg/dev/sdks/the-docker-sdk/choosing-a-mount-mode.md @@ -1,6 +1,6 @@ --- title: Choosing a mount mode -description: Learn about supported mount modes and how to choose one. +description: Learn about supported mount modes and how to choose one depending of your operating system for your Spryker Project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/choosing-a-mount-mode diff --git a/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md b/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md index ab7ffa6e48c..cf52d4f1550 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md +++ b/docs/dg/dev/sdks/the-docker-sdk/configure-a-mount-mode.md @@ -1,6 +1,6 @@ --- title: Configure a mount mode -description: Learn how to configure a mount mode. +description: Learn about supported mount modes and how to configure one depending of your operating system for your Spryker Project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-a-mount-mode diff --git a/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md b/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md index 5247e2276b0..766d19cee9b 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md +++ b/docs/dg/dev/sdks/the-docker-sdk/configure-access-to-private-repositories.md @@ -1,6 +1,6 @@ --- title: Configure access to private repositories -description: Configure your local environment to access private repositories. +description: Learn how to configure your local environment to access private repositories for your Spryker project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-access-to-private-repositories diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md index c46f86716a3..7a716ac8c87 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file-inheritance-common-use-cases.md @@ -1,6 +1,6 @@ --- title: "Deploy file inheritance: common use cases" -description: Examples of using deploy file inheritance +description: Learn about common use cases for deploy file inheritance and how you can enhance your Spryker projects. template: concept-topic-template last_updated: Nov 21, 2023 related: diff --git a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md index 0300d1e951f..fa6ac51119a 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md +++ b/docs/dg/dev/sdks/the-docker-sdk/deploy-file/deploy-file.md @@ -1,6 +1,6 @@ --- title: Deploy file -description: Overview of the deploy file +description: Learn about the Spryker Deploy yaml file and how it works to deploy your Spryker environment. template: concept-topic-template last_updated: Nov 21, 2023 related: diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md b/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md index 5bf14361a59..6e44a77f270 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.md @@ -1,5 +1,6 @@ --- title: Docker environment infrastructure +description: Learn all about the infrastructure of Spryker in a Docker environment for your Spryker baed projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-environment-infrastructure diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md index d9916e12a35..af94582a188 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-configuration-reference.md @@ -1,6 +1,6 @@ --- title: Docker SDK configuration reference -description: Instructions for the most common configuration cases of the Docker SDK. +description: A guide with instructions for the most common configuration cases of the Docker SDK for Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-sdk-configuration-reference diff --git a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md index 67e1e9883c3..cbe5f8dbbfa 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md +++ b/docs/dg/dev/sdks/the-docker-sdk/docker-sdk-quick-start-guide.md @@ -1,6 +1,6 @@ --- title: Docker SDK quick start guide -description: Get started with Spryker Docker SDK. +description: Get up and running quickly with this Quick start guide for Docker SDK for your Spryker projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/docker-sdk-quick-start-guide diff --git a/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md b/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md index 8234476ea51..840f314fc9d 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md +++ b/docs/dg/dev/sdks/the-docker-sdk/installation-recipes-of-deployment-pipelines.md @@ -1,6 +1,6 @@ --- title: Installation recipes of deployment pipelines -description: Installation recipe commands and file structure. +description: Learn all about the Spryker Installation recipes of your deployment pipelines for your spryker based projects. last_updated: Nov 29, 2022 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md b/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md index cfa8cfa03e2..4645af7983d 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md +++ b/docs/dg/dev/sdks/the-docker-sdk/reset-docker-environments.md @@ -1,6 +1,6 @@ --- title: Reset Docker environments -description: Learn how to restart your Spryker in Docker from scratch. +description: Learn how to restart and reset your docker environments to start from scratch for your Spryker projects. last_updated: Jun 18, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/howto-reset-a-docker-environment diff --git a/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md index 94a5fab4bc8..7ca9efbd34f 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/running-commands-with-the-docker-sdk.md @@ -1,6 +1,6 @@ --- title: Running commands with the Docker SDK -description: How to use Docker SDK command line interface. +description: Learn how to use Docker SDK command line interface to run commands for your Spryker based project. last_updated: Jan 16, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md index d4092b24502..9774e3942c5 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/running-tests-with-the-docker-sdk.md @@ -1,6 +1,6 @@ --- title: Running tests with the Docker SDK -description: Learn how to run tests with the Docker SDK. +description: Learn how you can run tests in different ways with the Docker SDK for your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/running-tests-with-the-docker-sdk diff --git a/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md b/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md index 708dc07eff6..5c3f9f45b4a 100644 --- a/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md +++ b/docs/dg/dev/sdks/the-docker-sdk/update-the-docker-sdk.md @@ -1,5 +1,6 @@ --- title: Update the Docker SDK +description: Learn how you can update the Docker SDK to a newer version depending on the installation of your Spryker instance. last_updated: Jun 1, 2024 template: howto-guide-template From c6cd216fc2bfe676ea3812598a5b60b0f1327690 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Dec 2024 11:34:54 +0200 Subject: [PATCH 132/199] sidebar --- _data/sidebars/pbc_all_sidebar.yml | 39 ++++++----- .../202410.0/install-the-payments-feature.md | 17 ++--- ....md => define-return-urls-for-payments.md} | 2 +- ...d-the-stripe-payment-page-as-an-iframe.md} | 30 ++------- .../hosted-payment-page.md | 67 ------------------- ...tripe-checkout-as-a-hosted-payment-page.md | 51 ++++++++++++++ ...oms.md => oms-configuration-for-stripe.md} | 17 +---- .../processing-refunds-with-stripe.md | 21 ++++++ .../project-guidelines-for-stripe.md | 0 .../project-guidelines-for-stripe/refunds.md | 37 ---------- .../sending-additional-data-to-stripe.md | 19 +----- ...pe-checkout-with-third-party-frontends.md} | 34 +++------- ...s-payment-flow-in-headless-applications.md | 2 +- 13 files changed, 122 insertions(+), 214 deletions(-) rename docs/pbc/all/payment-service-provider/202404.0/base-shop/{change-default-return-urls.md => define-return-urls-for-payments.md} (94%) rename docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/{iframe.md => embed-the-stripe-payment-page-as-an-iframe.md} (58%) delete mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md rename docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/{oms.md => oms-configuration-for-stripe.md} (67%) create mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md rename docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/{ => project-guidelines-for-stripe}/project-guidelines-for-stripe.md (100%) delete mode 100644 docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md rename docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/{headless.md => stripe-checkout-with-third-party-frontends.md} (84%) diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index d3f31094e83..a141142d2a0 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2303,20 +2303,12 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/payments-feature-overview.html - title: Install and upgrade nested: - - title: Install features - nested: - - title: Payments - url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/install-the-payments-feature.html - - - title: Install Glue APIs - nested: - - title: Payments - url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/install-the-payments-glue-api.html - - - title: Upgrade modules - nested: - - title: Payment - url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/upgrade-the-payment-module.html + - title: Install the Payments feature + url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/install-the-payments-feature.html + - title: Install the Payments Glue API + url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/install-the-payments-glue-api.html + - title: Upgrade the Payment module + url: /docs/pbc/all/payment-service-provider/base-shop/install-and-upgrade/upgrade-the-payment-module.html - title: Import and export data url: /docs/pbc/all/payment-service-provider/base-shop/import-and-export-data/payment-service-provider-data-import-and-export.html @@ -2334,6 +2326,8 @@ entries: - title: View payment methods url: /docs/pbc/all/payment-service-provider/base-shop/manage-in-the-back-office/view-payment-methods.html + - title: Define return URLs for payments + url: /docs/pbc/all/payment-service-provider/base-shop/define-return-urls-for-payments.html - title: Debug payment integrations locally url: /docs/pbc/all/payment-service-provider/base-shop/debug-payment-integrations-locally.html - title: Hydrate payment methods for an order @@ -2433,7 +2427,7 @@ entries: - title: PayOne PayPal Express payment flow in headless applications url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.html - title: Payone PayPal payment flow - url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-payment-flow.html - title: Manual integration url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/payone/manual-integration/payone-manual-integration.html @@ -2608,6 +2602,21 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.html - title: Disconnect url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/disconnect-stripe.html + - title: Project guidelines + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.html + nested: + - title: Embed the Stripe payment page as an iframe + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: Implement Stripe checkout as a hosted payment page + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.html + - title: OMS configuration for Stripe + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Processing refunds with Stripe + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Sending additional data to Stripe + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html + - title: Stripe checkout with third-party frontends + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html - title: Unzer url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/unzer/unzer.html diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 3690ce9dde9..1f0c492ed62 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -439,7 +439,7 @@ Make sure that the configured data has been added to the `spy_payment_method`, ` ### 4) Add translations -1. Append glossary according to your configuration: +1. Append the glossary according to your configuration: ```csv payment_app_widget.validation.quote_is_empty,Quote is empty.,en_US @@ -458,7 +458,7 @@ console data:import glossary ### 5) Set up behavior -1. Configure the data import to use your data on the project level. +1. Configure data import to use your data on the project level. **src/Pyz/Zed/PaymentDataImport/PaymentDataImportConfig** @@ -632,7 +632,7 @@ class RouterDependencyProvider extends SprykerRouterDependencyProvider } ``` -6. Enable the payment method clean up for cart operations. +6. Enable the payment method cleanup for cart operations. | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | |------------------------------------------|----------------------------------------------------------------------------|---------------|------------------------------------------------------------| @@ -681,8 +681,6 @@ Use the `PaymentDataImport` module instead of the following: ### 7) Set up widgets -Set up widgets as follows: - 1. Register the following plugins to enable widgets: | PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | @@ -728,10 +726,8 @@ Verify that the following widgets have been registered by adding the respective {% endinfo_block %} -3. Customize the address solution according to your needs. -When the express checkout flow is enabled, the customer address does not always include all address fields used in Spryker, for example, the salutation field. - -For this purpose, the 'n/a' placeholder is used. By default, it is not shown. +3. With the express checkout flow, you might want to skip some address fields that are part of the regular checkout, for example–the salutation field. +Customize the address step according to your needs, hiding fields using the 'n/a' placeholder. **ShopUi/Theme/default/components/molecules/display-address/display-address.twig** @@ -744,7 +740,6 @@ For this purpose, the 'n/a' placeholder is used. By default, it is not shown. {% info_block warningBox "Verification" %} -Make sure that: -* The address salutation is displayed correctly on the summary page. +Make sure that on the order summary page, the address fields you've configured to hide aren't displayed. {% endinfo_block %} diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/define-return-urls-for-payments.md similarity index 94% rename from docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md rename to docs/pbc/all/payment-service-provider/202404.0/base-shop/define-return-urls-for-payments.md index 642f563d95e..a071cfcdd66 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/change-default-return-urls.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/define-return-urls-for-payments.md @@ -1,5 +1,5 @@ --- -title: Change the default return URLs for payments +title: Define return URLs for payments description: Learn how to change the default return URLs to be used by third-party payment service providers last_updated: Nov. 27, 2024 template: howto-guide-template diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md similarity index 58% rename from docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md rename to docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md index 7644c41664d..bd1aaf34ac3 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md @@ -1,24 +1,19 @@ --- -title: Project guidelines for Stripe - Embed the Stripe payment page as iframe +title: Embed the Stripe payment page as an iframe description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html --- -## Embed the Stripe payment page using iframe - By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: 1. Create or update `src/Pyz/Zed/Payment/PaymentConfig.php` with the following configuration: + ```php namespace Pyz\Zed\Payment; @@ -32,15 +27,15 @@ class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig } ``` -In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method, the value of the parameter is base64-encoded. +In this setup, the redirect URL is added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. Example: `/payment?url=base64-encoded-URL-for-iframe-src`. 2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: -* Use the following minimal page regardless of the frontend technology used. -* If your Storefront is based on a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. -* If your Storefront is based on Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). +* Use the following minimal page, which can be set up with any frontend technology. +* With a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. +* With Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). ```php @@ -56,7 +51,7 @@ Example: `/payment?url=base64-encoded-URL-for-iframe-src`. ``` -### Create an Yves page for rendering the Stripe payment page +## Create an Yves page for rendering the Stripe payment page 1. Create a controller to render the payment page: @@ -134,14 +129,3 @@ class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin ``` 4. In `src/Pyz/Yves/Router/RouterDependencyProvider.php`, add a router plugin to `RouterDependencyProvider::getRouteProvider()`. - - -### Further reading - -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md deleted file mode 100644 index dcda6f4862a..00000000000 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Project guidelines for Stripe - Hosted Payment Page -description: Learn how to implement Stripe using ACP -last_updated: Nov 8, 2024 -template: howto-guide-template -related: - - title: Stripe - link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - ---- - -### Implementing Stripe checkout as a hosted payment page - -If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project level, do the following: - -1. Make sure that a form molecule uses the following code for the payment selection choices: - -```twig -{% raw %} -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... - {% embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.name], - ... - } - {% endembed %} -{% endfor %} -{% endraw %} -``` - -2. If you want to change the default payment provider or method names, do the following: - 1. Make sure the names are translated in your payment step template: - - ```twig - {% raw %} - {% for name, choices in data.form.paymentSelection.vars.choices %} - ... -
    {{ name | trans }}
    - {% endfor %} - {% endraw %} - ``` - - 2. Add translations to your glossary data import file: - - ``` - Stripe,Pay Online with Stripe,en_US - ``` - - 3. Run the data import command for the glossary: - - ```bash - console data:import glossary - ``` - -### Further reading - -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md new file mode 100644 index 00000000000..ddccb4be8a5 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md @@ -0,0 +1,51 @@ +--- +title: Implement Stripe checkout as a hosted payment page +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +Implementing Stripe checkout as a hosted payment page is usually needed if `@CheckoutPage/views/payment/payment.twig` is overwritten on the project level. To implement Stripe checkout as a hosted payment page, follow the steps: + +1. Make sure that a form molecule uses the following code for the payment selection choices: + +```twig +{% raw %} +{% for name, choices in data.form.paymentSelection.vars.choices %} + ... + {% embed molecule('form') with { + data: { + form: data.form[data.form.paymentSelection[key].vars.name], + ... + } + {% endembed %} +{% endfor %} +{% endraw %} +``` + +2. If you want to change the default payment provider or method names, do the following: + 1. Make sure the names are translated in your payment step template: + + ```twig + {% raw %} + {% for name, choices in data.form.paymentSelection.vars.choices %} + ... +
    {{ name | trans }}
    + {% endfor %} + {% endraw %} + ``` + + 2. Add translations to your glossary data import file: + + ``` + Stripe,Pay Online with Stripe,en_US + ``` + + 3. Run the data import command for the glossary: + + ```bash + console data:import glossary + ``` diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md similarity index 67% rename from docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md rename to docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md index 8765e97631f..b1b53b29867 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md @@ -1,19 +1,13 @@ --- -title: Project guidelines for Stripe - OMS +title: OMS configuration for Stripe description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - --- -## OMS configuration The complete default payment OMS configuration is available at `vendor/spryker/sales-payment/config/Zed/Oms/ForeignPaymentStateMachine01.xml`. @@ -88,12 +82,3 @@ By default, the timeout for the payment authorization action is set to seven day To decrease or increase timeouts or change the states, update `config/Zed/oms/Subprocess/PaymentAuthorization01.xml`. For more information on the integration of ACP payment methods with OMS configuration, see [Integrate ACP payment apps with Spryker OMS configuration](/docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html). - -### Further reading - -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md new file mode 100644 index 00000000000..c413e9b6d7e --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md @@ -0,0 +1,21 @@ +--- +title: Processing refunds with Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. + +During this period, Stripe attempts to process the request, which results in success or failure: +* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. +* Failure: the items transition to the `payment refund failed` state. + +These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. + +If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. + +In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md similarity index 100% rename from docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md rename to docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md deleted file mode 100644 index 2ef7e9a8cac..00000000000 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refunds.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Project guidelines for Stripe - Refunds -description: Learn how to implement Stripe using ACP -last_updated: Nov 8, 2024 -template: howto-guide-template -related: - - title: Stripe - link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - ---- - -## Processing refunds - -In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. - -During this period, Stripe attempts to process the request, which results in success or failure: -* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. -* Failure: the items transition to the `payment refund failed` state. - -These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. - -If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. - -In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. - -### Further reading - -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md index 51c7c662d8e..ffb612ad5fb 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md @@ -1,20 +1,14 @@ --- -title: Project guidelines for Stripe - Additional Data for Stripe payment intent +title: Sending additional data to Stripe description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html --- -## Sending additional data to Stripe - Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. ```text @@ -66,14 +60,3 @@ The metadata sent using the field must meet the following criteria: When you pass metadata to Stripe, it's stored in the payment object and can be retrieved later. For example, this way you can pass an external ID to Stripe. When a `PaymentIntent` is created on the Stripe side, you can see your passed `additionalPaymentData` in the Stripe Dashboard. - -### Further reading - -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md similarity index 84% rename from docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md rename to docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md index 1047552370e..624dcadb20f 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md @@ -1,30 +1,23 @@ --- -title: Project guidelines for Stripe - Headless implementation +title: Stripe checkout with third-party frontends description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - --- -## Implementing Stripe for checkout in a headless application - -Use this approach for headless applications with third-party frontends. +This document describes the approaches to implementing Stripe checkout with third-party frontends. -### Install modules +## Install modules Install or upgrade the modules to the specified or later versions: - `spryker/kernel-app:1.2.0` - `spryker/payment:5.24.0` - `spryker/payments-rest-api:1.3.0` -### Pre-order payment flow +## Pre-order payment flow When Stripe is integrated into a headless application, orders are processed using a pre-order payment flow: @@ -57,13 +50,13 @@ When Stripe is integrated into a headless application, orders are processed usin All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. -### Example of the headless checkout with Stripe +## Example of the headless checkout with Stripe The Payment selection in this example will be used on the Summary page. The following examples show how to implement the Stripe Payment App in a headless application. Before the customer is redirected to the summary page, all required data is collected: customer data, addresses, and selected shipment method. When the customer goes to the summary page, to get the data required for rendering the Stripe Elements, the application needs to call the `InitializePreOrderPayment` Glue API endpoint. -#### Pre-order payment initialization +### Pre-order payment initialization ```JS @@ -126,7 +119,7 @@ After a `PaymentIntent` is created using the Stripe API, a payment is created in } ``` -#### Rendering the Stripe Elements on the summary page +### Rendering the Stripe Elements on the summary page The `preOrderPaymentData` from the previous example is used to render Stripe Elements on the summary page: @@ -169,7 +162,7 @@ This sets up Stripe Elements on the summary page of your application. The custom When the customer submits the order, the payment data is sent to Stripe. Stripe may redirect them to another page, for example — PayPal, or redirect the customer to the specified `return_url`. The `return_url` must make another Glue API request to persist the order in the Back Office. -#### Persisting orders in the Back Office through the return URL +### Persisting orders in the Back Office through the return URL Because an order can be persisted in the Back Office only after a successful payment, the application needs to handle the `return_url` and make a request to the Glue API to persist the order. @@ -243,7 +236,7 @@ After this, the customer should be redirected to the success page or in case of -#### Cancelling payments through Glue API +### Cancelling payments through Glue API The following request cancels a PaymentIntent on the Stripe side and shows a `canceled` PaymentIntent in the Stripe Dashboard. You can implement this in your application to enable the customer to cancel the payment process. @@ -293,12 +286,3 @@ async cancelPreOrderPayment() { ``` - -### Further reading - -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md index 44a3bae9189..74703add994 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md @@ -63,7 +63,7 @@ The payment methods returned by the `/checkout-data?include=payment-methods` end When the customer clicks the **Pay with PayPal Express** button, the `InitializePreOrderPayment` Glue API endpoint is called to initialize the payment. -For more details on payment methods in a headless chechout, see [Payment Method Strategies](https://documentation.spryker.com/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html). +For more details on payment methods in a headless chechout, see [Payment Method Strategies](/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.html). #### Preorder payment initialization From 6ed95d42cb7468c2d4f0cf430bc9e9ac257237d2 Mon Sep 17 00:00:00 2001 From: AntonKhabiuk Date: Tue, 17 Dec 2024 11:43:20 +0200 Subject: [PATCH 133/199] CC-34932 Fixes after CR --- .../install-the-merchant-promotions-and-discounts-feature.md | 4 ++-- .../install-the-merchant-promotions-and-discounts-feature.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md index 4acc9f27195..c4b5daa5e41 100644 --- a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-merchant-promotions-and-discounts-feature.md @@ -78,8 +78,8 @@ class DiscountDependencyProvider extends SprykerDiscountDependencyProvider {% info_block warningBox "Verification" %} -1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-refernce` field. -2. Add a product sold by the defined merchant to the cart. +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `merchant-reference` field. +2. Add a product sold by the merchant defined in the newly created discount to the cart. 3. Verify that the discount is applied to the cart. {% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md index 00b213b612f..fa66fce8949 100644 --- a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-merchant-promotions-and-discounts-feature.md @@ -5,4 +5,4 @@ last_updated: Dec 16, 2024 template: feature-integration-guide-template --- -{% include pbc/all/install-features/{{page.version}}/install-the-merchant-promotions-and-discounts-feature.md %} +{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-merchant-promotions-and-discounts-feature.md %} From a1679630bd7ca906c96de165043c4a80a7d7ad55 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Tue, 17 Dec 2024 10:27:40 +0000 Subject: [PATCH 134/199] DEV Integrate SEO Update Changed the meta description and fixed some broken links for articles within the integrate and configure section of Spryker Docs --- .../Integrate-profiler-module.md | 2 +- .../configure-database-connections.md | 3 ++- .../configure-queue-worker-signal-handling.md | 2 +- .../integrate-and-configure/configure-services.md | 2 +- docs/dg/dev/integrate-and-configure/forcing-https.md | 2 +- .../integrate-and-configure.md | 2 +- .../integrate-authorization-enabler.md | 2 +- .../integrate-cms-block-widgets.md | 2 +- .../integrate-custom-location-for-static-assets.md | 1 + .../integrate-development-tools.md | 2 +- .../integrate-formatter.md | 10 +++++----- .../integrate-scss-linter.md | 12 ++++++------ .../integrate-ts-linter.md | 12 ++++++------ .../integrate-web-profiler-for-zed.md | 10 +++++----- .../integrate-web-profiler-widget-for-yves.md | 10 +++++----- .../integrate-elastic-computing.md | 2 +- .../integrate-multi-database-logic.md | 2 +- .../integrate-multi-queue-publish-structure.md | 2 +- .../integrate-propel-clean-command.md | 2 +- .../integrate-separate-endpoint-bootstraps.md | 1 + .../remove-the-support-of-ie11.md | 2 +- ...itch-to-a-case-sensitive-file-system-on-mac-os.md | 2 +- .../switch-to-arm-architecture-m1-chip.md | 2 +- .../twig-and-twigextension.md | 4 ++-- .../set-up-multiple-stores.md | 2 +- .../dev/miscellaneous-guides/tutorial-hello-world.md | 2 +- .../using-database-transaction.md | 2 +- 27 files changed, 51 insertions(+), 48 deletions(-) diff --git a/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md b/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md index 0745bd4a5af..97a8bfdd528 100644 --- a/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md +++ b/docs/dg/dev/integrate-and-configure/Integrate-profiler-module.md @@ -1,6 +1,6 @@ --- title: Integrate profiler module -description: Learn how to integrate profiler module +description: Learn the prerequisites and how to enable and integrate profiler module in to a Spryker based project. last_updated: March 22, 2023 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/integrate-and-configure/configure-database-connections.md b/docs/dg/dev/integrate-and-configure/configure-database-connections.md index ff41cf771f3..90e5d40fac3 100644 --- a/docs/dg/dev/integrate-and-configure/configure-database-connections.md +++ b/docs/dg/dev/integrate-and-configure/configure-database-connections.md @@ -1,5 +1,6 @@ --- title: Configure database connections +description: Learn how you can configure a single or multiple database connections within your Spryker based project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/ht-setup-database-connections @@ -8,7 +9,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/howtos/howto-set-up-database-connections.html related: - title: Database access credentials - link: docs/scos/dev/set-up-spryker-locally/database-access-credentials.html + link: docs/dg/dev/set-up-spryker-locally/database-access-credentials.html --- Spryker provides flexible database connection configuration. diff --git a/docs/dg/dev/integrate-and-configure/configure-queue-worker-signal-handling.md b/docs/dg/dev/integrate-and-configure/configure-queue-worker-signal-handling.md index 885fb1fcde4..979ba2d9719 100644 --- a/docs/dg/dev/integrate-and-configure/configure-queue-worker-signal-handling.md +++ b/docs/dg/dev/integrate-and-configure/configure-queue-worker-signal-handling.md @@ -1,6 +1,6 @@ --- title: Configure queue worker signal handling -description: Configure a graceful shutdown of queue worker. +description: Learn how you can configure a graceful shutdown of queue worker for your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/queue-worker-signal-handling diff --git a/docs/dg/dev/integrate-and-configure/configure-services.md b/docs/dg/dev/integrate-and-configure/configure-services.md index c246e5c96eb..b42f9169f30 100644 --- a/docs/dg/dev/integrate-and-configure/configure-services.md +++ b/docs/dg/dev/integrate-and-configure/configure-services.md @@ -1,6 +1,6 @@ --- title: Configure services -description: Learn how to configure services. +description: Learn how to set up and configure services that come out of the box of your Spryker shop. last_updated: May 8, 2024 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/configuring-services diff --git a/docs/dg/dev/integrate-and-configure/forcing-https.md b/docs/dg/dev/integrate-and-configure/forcing-https.md index dd6550a3ec6..e5260df24c0 100644 --- a/docs/dg/dev/integrate-and-configure/forcing-https.md +++ b/docs/dg/dev/integrate-and-configure/forcing-https.md @@ -1,6 +1,6 @@ --- title: Forcing HTTPS -description: Use the guide to configure HTTPs and HTTP for your pages. +description: Learn with this guide to configure HTTPs and HTTP for your pages within your Spryker project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/ht-force-https diff --git a/docs/dg/dev/integrate-and-configure/integrate-and-configure.md b/docs/dg/dev/integrate-and-configure/integrate-and-configure.md index e94f2086315..690628121dd 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-and-configure.md +++ b/docs/dg/dev/integrate-and-configure/integrate-and-configure.md @@ -1,6 +1,6 @@ --- title: Integrate and configure -description: guides for integrating technical enhancement tools with Spryker SCOS +description: Learn with these guides for integrating technical enhancement tools with Spryker Spryker Cloud Commerce OS. template: concept-topic-template redirect_from: - /docs/scos/dev/technical-enhancement-integration-guides/technical-enhancement-integration-guides.html diff --git a/docs/dg/dev/integrate-and-configure/integrate-authorization-enabler.md b/docs/dg/dev/integrate-and-configure/integrate-authorization-enabler.md index ede3f8f0d4a..ce50165e140 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-authorization-enabler.md +++ b/docs/dg/dev/integrate-and-configure/integrate-authorization-enabler.md @@ -1,6 +1,6 @@ --- title: Integrate Authorization Enabler -description: Learn how to enable the Authorization Enabler +description: Learn how to enable and integrate the Authorization Enabler for your Spryker based projects. last_updated: Sep 2, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/authorization-enabler-integration diff --git a/docs/dg/dev/integrate-and-configure/integrate-cms-block-widgets.md b/docs/dg/dev/integrate-and-configure/integrate-cms-block-widgets.md index 4d56de6ea0a..b0dcd7eb477 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-cms-block-widgets.md +++ b/docs/dg/dev/integrate-and-configure/integrate-cms-block-widgets.md @@ -1,6 +1,6 @@ --- title: Integrate CMS block widgets -description: Learn how to enable CMS block widget in a Spryker project. +description: Learn how you can enable and integrate Content Management System (CMS) block widgets in a Spryker based project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/enabling-cms-block-widget diff --git a/docs/dg/dev/integrate-and-configure/integrate-custom-location-for-static-assets.md b/docs/dg/dev/integrate-and-configure/integrate-custom-location-for-static-assets.md index c0cd658227d..745b3860882 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-custom-location-for-static-assets.md +++ b/docs/dg/dev/integrate-and-configure/integrate-custom-location-for-static-assets.md @@ -1,5 +1,6 @@ --- title: Integrate custom location for static assets +description: Learn how you can enable and integrate custom location for static assets within your Spryker based project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/custom-location-for-static-assets diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-development-tools.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-development-tools.md index d1796976ab8..80c1ab5603c 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-development-tools.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-development-tools.md @@ -1,6 +1,6 @@ --- title: Integrate development tools -description: guides for integrating technical enhancement tools with Spryker SCOS +description: Learn from these guides for integrating technical enhancement tools with Spryker Spryker Cloud Commerce OS. template: concept-topic-template redirect_from: - /docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-development-tools.html diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.md index ff64967fa44..d987e860aa3 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.md @@ -1,6 +1,6 @@ --- title: Integrate Formatter -description: Learn how to integrate Formatter into your project +description: Learn how to enable and integrate Formatter and their dependencies into your Spryker based project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/formatter-integration-guide @@ -10,13 +10,13 @@ redirect_from: - /docs/scos/dev/migration-and-integration/202108.0/development-tools/formatter-integration-guide.html related: - title: Integrating SCSS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-scss-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.html - title: Integrating TS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-ts-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.html - title: Integrating Web Profiler for Zed - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-for-zed.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html - title: Integrating Web Profiler Widget for Yves - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.html --- Follow the steps below to integrate [Formatter](/docs/scos/dev/sdk/development-tools/formatter.html) into your project. diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md index 85bfb87aa3a..459e8f49e24 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.md @@ -1,6 +1,6 @@ --- title: Integrate SCSS linter -description: Learn how to integrate the SCSS linter into your project +description: Learn how to enable and integrate the SCSS linter and its dependencies for your Spryker based project last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/scss-linter-integration-guide @@ -10,16 +10,16 @@ redirect_from: - /docs/scos/dev/migration-and-integration/202108.0/development-tools/scss-linter-integration-guide.html related: - title: Integrating Formatter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-formatter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.html - title: Integrating TS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-ts-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.html - title: Integrating Web Profiler for Zed - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-for-zed.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html - title: Integrating Web Profiler Widget for Yves - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.html --- -Follow the steps below to integrate the [SCSS linter ](/docs/scos/dev/sdk/development-tools/scss-linter.html)into your project. +Follow the steps below to integrate the [SCSS linter ](docs/dg/dev/sdks/sdk/development-tools/scss-linter.html)into your project. ## 1. Install the dependencies diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md index b3bf73bebd5..3bdae3b9a50 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.md @@ -1,6 +1,6 @@ --- title: Integrate TS linter -description: Learn how to integrate the SCSS linter into your project +description: Learn about the dependencies and how to enable and integrate the SCSS linter into your Spryker based project last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/ts-linter-integration-guide @@ -10,16 +10,16 @@ redirect_from: - /docs/scos/dev/migration-and-integration/202108.0/development-tools/ts-linter-integration-guide.html related: - title: Integrating Formatter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-formatter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.html - title: Integrating SCSS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-scss-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.html - title: Integrating Web Profiler for Zed - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-for-zed.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html - title: Integrating Web Profiler Widget for Yves - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.html --- -Follow the steps below to integrate [TS linter](/docs/scos/dev/sdk/development-tools/ts-linter.html) into your project. +Follow the steps below to integrate [TS linter](docs/dg/dev/sdks/sdk/development-tools/ts-linter.html) into your project. ## 1. Install the dependencies diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.md index 975b4e5ec1b..1d050661b41 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.md @@ -10,15 +10,15 @@ redirect_from: - /docs/scos/dev/migration-and-integration/202108.0/development-tools/web-profiler.html related: - title: Web Profiler Widget for Yves - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.htmlintegrating-web-profiler-widget-for-yves.html - title: Integrating Formatter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-formatter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.html - title: Integrating SCSS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-scss-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.html - title: Integrating TS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-ts-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.html - title: Integrating Web Profiler Widget for Yves - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-widget-for-yves.html + link: https://docs.spryker.com/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.html --- The _Web Profiler_ provides a toolbar for debugging and informational purposes. The toolbar is located at the bottom of a loaded page. diff --git a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.md b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.md index 4f26d6cdf23..2e43b7ba0db 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.md +++ b/docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-widget-for-yves.md @@ -10,15 +10,15 @@ redirect_from: - /docs/scos/dev/migration-and-integration/202108.0/development-tools/web-profiler-widget related: - title: Web Profiler for Zed - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-for-zed.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html - title: Integrating Formatter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-formatter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-formatter.html - title: Integrating SCSS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-scss-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-scss-linter.html - title: Integrating TS linter - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-ts-linter.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-ts-linter.html - title: Integrating Web Profiler for Zed - link: docs/scos/dev/technical-enhancement-integration-guides/integrating-development-tools/integrating-web-profiler-for-zed.html + link: docs/dg/dev/integrate-and-configure/integrate-development-tools/integrate-web-profiler-for-zed.html --- The _Web Profiler Widget_ provides a toolbar for debugging and for informational purposes. The toolbar is located at the bottom of a loaded page. diff --git a/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md b/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md index 1117f1f0e7c..4301fe6f6dd 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md +++ b/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.md @@ -1,6 +1,6 @@ --- title: Integrate elastic computing -description: Learn how to integrate elastic computing. +description: Learn how to integrate elastic computing including New Relic and other features for your Spryker based project. last_updated: Jan 23, 2023 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.md b/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.md index 31a587907ef..d915fba6ae9 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.md +++ b/docs/dg/dev/integrate-and-configure/integrate-multi-database-logic.md @@ -1,6 +1,6 @@ --- title: Integrate multi-database logic -description: Learn how to integrate multi-database logic +description: Learn how to switch from using a shared database to integrate multi-database logic within your Spryker projects. last_updated: June 2, 2022 template: howto-guide-template redirect_from: diff --git a/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md b/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md index ca4f833c1d0..8df903fc5f1 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md +++ b/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md @@ -1,6 +1,6 @@ --- title: Integrate multi-queue publish structure -description: The single event queue is replaced by multiple publish queues. +description: Learn how to integrate the Multi-queue publish structure to improve debugging and slow events in your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/multiple-publish-queue-structure diff --git a/docs/dg/dev/integrate-and-configure/integrate-propel-clean-command.md b/docs/dg/dev/integrate-and-configure/integrate-propel-clean-command.md index b69e09ff8ec..889ac088c06 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-propel-clean-command.md +++ b/docs/dg/dev/integrate-and-configure/integrate-propel-clean-command.md @@ -1,6 +1,6 @@ --- title: Integrate Propel clean command -description: Learn how to integrate the Propel clean command into your project. +description: Learn how to enable and integrate the Propel clean command into your Spryker based project. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/propel-clean-command diff --git a/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md b/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md index 6b38eadac7d..d725690306f 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md +++ b/docs/dg/dev/integrate-and-configure/integrate-separate-endpoint-bootstraps.md @@ -1,5 +1,6 @@ --- title: Integrate separate endpoint bootstraps +description: Learn how to enable and integrate sperate endpoint bootstraps into your Spryker based project. last_updated: Feb 8, 2022 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/separating-different-endpoint-bootstraps diff --git a/docs/dg/dev/integrate-and-configure/remove-the-support-of-ie11.md b/docs/dg/dev/integrate-and-configure/remove-the-support-of-ie11.md index b9a7cdbc3d6..eec9141166d 100644 --- a/docs/dg/dev/integrate-and-configure/remove-the-support-of-ie11.md +++ b/docs/dg/dev/integrate-and-configure/remove-the-support-of-ie11.md @@ -1,7 +1,7 @@ --- title: Remove the support of IE11 last_updated: Aug 31, 2022 -description: This document shows how to remove support of IE11 in your Spryker project. +description: This document shows how to remove the support of IE11 in your Spryker based project. template: concept-topic-template redirect_from: - /docs/scos/dev/front-end-development/migration-guide-remove-support-of-ie11.html diff --git a/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md b/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md index f7d998b3a3b..67ee26a8ae2 100644 --- a/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md +++ b/docs/dg/dev/integrate-and-configure/switch-to-a-case-sensitive-file-system-on-mac-os.md @@ -1,6 +1,6 @@ --- title: Switch to a case-sensitive file system on Mac OS -description: Use the guide to change the case-sensitive file system on Mac OS. +description: Use the guide to change the case-sensitive file system on Mac OS within your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/ht-case-sensitive-file-system-mac diff --git a/docs/dg/dev/integrate-and-configure/switch-to-arm-architecture-m1-chip.md b/docs/dg/dev/integrate-and-configure/switch-to-arm-architecture-m1-chip.md index e14cbd4cb55..23b259d0b07 100644 --- a/docs/dg/dev/integrate-and-configure/switch-to-arm-architecture-m1-chip.md +++ b/docs/dg/dev/integrate-and-configure/switch-to-arm-architecture-m1-chip.md @@ -1,6 +1,6 @@ --- title: Switch to ARM architecture (M1 chip) -description: Learn how to switch Docker based projects to ARM architecture. +description: Learn how to switch Docker based projects to ARM architecture for M Chips within your Spryker based projects. template: howto-guide-template redirect_from: - /docs/scos/dev/technical-enhancement-integration-guides/switch-to-arm-architecture-m1-chip.html diff --git a/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md b/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md index 4e25bcb6c4c..a5146bc19e4 100644 --- a/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md +++ b/docs/dg/dev/integrate-and-configure/twig-and-twigextension.md @@ -18,11 +18,11 @@ redirect_from: - /docs/scos/dev/technical-enhancement-integration-guides/twig-and-twigextension.html related: - title: Cronjob scheduling - link: docs/scos/dev/sdk/cronjob-scheduling.html + link: docs/dg/dev/backend-development/cronjobs/cronjobs.html - title: Data import link: docs/dg/dev/data-import/page.version/data-import.html - title: Development virtual machine, docker containers & console - link: docs/scos/dev/sdk/development-virtual-machine-docker-containers-and-console.html + link: docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.html --- ## Twig diff --git a/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.md b/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.md index ed18df0a426..569cbea79d8 100644 --- a/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.md +++ b/docs/dg/dev/internationalization-and-multi-store/set-up-multiple-stores.md @@ -1,6 +1,6 @@ --- title: Set up multiple stores -description: Learn how to set up multiple stores for your project. +description: Learn how to enable and set up and create multiple stores for multiple countries or regions for your Spryker Based project. last_updated: Dec 22, 2022 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/howto-set-up-multiple-stores diff --git a/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md b/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md index 3a2eaf13b51..bc1f3d301a1 100644 --- a/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md +++ b/docs/dg/dev/miscellaneous-guides/tutorial-hello-world.md @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/tutorials-and-howtos/introduction-tutorials/tutorial-hello-world-spryker-commerce-os.html related: - title: Module configuration convention - link: docs/scos/dev/guidelines/module-configuration-convention.html + link: docs/dg/dev/guidelines/module-configuration-convention.html --- {% info_block infoBox %} diff --git a/docs/dg/dev/miscellaneous-guides/using-database-transaction.md b/docs/dg/dev/miscellaneous-guides/using-database-transaction.md index 6ee6ce8d4c7..95a8de94eb2 100644 --- a/docs/dg/dev/miscellaneous-guides/using-database-transaction.md +++ b/docs/dg/dev/miscellaneous-guides/using-database-transaction.md @@ -1,6 +1,6 @@ --- title: Using database transactions -description: Use the guide to understand how to handle database transactions. +description: Use the guide to understand how to handle database transactions within your Spryker based projects. last_updated: Jun 16, 2021 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/t-database-transactions From ee6a7c2fe1d966f1cf77ff02cba24e0e519157b0 Mon Sep 17 00:00:00 2001 From: ilyakubanov Date: Tue, 17 Dec 2024 11:49:12 +0100 Subject: [PATCH 135/199] CC-34976 Product offer discount IG --- ...-offer-promotions-and-discounts-feature.md | 85 +++++++++++++++++++ ...-offer-promotions-and-discounts-feature.md | 8 ++ 2 files changed, 93 insertions(+) create mode 100644 _includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md create mode 100644 docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md diff --git a/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md new file mode 100644 index 00000000000..b40c45f4562 --- /dev/null +++ b/_includes/pbc/all/install-features/202505.0/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md @@ -0,0 +1,85 @@ +This document describes how to install the Marketplace Product Offer + Promotions & Discounts feature. + +## Install feature core + +Follow the steps below to install the feature core. + +### Prerequisites + +Install the required features: + +| NAME | VERSION | INSTALLATION GUIDE | +|---------------------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Promotions & Discounts | {{page.version}} | [Install the Promotions & Discounts feature](/docs/pbc/all/discount-management/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-promotions-and-discounts-feature.html) | +| Marketplace Product Offer | {{page.version}} | [Install the Marketplace Product Offer feature](/docs/pbc/all/offer-management/{{page.version}}/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-feature.html) | +| Spryker Core | {{page.version}} | [Install the Spryker Core feature](/docs/pbc/all/miscellaneous/{{page.version}}/install-and-upgrade/install-features/install-the-spryker-core-feature.html) | + +### 1) Install the required modules + +Install the required modules using Composer: + +```bash +composer require spryker/product-offer-discount-connector:"^1.0.0" --update-with-dependencies +``` + +{% info_block warningBox "Verification" %} + +Make sure the following modules have been installed: + +| MODULE | EXPECTED DIRECTORY | +|-------------------------------|-----------------------------------------| +| ProductOfferDiscountConnector | vendor/product-offer-discount-connector | + +{% endinfo_block %} + +### 2) Set up behavior + +Set up the following behaviors: + +| PLUGIN | SPECIFICATION | PREREQUISITES | NAMESPACE | +|------------------------------------------------------|--------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------| +| ProductOfferReferenceDecisionRulePlugin | Checks if the item's product offer reference matches the discount's condition. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | +| ProductOfferReferenceDiscountableItemCollectorPlugin | Collects discountable items from the given quote by items' product offer references. | | Spryker\Zed\ProductOfferDiscountConnector\Communication\Plugin\Discount | + +**src/Pyz/Zed/Discount/DiscountDependencyProvider.php** + +```php + + */ + protected function getDecisionRulePlugins(): array + { + return array_merge(parent::getDecisionRulePlugins(), [ + new ProductOfferReferenceDecisionRulePlugin(), + ]); + } + + /** + * @return list<\Spryker\Zed\DiscountExtension\Dependency\Plugin\DiscountableItemCollectorPluginInterface> + */ + protected function getCollectorPlugins(): array + { + return array_merge(parent::getCollectorPlugins(), [ + new ProductOfferReferenceDiscountableItemCollectorPlugin(), + ]); + } +} +``` + +{% info_block warningBox "Verification" %} + +1. [Create a discount](/docs/pbc/all/discount-management/{{site.version}}/base-shop/manage-in-the-back-office/create-discounts.html) and define its condition as a query string with a `product-offer` field. +2. Add a product offer defined in the newly created discount to the cart. +3. Verify that the discount is applied to the cart. + +{% endinfo_block %} diff --git a/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md new file mode 100644 index 00000000000..c4ebc4630d7 --- /dev/null +++ b/docs/pbc/all/discount-management/202505.0/marketplace/install-and-upgrade/install-features/install-the-marketplace-product-offer-promotions-and-discounts-feature.md @@ -0,0 +1,8 @@ +--- +title: Install the Marketplace Product Offer + Promotions & Discounts feature +description: Learn how to integrate the Marketplace Product Offer + Promotions & Discounts feature into a Spryker project. +last_updated: Dec 17, 2024 +template: feature-integration-guide-template +--- + +{% include pbc/all/install-features/{{page.version}}/marketplace/install-the-marketplace-product-offer-promotions-and-discounts-feature.md %} From 813592e5976cb541a47a472674ae684a5b3a6f4d Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Dec 2024 13:14:54 +0200 Subject: [PATCH 136/199] Update pbc_all_sidebar.yml --- _data/sidebars/pbc_all_sidebar.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index a141142d2a0..562fc5aee0d 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2328,6 +2328,8 @@ entries: - title: Define return URLs for payments url: /docs/pbc/all/payment-service-provider/base-shop/define-return-urls-for-payments.html + include_versions: + - "202410.0" - title: Debug payment integrations locally url: /docs/pbc/all/payment-service-provider/base-shop/debug-payment-integrations-locally.html - title: Hydrate payment methods for an order @@ -2616,7 +2618,7 @@ entries: - title: Sending additional data to Stripe url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html - title: Stripe checkout with third-party frontends - url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html - title: Unzer url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/unzer/unzer.html From 4b97074905451d768c934fc631aec049c2908705 Mon Sep 17 00:00:00 2001 From: Platon Pechlivanis Date: Tue, 17 Dec 2024 13:41:32 +0200 Subject: [PATCH 137/199] Security release notes for Q4 --- .../security-release-notes-202412.0.md | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 docs/about/all/releases/security-release-notes-202412.0.md diff --git a/docs/about/all/releases/security-release-notes-202412.0.md b/docs/about/all/releases/security-release-notes-202412.0.md new file mode 100644 index 00000000000..02656b4604d --- /dev/null +++ b/docs/about/all/releases/security-release-notes-202412.0.md @@ -0,0 +1,148 @@ +--- +title: Security release notes 202412.0 +description: Security updates released for version 202412.0 +last_updated: Dec 20, 2024 +template: concept-topic-template +--- + +This document describes the security-related issues that have been recently resolved. + +For additional support with this content, [contact our support](https://support.spryker.com/). If you found a new security vulnerability, contact us at [security@spryker.com](mailto:security@spryker.com). + +## Account takeover from a different company (B2B demo-shop) + +Due to a misconfiguration in the access controls of the application, it was possible to modify the email of a customer belonging to a different company by manipulating the `id_customer` parameter of the submitted form. + +Also, this fix resolves the following vulnerabilities: +* Unrestricted Address Addition (BFLA) Exposes Organizations to Manipulation. Because of an access controls vulnerability it was possible to add new addresses to any organization within the application. +* Unrestricted Business Unit Modification (BFLA). Because of an access controls vulnerability it was possible to manipulate business unit assignments for other users. + +### Affected modules + +`spryker-shop/company-page`: 1.0.0 - 2.29.0 + +### Fix the vulnerability + +Update the `spryker-shop/company-page` module to version 2.30.0 or higher: + +```bash +composer update spryker-shop/company-page +composer show spryker-shop/company-page # Verify the version +``` + +## Unauthenticated Access to Backend Gateway and API Exposure + +The backend gateway endpoint was found to be accessible externally without any form of authentication. + +### Affected modules + +`spryker/security-system-user`: 1.0.0 + +### Fix the vulnerability + +Update the `spryker/security-system-user` module to version 1.1.0 or higher: + +```bash +composer update spryker/security-system-user +composer show spryker/security-system-user # Verify the version +``` + +## Strict Transport Security Misconfiguration + +The HTTP Strict-Transport-Security header was found to be missing from certain static pages (.css, .js files) of the web applications. + +### Fix the vulnerability + +Update the `spryker/docker-sdk` module to version 1.63.0 or higher: + +Update `.git.docker` with hash commit `ac17ea980d151c6b4dd83b7093c0c05a9205c244` or higher. + +## Unauthorized User Enable/Disable Capability in Company Menu + +A user with the buyer role was able to enable or disable other users even if the specific permission for this action was turned off. + +### Affected modules + +* `spryker-shop/company-page`: 1.0.0 - 2.28.0 +* `spryker/company-user` : 1.0.0 - 2.18.0 +* `spryker/company-role` : 1.0.0 - 1.8.0 + +### Fix the vulnerability + +1. Update the `spryker-shop/company-page` (version 2.29.0 or higher), `spryker/company-user` (version 2.19.0 or higher), `spryker/company-role`(version 1.9.0 or higher) + +```bash +composer update spryker-shop/company-page spryker/company-user spryker/company-role +``` + +2. Register the following plugins in the `Pyz\Client\Permission\PermissionDependencyProvider::getPermissionPlugins()` method : +* Spryker\Client\CompanyRole\Plugin\Permission\CreateCompanyRolesPermissionPlugin +* Spryker\Client\CompanyRole\Plugin\Permission\DeleteCompanyRolesPermissionPlugin +* Spryker\Client\CompanyRole\Plugin\Permission\EditCompanyRolesPermissionPlugin +* Spryker\Client\CompanyRole\Plugin\Permission\SeeCompanyRolesPermissionPlugin +* Spryker\Client\CompanyUser\Plugin\CompanyUserStatusChangePermissionPlugin +* Spryker\Client\CompanyUser\Plugin\Permission\DeleteCompanyUsersPermissionPlugin +* Spryker\Client\CompanyUser\Plugin\Permission\EditCompanyUsersPermissionPlugin +* Spryker\Shared\CompanyUser\Plugin\AddCompanyUserPermissionPlugin +* Spryker\Shared\CompanyUserInvitation\Plugin\ManageCompanyUserInvitationPermissionPlugin + +3. Update data import files (or, assign permissions directly to customers from the company permission management page) `data/import/common/common/company_role_permission.csv` + +Make sure that test-company_Admin is replaced by your company admin name. (If you have several company admins, please duplicate the provided below permission set for each admin) + +```bash +Spryker_Admin,DeleteCompanyUsersPermissionPlugin, +test-company_Admin,DeleteCompanyUsersPermissionPlugin, +test-company_Admin,AddCompanyUserPermissionPlugin, +test-company_Admin,AddCompanyUserPermissionPlugin, +test-company_Admin,EditCompanyUsersPermissionPlugin, +test-company_Admin,SeeCompanyRolesPermissionPlugin, +test-company_Admin,DeleteCompanyRolesPermissionPlugin, +trial-company_Admin,CreateCompanyRolesPermissionPlugin, +trial-company_Admin,EditCompanyRolesPermissionPlugin, +trial-company_Admin,ManageCompanyUserInvitationPermissionPlugin, +trial-company_Admin,CompanyUserStatusChangePermissionPlugin, +``` + +## Vulnerability in Summernote third-party dependency + +Summernote third-party dependency was vulnerable to Cross-site Scripting (XSS) via the insert link function in the editor component. An attacker could potentially execute arbitrary code by injecting a crafted script. + +### Affected modules + +`spryker/gui`: 1.0.0 - 3.55.2 + +### Fix the vulnerability + +In the root `composer.json`, adjust the `spryker/gui` module to version 3.55.3 or higher: + +```bash +"spryker/gui": "^3.55.3" +``` + +Upgrade the `spryker/gui` module to version 3.55.3 or higher: + +```bash +composer update spryker/gui +composer show spryker/gui # Verify the version +``` + +## Vulnerability in symfony/security-http third-party dependency + +Symfony/security-http third-party dependency was vulnerable to Authentication Bypass via the consumeRememberMeCookie function due to improper validation between the username persisted in the database and the username attached to the cookie. + +### Fix the vulnerability + +Update `spryker/symfony` package to version 3.18.1 or higher + +Adjust `composer. json` in the following manner: + +```bash +"symfony/security-http": "^5.4.47 || ^6.4.15", +``` + +Run the following command: + +```bash +composer update symfony/security-http +``` \ No newline at end of file From 45b9f3cad2a36de775274cf00feb2db981d04e4c Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Dec 2024 16:38:40 +0200 Subject: [PATCH 138/199] links --- _data/sidebars/pbc_all_sidebar.yml | 4 +- .../define-return-urls-for-payments.md | 16 ++++ .../base-shop/payment-method-strategies.md | 82 +++++++------------ 3 files changed, 48 insertions(+), 54 deletions(-) create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/define-return-urls-for-payments.md diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 562fc5aee0d..f071fb9d33e 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2329,7 +2329,7 @@ entries: - title: Define return URLs for payments url: /docs/pbc/all/payment-service-provider/base-shop/define-return-urls-for-payments.html include_versions: - - "202410.0" + - "202410.0" - title: Debug payment integrations locally url: /docs/pbc/all/payment-service-provider/base-shop/debug-payment-integrations-locally.html - title: Hydrate payment methods for an order @@ -2606,6 +2606,8 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/disconnect-stripe.html - title: Project guidelines url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.html + include_versions: + - "202410.0" nested: - title: Embed the Stripe payment page as an iframe url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/define-return-urls-for-payments.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/define-return-urls-for-payments.md new file mode 100644 index 00000000000..a071cfcdd66 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/define-return-urls-for-payments.md @@ -0,0 +1,16 @@ +--- +title: Define return URLs for payments +description: Learn how to change the default return URLs to be used by third-party payment service providers +last_updated: Nov. 27, 2024 +template: howto-guide-template +--- + +Payment methods are configured to redirect the customer to a specific return URL after the payment process is completed, failed, or cancelled. This document provides information on how to change the default return URLs for payments. + +Some third-party integrations only use a return URL while others can also use a failure and/or cancel URLs. The `ForeignPayment` class is used to send the expected return URLs to the payment app, which are then used when needed. + +To change the default return URLs, you can use the following methods: + +- `\Spryker\Zed\Payment\PaymentConfig::getSuccessRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCancelRoute()` +- `\Spryker\Zed\Payment\PaymentConfig::getCheckoutSummaryPageRoute()` diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index 4a6104474b5..397ebb6d74b 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -3,35 +3,30 @@ title: Payment method strategies description: This doc describes the different payment method strategies available in Spryker Commerce OS. last_updated: Nov 5, 2024 template: howto-guide-template -originalLink: ... -originalArticleId: ... -redirect_from: - - ... --- - -## Payment Method Strategies - -Spryker and the provided Payment Service Provide Apps (PSP) support various payment methods. Each of them is configured on the App side to use a different strategy. The strategy defines where and how the Payment Method or the Payment Service Provider elements (mostly the payment form) are displayed in the shop. +Spryker and Payment Service Provider (PSP) apps support various payment methods. On the app side, payment methods are configured to use different strategies. A payment method strategy defines where and how payment method or PSP elements, usually the payment form, are displayed in the shop. The following strategies are available: -- **hosted-payment-page**: The customer is redirected to the PSP page (Hosted Payment Page) after the order is submitted to complete the payment. -- **express-checkout**: One or more buttons are displayed e.g. on the Cart Page or the PDP Page. +- hosted-payment-page: After an order is submitted to complete the payment, the customer is redirected to a hosted payment page of the PSP. +- express-checkout: One or more buttons are displayed e.g. on the Cart Page or the PDP Page. + + -[//]: # (- **embedded**: The payment form is embedded in the shops summary page.) +The strategy is defined in the `PaymentMethodTransfer` object. The object is used to transfer the payment method data between the shop and the PSP. -The strategy is defined in the PaymentMethodTransfer object. The PaymentMethodTransfer object is used to transfer the payment method data between the shop and the PSP. When the App is configured in the ACP App Catalog, the PaymentMethod data is sent via an AsyncAPI to SCOS and is persisted in the database. The configuration is a JSON string which will be mapped to the PaymentMethodTransfer object. +When an app is configured in the ACP app Catalog, the `PaymentMethod` data is sent to Spryker using an async API and is persisted in the database. The configuration is a JSON string which is mapped to the `PaymentMethodTransfer` object. -The PaymentMethodTransfer contains a PaymentMethodAppConfigurationTransfer object. The PaymentMethodAppConfigurationTransfer object contains the CheckoutStrategyTransfer. The CheckoutStrategyTransfer contains the strategy name. The strategy name is used to determine where and how the Payment Method or the Payment Service Provider elements are displayed in the shop. +`PaymentMethodTransfer` contains a `PaymentMethodappConfigurationTransfer` object. The `PaymentMethodappConfigurationTransfer` object contains the `CheckoutStrategyTransfer` object. `CheckoutStrategyTransfer` contains the strategy name. The strategy name is used to determine where and how the payment method or PSP elements are displayed in the shop. -When no strategy is used the `hosted-payment-page` strategy is used by default. +The `hosted-payment-page` strategy is used by default. -## Express Checkout +## Express checkout -When the PaymentMethod is using the `express-checkout` strategy, specific buttons for this Payment Method are displayed in the shop. The buttons are displayed e.g. on the Cart Page or the PDP Page. The buttons are created by the PaymentMethodViewExpander. The PaymentMethodViewExpander is a part of the Payment module and is responsible for expanding the payment method data with the view data. The PaymentMethodViewExpander is used by the PaymentMethodViewPlugin. The PaymentMethodViewPlugin is a part of the Checkout module and is responsible for rendering the payment method data in the shop. +When the `express-checkout` strategy is used for a payment method, the buttons for this payment method are displayed in the shop, for example– on the Cart or Product Details pages. The buttons are created by `PaymentMethodViewExpander`. `PaymentMethodViewExpander` is a part of the Payment module and is responsible for expanding the payment method data with view data. `PaymentMethodViewExpander` is used by `PaymentMethodViewPlugin`. `PaymentMethodViewPlugin` is a part of the Checkout module and is responsible for rendering the payment method data in the shop. -To be able to display the buttons in the Shop, the CheckoutConfigurationTransfer contains all information needed to display the buttons. An example configuration looks as following: +`CheckoutConfigurationTransfer` contains the information to display the buttons. An example configuration looks as follows: ```json { @@ -61,19 +56,19 @@ To be able to display the buttons in the Shop, the CheckoutConfigurationTransfer The main elements of this JSON configuration are the strategy and the scripts. -The `strategy` is set to `express-checkout` to define that the Payment Method should be displayed as a button in the shop. +The `strategy` is set to `express-checkout` to define that the payment method should be displayed as a button in the shop. -The `scripts` array contains the URLs to the scripts that are needed to display the button. The URL is used to load the script in the shop. The query_params are used to add key=value pairs to the URL with the actual values. The actual values are taken from the `\SprykerShop\Yves\PaymentAppWidget\Reader\PaymentMethodScriptReaderInterface` which is used in the Storefront to expand the script as needed. The `key` is the name that has to be used as query param key in the URL and the value defines which value should be used. The `currency` and `locale` are the most common values that are used in the scripts. +The `scripts` array contains the URLs to the scripts that are needed to display the button. The URL is used to load the script in the shop. `query_params` are used to add key-value pairs to the URL with actual values. The actual values are taken from `\Sprykershop\Yves\PaymentappWidget\Reader\PaymentMethodScriptReaderInterface`, which is used in the Storefront to expand the script. The `key` is the name that has to be used as query param key in the URL and the value defines which value should be used. The `currency` and `locale` are the most common values that are used in the scripts. -The `payment_service_provider_data` contains the data that can be used by projects to configure the Payment Method. Those value may differ for each different Payment Method. +The `payment_service_provider_data` contains the data that can be used by projects to configure the payment method. Those value may different per payment method. -### Query Params for Scripts +### Query parameters for scripts -It is important to understand who is responsible for what. The App itself knows only which query params (keys) are needed. The Shop knows which values are needed and where to get them from. +The app knows only which query parameters (keys) are needed. The shop knows which values are needed and where to get them from. -For example the script must be like `https://example.com/js?currency=EUR`. The App knows that the `currency` is needed but can't know which one is used in the Shop. The Shop knows that the used `currency` is `EUR`. +For example the script must be like `https://example.com/js?currency=EUR`. The app knows that the `currency` is needed but can't know which one is used in the shop. The shop knows that the used `currency` is `EUR`. -The App defines a Scrtipt like this +The app defines a script as follows: ```json { @@ -88,44 +83,25 @@ The App defines a Scrtipt like this } ``` -The Shop loads this information and parses the `currencyName` to `EUR` and the final URL is `https://example.com/js?currency=EUR`. - -Why not simpler and only using a key? The answer is easy aURL could look like `https://example.com/js?c=EUR` where the key can't be used anymore to determine what the value should be. - -In this example the App would define the script like this - -```json -{ - "scripts": [ - { - "url": "https://example.com/js", - "query_params": { - "c": "currencyName" - } - } - ] -} -``` - -So that the Shop can understand that `c` has to be used as param key in the URL and the value is the name of the currency `currencyName`. - -Current on SCOS side supported query params: +The shop loads this information and parses the `currencyName` to `EUR` and the final URL is `https://example.com/js?currency=EUR`. +Spryker supports the following query parameters: - `currencyName` - `localeName` -This list may extend over time when new query params are needed. -## Hosted Payment Page Flow +## Hosted payment page flow -The default checkout guides a customer through various steps such as the cart, the address, the shipment, and the payment step. After that the customer is shown the Summary Page where he submits the Order. After the order is successfully placed in the Back Office, the Customer is redirected to a Hosted Payment Page where he completes the Payment. +The default checkout consists of different steps such as the address or shipment steps. After a customer submits an order, and it's successfully placed in the Back Office, the customer is redirected to a hosted payment page to complete the payment. -## Express Checkout Payment Flow +## Express checkout payment flow -The Express Checkout Payment Flow belongs to so called PreOrderPayments. PreOrderPayments are payments that are done before the actual order is placed. The Express Checkout Payment Flow is a two-step process. The first step is to authorize the payment and the second step is to capture the payment. The authorization is done when the customer clicks on the button in the shop. The capture is done when the order is placed. +The express checkout payment flow belongs to so-called preorder payments. Preorder payments are payments that are done before an order is placed. The express checkout payment flow consists of the steps: +1. Authorize payment: after a customer clicks on the button. +2. Capture payment: after the order is placed. -Here the flow is different from the Hosted Payment Page flow. The customer will see e.g. on the Product Detail Page or the Cart Page a button to pay with the Payment Method. When the customer clicks on the button, the payment is initialized and a modal window is opened where the customer completes the payment. After that, the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. -Additionally, those Express Checkout Payment Methods provide customer data that can be used to prefill the checkout form. This data can contain e.g. customer data, address data or alike. +In this flow, a button to pay with a payment method is displayed on, for example–Product Details or Cart page. When the customer clicks on the button, the payment is initialized and a modal window is opened where the customer completes the payment. After that, the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. +Additionally, those Express Checkout payment methods provide customer data that can be used to prefill the checkout form. This data can contain e.g. customer data, address data or alike. From ae9d3f1f97153cf88dcc95c3785fd78334df0eec Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Dec 2024 16:40:03 +0200 Subject: [PATCH 139/199] Update dg_dev_sidebar.yml --- _data/sidebars/dg_dev_sidebar.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/_data/sidebars/dg_dev_sidebar.yml b/_data/sidebars/dg_dev_sidebar.yml index 2d65a5dfb05..fc5adec1cdf 100644 --- a/_data/sidebars/dg_dev_sidebar.yml +++ b/_data/sidebars/dg_dev_sidebar.yml @@ -1620,13 +1620,11 @@ entries: url: /docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html - title: Retaining ACP apps when running destructive deployments url: /docs/dg/dev/acp/retaining-acp-apps-when-running-destructive-deployments.html - - title: APIs and overview diagrams for payment service providers - url: /docs/dg/dev/acp/apis-and-overview-diagrams-for-payment-service-providers.html - title: APIs and flows for payment service providers url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/apis-and-flows-for-payment-service-providers.html nested: - title: Asynchronous API for payment service providers - url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html + url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/asynchronous-api-for-payment-service-providers.html - title: Configure and disconnect flows for payment service providers url: /docs/dg/dev/acp/apis-and-flows-for-payment-service-providers/configure-and-disconnect-flows-for-payment-service-providers.html - title: Headless express checkout payment flow for payment service providers From 3c38e1a95b36c64011d5dc5f0aed88d578f0d06d Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 15:50:44 +0100 Subject: [PATCH 140/199] Update configure-elasticsearch.md --- .../tutorials-and-howtos/configure-elasticsearch.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index ec25f9349af..33f2dae79e1 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -187,3 +187,16 @@ For the default page index, the class is `\Generated\Shared\Search\PageIndexMap` These classes provide some information from mapping, such as fields and metadata. Use these classes for references to program against something related to that mapping schema. If you change mapping and run the installer, autogenerated classes change accordingly. + +{% info_block warningBox "Index update limitations" %} + +Elastic Search has different limitations, when it comes to update of the existing index with data in it. +Unfortunatelly, the errors you see from the Elastic Search are confusing. +In order to ensure that the index is correct, please drop the index, create it again and sync data into it. +APPLICATION_STORE=DE console search:index:delete +APPLICATION_STORE=DE console search:setup:sources +APPLICATION_STORE=DE console sync:data + +Please contact our support or community to get more specific help. + +{% endinfo_block %} From 8c2b82aa8c7ce0b38c03ab6bc8a7138abe3a11fb Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 15:53:42 +0100 Subject: [PATCH 141/199] Update configure-elasticsearch.md --- .../base-shop/tutorials-and-howtos/configure-elasticsearch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index 33f2dae79e1..b99a97e5893 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -1,7 +1,7 @@ --- title: Configure Elasticsearch description: Elasticsearch is a NoSQL data store that lets you predefine the structure of the data you store in it. -last_updated: Jul 24, 2022 +last_updated: Dec 17, 2024 template: howto-guide-template originalLink: https://documentation.spryker.com/2021080/docs/search-configure-elasticsearch originalArticleId: 6aa9f4ab-25de-46bc-b734-54bccb25cf0b From 047b6c9088d12f57544a14567de3105d2a996bc8 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Dec 2024 17:01:52 +0200 Subject: [PATCH 142/199] Update install-the-shopping-lists-feature.md --- .../install-features/install-the-shopping-lists-feature.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md index dee405fbbef..aa393de2579 100644 --- a/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md +++ b/docs/pbc/all/shopping-list-and-wishlist/202410.0/base-shop/install-and-upgrade/install-features/install-the-shopping-lists-feature.md @@ -1,6 +1,6 @@ --- title: Install the Shopping Lists feature -Learn how to install the Spryker Shopping List feature in to your Spryker Cloud Commerce OS Project. +description: Learn how to install the Spryker Shopping List feature in to your Spryker Cloud Commerce OS Project. last_updated: Jun 16, 2021 template: feature-integration-guide-template originalLink: https://documentation.spryker.com/2021080/docs/shopping-lists-feature-integration From cbf2cf1c0dc3a52c7556216dc75f1a6158e0030c Mon Sep 17 00:00:00 2001 From: Andrey Tkachenko Date: Tue, 17 Dec 2024 16:30:05 +0100 Subject: [PATCH 143/199] Update configure-elasticsearch.md --- .../tutorials-and-howtos/configure-elasticsearch.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md index b99a97e5893..b5fe596b25e 100644 --- a/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md +++ b/docs/pbc/all/search/202410.0/base-shop/tutorials-and-howtos/configure-elasticsearch.md @@ -195,8 +195,13 @@ Unfortunatelly, the errors you see from the Elastic Search are confusing. In order to ensure that the index is correct, please drop the index, create it again and sync data into it. APPLICATION_STORE=DE console search:index:delete APPLICATION_STORE=DE console search:setup:sources + +If you had **no changes** to the data, execute: APPLICATION_STORE=DE console sync:data +If you had **any changes** to the data, execute: +APPLICATION_STORE=DE console publish:trigger-events + Please contact our support or community to get more specific help. {% endinfo_block %} From 1bd7dcf131401e58b5a0b72cda8e3087ba6c23a4 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Dec 2024 10:51:35 +0200 Subject: [PATCH 144/199] links --- _data/sidebars/pbc_all_sidebar.yml | 6 +- .../base-shop/payment-method-strategies.md | 4 +- .../stripe/project-guidelines-for-stripe.md | 614 ------------------ ...ed-the-stripe-payment-page-as-an-iframe.md | 131 ++++ ...tripe-checkout-as-a-hosted-payment-page.md | 51 ++ .../oms-configuration-for-stripe.md | 84 +++ .../processing-refunds-with-stripe.md | 21 + .../project-guidelines-for-stripe.md | 33 + .../sending-additional-data-to-stripe.md | 62 ++ ...ipe-checkout-with-third-party-frontends.md | 288 ++++++++ 10 files changed, 677 insertions(+), 617 deletions(-) delete mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md create mode 100644 docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index f071fb9d33e..cadb020aa59 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2336,6 +2336,10 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/hydrate-payment-methods-for-an-order.html - title: Interact with third party payment providers using Glue API url: /docs/pbc/all/payment-service-provider/base-shop/interact-with-third-party-payment-providers-using-glue-api.html + - title: Payment method strategies + url: /docs/pbc/all/payment-service-provider/base-shop/payment-method-strategies.html + include_versions: + - "202410.0" - title: Retrieve and use payment details from third-party PSPs url: /docs/pbc/all/payment-service-provider/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html - title: "Payments feature: Domain model and relationships" @@ -2607,7 +2611,7 @@ entries: - title: Project guidelines url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.html include_versions: - - "202410.0" + - "202410.0" nested: - title: Embed the Stripe payment page as an iframe url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index 397ebb6d74b..2777bb55c60 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -102,6 +102,6 @@ The express checkout payment flow belongs to so-called preorder payments. Preord 2. Capture payment: after the order is placed. -In this flow, a button to pay with a payment method is displayed on, for example–Product Details or Cart page. When the customer clicks on the button, the payment is initialized and a modal window is opened where the customer completes the payment. After that, the customer is redirected to the Summary Page where he can submit the order. The order is placed in the Back Office and the payment will be captured. +In this flow, a button to pay with a payment method is displayed on, for example–Product Details or Cart page. When the customer clicks on the button, the payment is initialized and a modal window is opened where the customer completes the payment. After that, the customer is redirected to the summary page where they can submit the order. The order is placed in the Back Office and captured. -Additionally, those Express Checkout payment methods provide customer data that can be used to prefill the checkout form. This data can contain e.g. customer data, address data or alike. +Also, express checkout payment methods provide customer data, such as addresses, that can be used to prefill the checkout form. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md deleted file mode 100644 index d8b8cceb39e..00000000000 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.md +++ /dev/null @@ -1,614 +0,0 @@ ---- -title: Project guidelines for Stripe -description: Learn the guidelines that are needed for your Spryker projects when it comes to using Stripe throught the Spryker Stripe App Integration. -last_updated: Jul 22, 2024 -template: howto-guide-template -related: - - title: Stripe - link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - ---- - -This document provides guidelines for projects using Stripe through the Stripe app. - -## OMS configuration - -The complete default payment OMS configuration is available at `vendor/spryker/sales-payment/config/Zed/Oms/ForeignPaymentStateMachine01.xml`. - -The payment flow of the default OMS involves authorizing the initial payment. The amount is temporarily blocked when the payment method permits. Then, the OMS sends requests to capture, that is, transfer of the previously blocked amount from the customer's account to the store account. - -The `Payment/Capture` command initiates the capture action. By default, this command is initiated when a Back Office user clicks **Ship** on the **Order Overview** page. - -Optionally, you can change and configure your own payment OMS based on `ForeignPaymentStateMachine01.xml` from the core package and change this behavior according to your business flow. For more information about OMS configuration, see [Install the Order Management feature](/docs/pbc/all/order-management-system/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-order-management-feature.html). - -To configure your payment OMS based on `ForeignPaymentStateMachine01.xml`, copy `ForeignPaymentStateMachine01.xml` with the `Subprocess` folder to the project root `config/Zed/oms`. Then, change the file's name and the value of ` - State machine example - -```xml - - - - - - - - - - - - - - - - - - - - - - - ready for dispatch - payment capture pending - capture payment - - - - - - - - - - - - - - - - - - - -``` - - - -By default, the timeout for the payment authorization action is set to seven days. If the order is in the `payment authorization pending` state, after a day the order state is changed to `payment authorization failed`. Another day later, the order is transitioned to the `payment authorization canceled` state. - -To decrease or increase timeouts or change the states, update `config/Zed/oms/Subprocess/PaymentAuthorization01.xml`. - -For more information on the integration of ACP payment methods with OMS configuration, see [Integrate ACP payment apps with Spryker OMS configuration](/docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html). - - -## Implementing Stripe for checkout in a headless application - -Use this approach for headless applications with third-party frontends. - -### Install modules - -Install or upgrade the modules to the specified or later versions: -- `spryker/kernel-app:1.2.0` -- `spryker/payment:5.24.0` -- `spryker/payments-rest-api:1.3.0` - -### Pre-order payment flow - -When Stripe is integrated into a headless application, orders are processed using a pre-order payment flow: - -1. The customer either selects Stripe as the payment method or [Stripe Elements](https://docs.stripe.com/payments/elements) is loaded by default. -2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: - * Payment provider name: Stripe - * Payment method name: Stripe - * Payment amount - * Quote data -3. Back Office sends the quote data and the payment amount to Stripe app through an API. -4. The payment with the given data is persisted in the Stripe app. -5. Stripe app requests `ClientSecret` and `PublishableKey` keys from Stripe through an API. -6. Stripe returns a JSON response with the following parameters: - * TransactionId - * ClientSecret - * PublishableKey - * Only for marketplaces: AccountId -7. Stripe Elements is rendered on the order summary page. See [Rendering the Stripe Elements on the summary page](#rendering-the-stripe-elements-on-the-summary-page) for rendering Stripe Elements. -8. The customer selects a payment method in Stripe Elements and submits the data. -9. The customer is redirected to the configured `return_url`, which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. -10. The customer is redirected to the application's success page. -11. Stripe app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. - The `order_reference` is passed to the Stripe app to be connected with `transaction_id`. -12. Stripe app processes the payment and sends a `PaymentUpdated` message to Spryker. -13. Depending on payment status, one of the following messages is returned through an asynchronous API: - * Payment is successful: `PaymentAuthorized` message. - * Payment is failed: `PaymentAuthorizationFailed` message. -14. Further on, the order is processed through the OMS. - -All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. - - -### Example of the headless checkout with Stripe - -The Payment selection in this example will be used on the Summary page. The following examples show how to implement the Stripe Payment App in a headless application. - -Before the customer is redirected to the summary page, all required data is collected: customer data, addresses, and selected shipment method. When the customer goes to the summary page, to get the data required for rendering the Stripe Elements, the application needs to call the `InitializePreOrderPayment` Glue API endpoint. - -#### Pre-order payment initialization - -```JS - -async initializePreOrderPayment() { - const requestData = { - data: { - type: 'payments', - attributes: { - quote: QUOTE_DATA, - payment: { - amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint - paymentMethodName: 'stripe', // taken from /checkout-data?include=payment-methods - paymentProviderName: 'stripe', // taken from /checkout-data?include=payment-methods - }, - preOrderPaymentData: { - "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests - }, - }, - }, - }; - - const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, - }, - body: JSON.stringify(requestData), - }); - - const paymentProviderData = - responseData.data.attributes.preOrderPaymentData; - - this.transactionId = paymentProviderData.transactionId; - this.accountId = paymentProviderData.accountId; // only be used on the Direct business model. When using a Marketplace business model this will not be present. - - await this.setupStripe(); - } - -``` - -To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. - -After a `PaymentIntent` is created using the Stripe API, a payment is created in the Stripe app. The response looks as follows: - -```JSON -{ - "data": { - "type": "payments", - "attributes": { - "isSuccessful": true, - "error": null, - "preOrderPaymentData": { - "transactionId": "pi_3Q3............", - "clientSecret": "pi_3Q3............_secret_R3WC2........", - "publishableKey": "pk_test_51OzEfB..............." - } - } - } -} -``` - -#### Rendering the Stripe Elements on the summary page - -The `preOrderPaymentData` from the previous example is used to render Stripe Elements on the summary page: - -```JAVASCRIPT -async setupStripe() { - const paymentElementOptions = { - layout: 'accordion', // Change this to your needs - }; - - let stripeAccountDetails = {}; - - if (this.accountId) { // Only in Direct business model not in the Marketplace business model - stripeAccountDetails = { stripeAccount: this.accountId } - } - - const stripe = Stripe(this.publishableKey, stripeAccountDetails); - - const elements = stripe.elements({ - clientSecret: this.clientSecret, - }); - - const paymentElement = elements.create('payment', paymentElementOptions); - paymentElement.mount('#payment-element'); // Change this to the id of the HTML element you want to render the Stripe Elements to - - SUBMIT_BUTTON.addEventListener('click', async () => { - const { error } = await stripe.confirmPayment({ - elements, - confirmParams: { - return_url: `APPLICATION_URL/return-url?id=${idCart}`, // You need to pass the id of the cart to this request - }, - }); - if (error) { - // Add your error handling to this block. - } - }); - } -``` - -This sets up Stripe Elements on the summary page of your application. The customer can now select the Payment Method in Stripe Elements and submit the data. Then, the customer is redirected to the configured `return_url`, which makes another Glue API request to persist the order in the Back Office. After this, the customer should see the success page. - -When the customer submits the order, the payment data is sent to Stripe. Stripe may redirect them to another page, for example — PayPal, or redirect the customer to the specified `return_url`. The `return_url` must make another Glue API request to persist the order in the Back Office. - -#### Persisting orders in the Back Office through the return URL - -Because an order can be persisted in the Back Office only after a successful payment, the application needs to handle the `return_url` and make a request to the Glue API to persist the order. - -
    - Request example - -```JAVASCRIPT -app.get('/return-url', async (req, res) => { - const paymentIntentId = req.query.payment_intent; - const clientSecret = req.query.payment_intent_client_secret; - const idCart = req.query.id; - - if (paymentIntentId) { - try { - const data = await fetchHandler(`GLUE_APPLICATION_URL/checkout`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN` - }, - body: JSON.stringify({ - data: { - type: 'checkout', - attributes: { - customer: CUSTOMER_DATA, - idCart: idCart, - billingAddress: BILLING_ADDRESS, - shippingAddress: SHIPPING_ADDRESS, - payments: [ - { - paymentMethodName: 'Stripe', - paymentProviderName: 'Stripe', - }, - ], - shipment: SHIPMENT_DATA, - preOrderPaymentData: { - transactionId: paymentIntentId, - clientSecret: clientSecret, - }, - }, - }, - }), - }); - - if (data) { - res.send('

    Order Successful!

    '); - } else { - res.send('

    Order Failed!

    '); - } - } catch (error) { - console.error(error); - res.send('

    Order Failed!

    '); - } - } else { - res.send('

    Invalid Payment Intent!

    '); - } -}); -``` - -
    - -After this, the customer should be redirected to the success page or in case of a failure to an error page. - - -{% info_block infoBox %} -- When the customer reloads the summary page, which renders `PaymentElements`, an extra unnecessary API request is sent to initiate `preOrder Payment`. Stripe can handle these without issues. However, you can also prevent unnecessary API calls from being sent on the application side by, for example, checking if relevant data has changed. -- When the customer leaves the summary page, the payment is created in Stripe app and Stripe. However, in the Back Office, there is a stale payment without an order. -- To enable the customer to abort the payment process, you can implement the cancellation of payments through Glue API. - -{% endinfo_block %} - - - -#### Cancelling payments through Glue API - -The following request cancels a PaymentIntent on the Stripe side and shows a `canceled` PaymentIntent in the Stripe Dashboard. You can implement this in your application to enable the customer to cancel the payment process. - -
    - Cancel a payment through Glue API - -```JAVASCRIPT -async cancelPreOrderPayment() { - const requestData = { - data: { - type: 'payment-cancellations', - attributes: { - payment: { - paymentMethodName: 'stripe', - paymentProviderName: 'stripe', - }, - preOrderPaymentData: { - transactionId: this.transactionId, - }, - }, - }, - }; - - const url = `GLUE_APPLICATION_URL/payment-cancellations`; - - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ACCESS_TOKEN`, - }, - body: JSON.stringify(requestData), - }); - - if (!response.ok) { - throw new Error('Network response was not ok'); - } - - const responseData = await response.json(); - - if (responseData.data.attributes.isSuccessful === true) { - // Add your logic here when the payment cancellation was successful - } else { - // Add your logic here when the payment cancellation has failed - } - } -``` - -
    - - -### Implementing Stripe checkout as a hosted payment page - -If you have rewritten `@CheckoutPage/views/payment/payment.twig` on the project level, do the following: - -1. Make sure that a form molecule uses the following code for the payment selection choices: - -```twig -{% raw %} - -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... - {% embed molecule('form') with { - data: { - form: data.form[data.form.paymentSelection[key].vars.name], - ... - } - {% endembed %} -{% endfor %} -{% endraw %} -``` - -2. If you want to change the default payment provider or method names, do the following: - 1. Make sure the names are translated in your payment step template: - -```twig -{% raw %} -{% for name, choices in data.form.paymentSelection.vars.choices %} - ... -
    {{ name | trans }}
    -{% endfor %} -{% endraw %} -``` - - 2. Add translations to your glossary data import file: - -```csv -... -Stripe,Pay Online with Stripe,en_US -``` - 3. Run the data import command for the glossary: - -```bash -console data:import glossary -``` - -## Processing refunds - -In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. - -During this period, Stripe attempts to process the request, which results in success or failure: -* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. -* Failure: the items transition to the `payment refund failed` state. - -These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. - -If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. - -In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. - -## Retrieving and using payment details from Stripe - -For instructions on using payment details, like the payment reference, from Stripe, see [Retrieve and use payment details from third-party PSPs](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) - -## Embed the Stripe payment page using iframe - -By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: - - -1. Create or update `src/Pyz/Zed/Payment/PaymentConfig.php` with the following configuration: -```php -namespace Pyz\Zed\Payment; - -class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig -{ - public function getStoreFrontPaymentPage(): string - { - // Please make sure that domain is whitelisted in the config_default.php `$config[KernelConstants::DOMAIN_WHITELIST]` - return '/payment'; //or any other URL on your storefront domain e.g. https://your-site.com/payment-with-stripe - } -} -``` - -In this setup, the redirect URL will be added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. - - -2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: - -* Use the following minimal page regardless of the frontend technology used. -* If your Storefront is based on a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. -* If your Storefront is based on Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). - -```php - - - - - Order payment page - - - - - -``` - - -### Create an Yves page for rendering the Stripe payment page - - -1. Create a controller to render the payment page: - -**src/Pyz/Yves/PaymentPage/Controller/PaymentController.php** -```php - -namespace Pyz\Yves\PaymentPage\Controller; - -use Spryker\Yves\Kernel\Controller\AbstractController; -use Spryker\Yves\Kernel\View\View; -use Symfony\Component\HttpFoundation\Request; - -class PaymentController extends AbstractController -{ - /** - * @return \Spryker\Yves\Kernel\View\View - */ - public function indexAction(Request $request): View - { - return $this->view( - [ - 'iframeUrl' => base64_decode($request->query->getString('url', '')), - ], - [], - '@PaymentPage/views/payment.twig', - ); - } -} - -``` - -2. Create a template for the page: - -**src/Pyz/Yves/PaymentPage/Theme/default/views/payment.twig** -```twig -{% raw %} -{% extends template('page-layout-checkout', 'CheckoutPage') %} - -{% define data = { - iframeUrl: _view.iframeUrl, - title: 'Order Payment' | trans, -} %} - -{% block content %} - -{% endblock %} -{% endraw %} -``` - -3. Create a route for the controller: - -**src/Pyz/Yves/PaymentPage/Plugin/Router/EmbeddedPaymentPageRouteProviderPlugin.php** -```php -namespace Pyz\Yves\PaymentPage\Plugin\Router; - -use Spryker\Yves\Router\Plugin\RouteProvider\AbstractRouteProviderPlugin; -use Spryker\Yves\Router\Route\RouteCollection; - -class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin -{ - /** - * @param \Symfony\Component\Routing\RouteCollection $routeCollection - * - * @return \Symfony\Component\Routing\RouteCollection - */ - public function addRoutes(RouteCollection $routeCollection): RouteCollection - { - $route = $this->buildRoute('/payment', 'PaymentPage', 'Payment', 'indexAction'); - $routeCollection->add('payment-page', $route); - - return $routeCollection; - } -} -``` - -4. In `src/Pyz/Yves/Router/RouterDependencyProvider.php`, add a router plugin to `RouterDependencyProvider::getRouteProvider()`. - - -## Sending additional data to Stripe - -Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. - -```text -POST https://api.your-site.com/checkout -Content-Type: application/json -Accept-Language: en-US -Authorization: Bearer {{access_token}} - -{ - "data": { - "type": "checkout", - "attributes": { - "customer": { - ... - }, - "idCart": "{{idCart}}", - "billingAddress": { - ... - }, - "shippingAddress": { - ... - }, - "payments": [ - { - "paymentMethodName": "Stripe", - "paymentProviderName": "Stripe", - "additionalPaymentData": { - "custom-field-1": "my custom value 1", - "custom-field-2": "my custom value 2" - } - } - ], - "shipment": { - "idShipmentMethod": {{idMethod}} - } - } - } -} -``` - -The metadata sent using the field must meet the following criteria: - -| ATTRIBUTE | MAXIMUM VALUE | -| - | - | -| Key length | 40 characters | -| Value length | 500 characters | -| Key-value pairs | 50 pairs | - -When you pass metadata to Stripe, it's stored in the payment object and can be retrieved later. For example, this way you can pass an external ID to Stripe. - -When a `PaymentIntent` is created on the Stripe side, you can see your passed `additionalPaymentData` in the Stripe Dashboard. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md new file mode 100644 index 00000000000..bd1aaf34ac3 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md @@ -0,0 +1,131 @@ +--- +title: Embed the Stripe payment page as an iframe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + +--- + +By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: + + +1. Create or update `src/Pyz/Zed/Payment/PaymentConfig.php` with the following configuration: + +```php +namespace Pyz\Zed\Payment; + +class PaymentConfig extends \Spryker\Zed\Payment\PaymentConfig +{ + public function getStoreFrontPaymentPage(): string + { + // Please make sure that domain is whitelisted in the config_default.php `$config[KernelConstants::DOMAIN_WHITELIST]` + return '/payment'; //or any other URL on your storefront domain e.g. https://your-site.com/payment-with-stripe + } +} +``` + +In this setup, the redirect URL is added as a `url` query parameter to the URL you've specified in the `getStoreFrontPaymentPage()` method; the value of the parameter is base64-encoded. +Example: `/payment?url=base64-encoded-URL-for-iframe-src`. + + +2. Depending on your frontend setup, create a page to render the Stripe payment page in one of the following ways: + +* Use the following minimal page, which can be set up with any frontend technology. +* With a third-party frontend, follow the documentation of your framework to create a page to render the Stripe payment page using query parameters from the redirect URL provided in the Glue API `POST /checkout` response. +* With Yves, follow [Create an Yves page for rendering the Stripe payment page](#create-an-yves-page-for-rendering-the-stripe-payment-page). + +```php + + + + + Order payment page + + + + + +``` + + +## Create an Yves page for rendering the Stripe payment page + + +1. Create a controller to render the payment page: + +**src/Pyz/Yves/PaymentPage/Controller/PaymentController.php** +```php + +namespace Pyz\Yves\PaymentPage\Controller; + +use Spryker\Yves\Kernel\Controller\AbstractController; +use Spryker\Yves\Kernel\View\View; +use Symfony\Component\HttpFoundation\Request; + +class PaymentController extends AbstractController +{ + /** + * @return \Spryker\Yves\Kernel\View\View + */ + public function indexAction(Request $request): View + { + return $this->view( + [ + 'iframeUrl' => base64_decode($request->query->getString('url', '')), + ], + [], + '@PaymentPage/views/payment.twig', + ); + } +} + +``` + +2. Create a template for the page: + +**src/Pyz/Yves/PaymentPage/Theme/default/views/payment.twig** +```twig +{% raw %} +{% extends template('page-layout-checkout', 'CheckoutPage') %} + +{% define data = { + iframeUrl: _view.iframeUrl, + title: 'Order Payment' | trans, +} %} + +{% block content %} + +{% endblock %} +{% endraw %} +``` + +3. Create a route for the controller: + +**src/Pyz/Yves/PaymentPage/Plugin/Router/EmbeddedPaymentPageRouteProviderPlugin.php** +```php +namespace Pyz\Yves\PaymentPage\Plugin\Router; + +use Spryker\Yves\Router\Plugin\RouteProvider\AbstractRouteProviderPlugin; +use Spryker\Yves\Router\Route\RouteCollection; + +class EmbeddedPaymentPageRouteProviderPlugin extends AbstractRouteProviderPlugin +{ + /** + * @param \Symfony\Component\Routing\RouteCollection $routeCollection + * + * @return \Symfony\Component\Routing\RouteCollection + */ + public function addRoutes(RouteCollection $routeCollection): RouteCollection + { + $route = $this->buildRoute('/payment', 'PaymentPage', 'Payment', 'indexAction'); + $routeCollection->add('payment-page', $route); + + return $routeCollection; + } +} +``` + +4. In `src/Pyz/Yves/Router/RouterDependencyProvider.php`, add a router plugin to `RouterDependencyProvider::getRouteProvider()`. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md new file mode 100644 index 00000000000..ddccb4be8a5 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md @@ -0,0 +1,51 @@ +--- +title: Implement Stripe checkout as a hosted payment page +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +Implementing Stripe checkout as a hosted payment page is usually needed if `@CheckoutPage/views/payment/payment.twig` is overwritten on the project level. To implement Stripe checkout as a hosted payment page, follow the steps: + +1. Make sure that a form molecule uses the following code for the payment selection choices: + +```twig +{% raw %} +{% for name, choices in data.form.paymentSelection.vars.choices %} + ... + {% embed molecule('form') with { + data: { + form: data.form[data.form.paymentSelection[key].vars.name], + ... + } + {% endembed %} +{% endfor %} +{% endraw %} +``` + +2. If you want to change the default payment provider or method names, do the following: + 1. Make sure the names are translated in your payment step template: + + ```twig + {% raw %} + {% for name, choices in data.form.paymentSelection.vars.choices %} + ... +
    {{ name | trans }}
    + {% endfor %} + {% endraw %} + ``` + + 2. Add translations to your glossary data import file: + + ``` + Stripe,Pay Online with Stripe,en_US + ``` + + 3. Run the data import command for the glossary: + + ```bash + console data:import glossary + ``` diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md new file mode 100644 index 00000000000..b1b53b29867 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md @@ -0,0 +1,84 @@ +--- +title: OMS configuration for Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + + +The complete default payment OMS configuration is available at `vendor/spryker/sales-payment/config/Zed/Oms/ForeignPaymentStateMachine01.xml`. + +The payment flow of the default OMS involves authorizing the initial payment. The amount is temporarily blocked when the payment method permits. Then, the OMS sends requests to capture, that is, transfer of the previously blocked amount from the customer's account to the store account. + +The `Payment/Capture` command initiates the capture action. By default, this command is initiated when a Back Office user clicks **Ship** on the **Order Overview** page. + +Optionally, you can change and configure your own payment OMS based on `ForeignPaymentStateMachine01.xml` from the core package and change this behavior according to your business flow. For more information about OMS configuration, see [Install the Order Management feature](/docs/pbc/all/order-management-system/{{page.version}}/base-shop/install-and-upgrade/install-features/install-the-order-management-feature.html). + +To configure your payment OMS based on `ForeignPaymentStateMachine01.xml`, copy `ForeignPaymentStateMachine01.xml` with the `Subprocess` folder to the project root `config/Zed/oms`. Then, change the file's name and the value of ` + State machine example + +```xml + + + + + + + + + + + + + + + + + + + + + + + ready for dispatch + payment capture pending + capture payment + + + + + + + + + + + + + + + + + + + +``` + + + +By default, the timeout for the payment authorization action is set to seven days. If the order is in the `payment authorization pending` state, after a day the order state is changed to `payment authorization failed`. Another day later, the order is transitioned to the `payment authorization canceled` state. + +To decrease or increase timeouts or change the states, update `config/Zed/oms/Subprocess/PaymentAuthorization01.xml`. + +For more information on the integration of ACP payment methods with OMS configuration, see [Integrate ACP payment apps with Spryker OMS configuration](/docs/dg/dev/acp/integrate-acp-payment-apps-with-spryker-oms-configuration.html). diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md new file mode 100644 index 00000000000..c413e9b6d7e --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md @@ -0,0 +1,21 @@ +--- +title: Processing refunds with Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. + +During this period, Stripe attempts to process the request, which results in success or failure: +* Success: the items transition to the `payment refund succeeded` state, although the payment isn't refunded at this step. +* Failure: the items transition to the `payment refund failed` state. + +These states are used to track the refund status and inform the Back Office user. In a few days after an order is refunded in the Back Office, Stripe finalizes the refund, causing the item states to change accordingly. Previously successful refunds may be declined and the other way around. + +If a refund fails, the Back Office user can go to the Stripe Dashboard to identify the cause of the failure. After resolving the issue, the item can be refunded again. + +In the default OMS configuration, seven days are allocated to Stripe to complete successful payment refunds. This is reflected in the Back Office by transitioning items to the `payment refunded` state. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md new file mode 100644 index 00000000000..b523eec3427 --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md @@ -0,0 +1,33 @@ +--- +title: Project guidelines for Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +redirect_from: + - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html + - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html + +--- + +This document provides comprehensive guidelines for integrating and utilizing Stripe in your projects through the Stripe App. + +Whether you are looking to implement Stripe for checkout in a headless application, as a hosted payment page, or using an iframe, this guide has you covered. + +Additionally, you will find detailed instructions on sending additional data to Stripe, retrieving and using payment details, and configuring the Order Management System (OMS). + +Each section is designed to help you maximize the potential of Stripe in your projects. Explore the links below to dive into the detailed guides and enhance your Stripe implementation with best practices and advanced techniques. + + +* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) +* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) +* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) +* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) +* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) +* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) +* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) +* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) +* [Change OOTB provided return URL's](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/change-default-return-urls.html) \ No newline at end of file diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md new file mode 100644 index 00000000000..ffb612ad5fb --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md @@ -0,0 +1,62 @@ +--- +title: Sending additional data to Stripe +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + +--- + +Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. + +```text +POST https://api.your-site.com/checkout +Content-Type: application/json +Accept-Language: en-US +Authorization: Bearer {{access_token}} + +{ + "data": { + "type": "checkout", + "attributes": { + "customer": { + ... + }, + "idCart": "{{idCart}}", + "billingAddress": { + ... + }, + "shippingAddress": { + ... + }, + "payments": [ + { + "paymentMethodName": "Stripe", + "paymentProviderName": "Stripe", + "additionalPaymentData": { + "custom-field-1": "my custom value 1", + "custom-field-2": "my custom value 2" + } + } + ], + "shipment": { + "idShipmentMethod": {{idMethod}} + } + } + } +} +``` + +The metadata sent using the field must meet the following criteria: + +| ATTRIBUTE | MAXIMUM VALUE | +| - | - | +| Key length | 40 characters | +| Value length | 500 characters | +| Key-value pairs | 50 pairs | + +When you pass metadata to Stripe, it's stored in the payment object and can be retrieved later. For example, this way you can pass an external ID to Stripe. + +When a `PaymentIntent` is created on the Stripe side, you can see your passed `additionalPaymentData` in the Stripe Dashboard. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md new file mode 100644 index 00000000000..624dcadb20f --- /dev/null +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md @@ -0,0 +1,288 @@ +--- +title: Stripe checkout with third-party frontends +description: Learn how to implement Stripe using ACP +last_updated: Nov 8, 2024 +template: howto-guide-template +related: + - title: Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html +--- + +This document describes the approaches to implementing Stripe checkout with third-party frontends. + +## Install modules + +Install or upgrade the modules to the specified or later versions: +- `spryker/kernel-app:1.2.0` +- `spryker/payment:5.24.0` +- `spryker/payments-rest-api:1.3.0` + +## Pre-order payment flow + +When Stripe is integrated into a headless application, orders are processed using a pre-order payment flow: + +1. The customer either selects Stripe as the payment method or [Stripe Elements](https://docs.stripe.com/payments/elements) is loaded by default. +2. The `InitializePreOrderPayment` Glue API endpoint (`glue.mysprykershop.com/payments`) is called with the following parameters: + * Payment provider name: Stripe + * Payment method name: Stripe + * Payment amount + * Quote data +3. Back Office sends the quote data and the payment amount to Stripe app through an API. +4. The payment with the given data is persisted in the Stripe app. +5. Stripe app requests `ClientSecret` and `PublishableKey` keys from Stripe through an API. +6. Stripe returns a JSON response with the following parameters: + * TransactionId + * ClientSecret + * PublishableKey + * Only for marketplaces: AccountId +7. Stripe Elements is rendered on the order summary page. See [Rendering the Stripe Elements on the summary page](#rendering-the-stripe-elements-on-the-summary-page) for rendering Stripe Elements. +8. The customer selects a payment method in Stripe Elements and submits the data. +9. The customer is redirected to the configured `return_url`, which makes an API request to persist the order in the Back Office: `glue.mysprykershop.com/checkout`. +10. The customer is redirected to the application's success page. +11. Stripe app confirms the pre-order payment using the plugin: `\Spryker\Zed\Payment\Communication\Plugin\Checkout\PaymentConfirmPreOrderPaymentCheckoutPostSavePlugin`. + The `order_reference` is passed to the Stripe app to be connected with `transaction_id`. +12. Stripe app processes the payment and sends a `PaymentUpdated` message to Spryker. +13. Depending on payment status, one of the following messages is returned through an asynchronous API: + * Payment is successful: `PaymentAuthorized` message. + * Payment is failed: `PaymentAuthorizationFailed` message. +14. Further on, the order is processed through the OMS. + +All payment related messages mentioned above are handled by `\Spryker\Zed\Payment\Communication\Plugin\MessageBroker\PaymentOperationsMessageHandlerPlugin`, which is registered in `MessageBrokerDependencyProvider`. + + +## Example of the headless checkout with Stripe + +The Payment selection in this example will be used on the Summary page. The following examples show how to implement the Stripe Payment App in a headless application. + +Before the customer is redirected to the summary page, all required data is collected: customer data, addresses, and selected shipment method. When the customer goes to the summary page, to get the data required for rendering the Stripe Elements, the application needs to call the `InitializePreOrderPayment` Glue API endpoint. + +### Pre-order payment initialization + +```JS + +async initializePreOrderPayment() { + const requestData = { + data: { + type: 'payments', + attributes: { + quote: QUOTE_DATA, + payment: { + amount: GRAND_TOTAL, // You will get it through the `/checkout-data?include=carts` endpoint + paymentMethodName: 'stripe', // taken from /checkout-data?include=payment-methods + paymentProviderName: 'stripe', // taken from /checkout-data?include=payment-methods + }, + preOrderPaymentData: { + "transactionId": this.transactionId, // This is empty in the first request but has to be used in further requests + }, + }, + }, + }; + + const responseData = await this.fetchHandler(`GLUE_APPLICATION_URL/payments`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, + }, + body: JSON.stringify(requestData), + }); + + const paymentProviderData = + responseData.data.attributes.preOrderPaymentData; + + this.transactionId = paymentProviderData.transactionId; + this.accountId = paymentProviderData.accountId; // only be used on the Direct business model. When using a Marketplace business model this will not be present. + + await this.setupStripe(); + } + +``` + +To identify the customer when initiating a request using Glue API, use the `Authorization` header for a logged-in customer and `X-Anonymous-Customer-Unique-Id` for a guest user. + +After a `PaymentIntent` is created using the Stripe API, a payment is created in the Stripe app. The response looks as follows: + +```JSON +{ + "data": { + "type": "payments", + "attributes": { + "isSuccessful": true, + "error": null, + "preOrderPaymentData": { + "transactionId": "pi_3Q3............", + "clientSecret": "pi_3Q3............_secret_R3WC2........", + "publishableKey": "pk_test_51OzEfB..............." + } + } + } +} +``` + +### Rendering the Stripe Elements on the summary page + +The `preOrderPaymentData` from the previous example is used to render Stripe Elements on the summary page: + +```JAVASCRIPT +async setupStripe() { + const paymentElementOptions = { + layout: 'accordion', // Change this to your needs + }; + + let stripeAccountDetails = {}; + + if (this.accountId) { // Only in Direct business model not in the Marketplace business model + stripeAccountDetails = { stripeAccount: this.accountId } + } + + const stripe = Stripe(this.publishableKey, stripeAccountDetails); + + const elements = stripe.elements({ + clientSecret: this.clientSecret, + }); + + const paymentElement = elements.create('payment', paymentElementOptions); + paymentElement.mount('#payment-element'); // Change this to the id of the HTML element you want to render the Stripe Elements to + + SUBMIT_BUTTON.addEventListener('click', async () => { + const { error } = await stripe.confirmPayment({ + elements, + confirmParams: { + return_url: `APPLICATION_URL/return-url?id=${idCart}`, // You need to pass the id of the cart to this request + }, + }); + if (error) { + // Add your error handling to this block. + } + }); + } +``` + +This sets up Stripe Elements on the summary page of your application. The customer can now select the Payment Method in Stripe Elements and submit the data. Then, the customer is redirected to the configured `return_url`, which makes another Glue API request to persist the order in the Back Office. After this, the customer should see the success page. + +When the customer submits the order, the payment data is sent to Stripe. Stripe may redirect them to another page, for example — PayPal, or redirect the customer to the specified `return_url`. The `return_url` must make another Glue API request to persist the order in the Back Office. + +### Persisting orders in the Back Office through the return URL + +Because an order can be persisted in the Back Office only after a successful payment, the application needs to handle the `return_url` and make a request to the Glue API to persist the order. + +
    + Request example + +```JAVASCRIPT +app.get('/return-url', async (req, res) => { + const paymentIntentId = req.query.payment_intent; + const clientSecret = req.query.payment_intent_client_secret; + const idCart = req.query.id; + + if (paymentIntentId) { + try { + const data = await fetchHandler(`GLUE_APPLICATION_URL/checkout`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN` + }, + body: JSON.stringify({ + data: { + type: 'checkout', + attributes: { + customer: CUSTOMER_DATA, + idCart: idCart, + billingAddress: BILLING_ADDRESS, + shippingAddress: SHIPPING_ADDRESS, + payments: [ + { + paymentMethodName: 'Stripe', + paymentProviderName: 'Stripe', + }, + ], + shipment: SHIPMENT_DATA, + preOrderPaymentData: { + transactionId: paymentIntentId, + clientSecret: clientSecret, + }, + }, + }, + }), + }); + + if (data) { + res.send('

    Order Successful!

    '); + } else { + res.send('

    Order Failed!

    '); + } + } catch (error) { + console.error(error); + res.send('

    Order Failed!

    '); + } + } else { + res.send('

    Invalid Payment Intent!

    '); + } +}); +``` + +
    + +After this, the customer should be redirected to the success page or in case of a failure to an error page. + + +{% info_block infoBox %} +- When the customer reloads the summary page, which renders `PaymentElements`, an extra unnecessary API request is sent to initiate `preOrder Payment`. Stripe can handle these without issues. However, you can also prevent unnecessary API calls from being sent on the application side by, for example, checking if relevant data has changed. +- When the customer leaves the summary page, the payment is created in Stripe app and Stripe. However, in the Back Office, there is a stale payment without an order. +- To enable the customer to abort the payment process, you can implement the cancellation of payments through Glue API. + +{% endinfo_block %} + + + +### Cancelling payments through Glue API + +The following request cancels a PaymentIntent on the Stripe side and shows a `canceled` PaymentIntent in the Stripe Dashboard. You can implement this in your application to enable the customer to cancel the payment process. + +
    + Cancel a payment through Glue API + +```JAVASCRIPT +async cancelPreOrderPayment() { + const requestData = { + data: { + type: 'payment-cancellations', + attributes: { + payment: { + paymentMethodName: 'stripe', + paymentProviderName: 'stripe', + }, + preOrderPaymentData: { + transactionId: this.transactionId, + }, + }, + }, + }; + + const url = `GLUE_APPLICATION_URL/payment-cancellations`; + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ACCESS_TOKEN`, + }, + body: JSON.stringify(requestData), + }); + + if (!response.ok) { + throw new Error('Network response was not ok'); + } + + const responseData = await response.json(); + + if (responseData.data.attributes.isSuccessful === true) { + // Add your logic here when the payment cancellation was successful + } else { + // Add your logic here when the payment cancellation has failed + } + } +``` + +
    From 16a88132eb06cee0faa31263d2a05cc1cfab2ab3 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Dec 2024 11:46:26 +0200 Subject: [PATCH 145/199] comments --- .../install-features/202410.0/install-the-payments-feature.md | 2 +- .../202410.0/base-shop/payment-method-strategies.md | 2 +- ...ne-paypal-express-payment-flow-in-headless-applications.md | 4 +++- .../implement-stripe-checkout-as-a-hosted-payment-page.md | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 1f0c492ed62..20de7951870 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -270,7 +270,7 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig 1. Add several products to cart and proceed to the express checkout flow. 2. On the summary page, click the **Back to cart** button. 3. To proceed to the regular checkout, click **Checkout**. - This opens the address step of the regular checkout. + Make sure this opens the address step of the regular checkout. {% endinfo_block %} diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index 2777bb55c60..f4118517c24 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -16,7 +16,7 @@ The following strategies are available: The strategy is defined in the `PaymentMethodTransfer` object. The object is used to transfer the payment method data between the shop and the PSP. -When an app is configured in the ACP app Catalog, the `PaymentMethod` data is sent to Spryker using an async API and is persisted in the database. The configuration is a JSON string which is mapped to the `PaymentMethodTransfer` object. +When an app is configured in the ACP app Catalog, the `PaymentMethod` data is sent to Spryker using an async API and is persisted in the database. The configuration is a JSON string, which is mapped to the `PaymentMethodTransfer` object. `PaymentMethodTransfer` contains a `PaymentMethodappConfigurationTransfer` object. The `PaymentMethodappConfigurationTransfer` object contains the `CheckoutStrategyTransfer` object. `CheckoutStrategyTransfer` contains the strategy name. The strategy name is used to determine where and how the payment method or PSP elements are displayed in the shop. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md index 74703add994..581f1a9d16d 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/app-composition-platform-integration/payment-method-flows/payone-paypal-express-payment-flow-in-headless-applications.md @@ -68,6 +68,8 @@ For more details on payment methods in a headless chechout, see [Payment Method #### Preorder payment initialization +This script example makes a Glue API request to the `/payments` API endpoint to initialize a preorder payment. The `transactionId` is empty in the first request but needs to be used in further requests. The quote data and the payment method data also needs to be passed. The response will cantain `preOrderPaymentData`, which will be used in further requests. + ```JS async initializePreOrderPayment() { @@ -129,7 +131,7 @@ After making a request to the PayOne API, the payment is created in the PayOne a } ``` -After the customer clicks **Complete Purchase** in the PayPal Express modal, he should be redirected to the summary page. +After the customer clicks **Complete Purchase** in the PayPal Express modal, they're redirected to the summary page. #### Getting the customer data diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md index ddccb4be8a5..afaad49bf80 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md @@ -1,5 +1,5 @@ --- -title: Implement Stripe checkout as a hosted payment page +title: Prepare project for implementing Stripe checkout as a hosted payment page description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template @@ -8,7 +8,7 @@ related: link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html --- -Implementing Stripe checkout as a hosted payment page is usually needed if `@CheckoutPage/views/payment/payment.twig` is overwritten on the project level. To implement Stripe checkout as a hosted payment page, follow the steps: +If your shop is live or `@CheckoutPage/views/payment/payment.twig` is overwritten on the project level, follow the steps to prepare your project to implement Stripe checkout as a hosted payment page: 1. Make sure that a form molecule uses the following code for the payment selection choices: From 831286ad4ef1097575ca062a957e7bf6f0e68f96 Mon Sep 17 00:00:00 2001 From: Denys Sokolov Date: Wed, 18 Dec 2024 11:04:29 +0100 Subject: [PATCH 146/199] ACP-4467: Added fixes. --- .../install-features/202410.0/install-the-payments-feature.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index 1f0c492ed62..316750d1091 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -594,11 +594,10 @@ class PaymentAppDependencyProvider extends SprykerPaymentAppDependencyProvider Make sure that: * Enabled the express checkout payment method for the payment app. - * Depends on the payment app enabled in the project. - * Not all payment methods support the express checkout flow. * The express checkout button is displayed on the Cart page. * Clicking the express checkout button opens the express checkout page. * You can place an order using the express checkout flow. +* On the summary page you will see the default shipment method applied to the order. {% endinfo_block %} From a01c521241f5edb6cc2f7331a5fa54c27c34ac91 Mon Sep 17 00:00:00 2001 From: james-hooper-spryker Date: Wed, 18 Dec 2024 11:09:59 +0000 Subject: [PATCH 147/199] DEV Misc SEO Update changed the meta description for misc articles within the developing standalone modules section in dev docs --- docs/dg/dev/code-contribution-guide.md | 4 ++-- docs/dg/dev/code-generator.md | 9 +++++---- docs/dg/dev/data-import/202410.0/data-import.md | 2 +- .../create-standalone-modules.md | 2 +- .../developing-standalone-modules.md | 2 +- .../driving-the-usage-of-standalone-modules.md | 2 +- .../ensuring-quality-in-standalone-modules.md | 2 +- .../prepare-for-standalone-module-development.md | 2 +- .../publish-standalone-modules-on-github.md | 2 +- .../publish-standalone-modules-on-packagist.md | 2 +- .../test-the-compatibility-of-standalone-modules.md | 2 +- 11 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/dg/dev/code-contribution-guide.md b/docs/dg/dev/code-contribution-guide.md index 289f6e36360..405ebdbc49f 100644 --- a/docs/dg/dev/code-contribution-guide.md +++ b/docs/dg/dev/code-contribution-guide.md @@ -1,6 +1,6 @@ --- title: Code contribution guide -description: Contribute to Spryker repositories +description: Learn how you can contribute to Spryker Repositories with this code contribution guide. last_updated: Apr 3, 2024 template: concept-topic-template originalLink: https://documentation.spryker.com/2021080/docs/code-contribution-guide @@ -9,7 +9,7 @@ redirect_from: - /docs/scos/dev/code-contribution-guide.html related: - title: Contribute to the documentation - link: docs/scos/user/intro-to-spryker/contribute-to-the-documentation/contribute-to-the-documentation.html + link: docs/about/all/about-the-docs/contribute-to-the-docs/contribute-to-the-docs.html --- diff --git a/docs/dg/dev/code-generator.md b/docs/dg/dev/code-generator.md index 272da22a410..c4243a6cd72 100644 --- a/docs/dg/dev/code-generator.md +++ b/docs/dg/dev/code-generator.md @@ -1,5 +1,6 @@ --- title: Code Generator +description: The code Generator module can generate Yves, Zed, Client Service and shared application code for your Spryker based project. last_updated: Nov 18, 2020 template: concept-topic-template originalLink: https://documentation.spryker.com/v1/docs/code-generator @@ -15,13 +16,13 @@ redirect_from: - /docs/scos/dev/code-generator.html related: - title: Cronjob scheduling - link: docs/scos/dev/sdk/cronjob-scheduling.html + link: docs/dg/dev/backend-development/cronjobs/cronjobs.html - title: Data import - link: docs/dg/dev/data-import/page.version/data-import.html + link: docs/dg/dev/data-import/202410.0/data-import.html - title: Development virtual machine, docker containers & console - link: docs/scos/dev/sdk/development-virtual-machine-docker-containers-and-console.html + link: docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.html - title: Twig and TwigExtension - link: docs/scos/dev/sdk/twig-and-twigextension.html + link: docs/dg/dev/integrate-and-configure/twig-and-twigextension.html --- The CodeGenerator module can generate your project code. diff --git a/docs/dg/dev/data-import/202410.0/data-import.md b/docs/dg/dev/data-import/202410.0/data-import.md index 81bdf9d7b09..276862a1ffe 100644 --- a/docs/dg/dev/data-import/202410.0/data-import.md +++ b/docs/dg/dev/data-import/202410.0/data-import.md @@ -1,6 +1,6 @@ --- title: Data import -description: Import data from other systems into your Spryker Commerce OS project +description: Learn how to import data from other systems into your Spryker Cloud Commerce OS based project last_updated: Sep 7, 2022 template: concept-topic-template redirect_from: diff --git a/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md index 712b0ece6a1..e428ce03963 100644 --- a/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/create-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Create standalone modules -description: How to develop a Spryker module +description: Learn how you can create standalone modules like extending modules or enabling custom namespace within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md index 1575066e41d..f096b03bdb9 100644 --- a/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/developing-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Developing standalone modules -description: Learn how to develop standalone modules +description: Learn how you can develop standalone modules like extending modules or enabling custom namespace within your Spryker based projects. last_updated: Jul 7, 2024 template: concept-topic-template --- diff --git a/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md index a9b3052cc25..1b55af6c8eb 100644 --- a/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/driving-the-usage-of-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Driving the usage of standalone modules -description: Drive Usage and Support with Problems +description: Learn how you can drive usage and support with problems within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md index 8c7f804410a..0dfe270f0c8 100644 --- a/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/ensuring-quality-in-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Ensuring quality in standalone modules -description: Ensure Quality +description: Learn how you can ensure quality in standalone modules and adhere to Spryker's code quality within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md b/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md index 5c16cbb7823..7a841a10b74 100644 --- a/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md +++ b/docs/dg/dev/developing-standalone-modules/prepare-for-standalone-module-development.md @@ -1,6 +1,6 @@ --- title: Prepare for standalone module development -description: Onboard and learn +description: Learn how you can prepare for standalone module development within your Spryker based projects. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md index 08fd88b60cb..d0d335492f0 100644 --- a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md +++ b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-github.md @@ -1,6 +1,6 @@ --- title: Publish standalone modules on GitHub -description: Learn how to publish a standalone module on GitHub +description: Learn how to publish a standalone module on GitHub with your github account and github repository. last_updated: Jun 7, 2024 template: howto-guide-template --- diff --git a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md index 859c1e9a737..29d055f7249 100644 --- a/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md +++ b/docs/dg/dev/developing-standalone-modules/publish-standalone-modules-on-packagist.md @@ -1,6 +1,6 @@ --- title: Publish standalone modules on Packagist -description: Learn how to publish a module on Packagist for distribution +description: Learn how to publish a module on Packagist for distribution within your Spryker Cloud Commerce OS Project. last_updated: Jun 7, 2024 template: howto-guide-template diff --git a/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md b/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md index f8188a78b30..9fed53747a9 100644 --- a/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md +++ b/docs/dg/dev/developing-standalone-modules/test-the-compatibility-of-standalone-modules.md @@ -1,6 +1,6 @@ --- title: Test the compatibility of standalone modules -description: Ensure compatibility +description: Learn how to test the compatibility of standalone modules within your Spryker based project. last_updated: Jun 7, 2024 template: howto-guide-template --- From 4ab4af32f8385d154bd59026673802bd1ba5ab7c Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Dec 2024 15:20:07 +0200 Subject: [PATCH 148/199] sidebar --- _data/sidebars/pbc_all_sidebar.yml | 2 -- .../202410.0/install-the-payments-feature.md | 31 +++++++++---------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index cadb020aa59..45c500744a0 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2604,8 +2604,6 @@ entries: url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/install-and-configure-stripe-prerequisites.html - title: Connect and configure url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/connect-and-configure-stripe.html - - title: Project guidelines - url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe.html - title: Disconnect url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/disconnect-stripe.html - title: Project guidelines diff --git a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md index db4c8d49421..73bb3f2980e 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-payments-feature.md @@ -8,13 +8,11 @@ The current feature integration guide only adds the following functionalities: * Payment Back Office UI * Payment method per store * Payment data import -* Payment App express checkout flow. +* Payment app express checkout flow {% endinfo_block %} -## Install feature core - -### Prerequisites +## Prerequisites To start the feature integration, overview and install the necessary features: @@ -22,7 +20,7 @@ To start the feature integration, overview and install the necessary features: | --- | --- | | Spryker Core | {{page.version}} | -### 1) Install the required modules +## 1) Install the required modules Install the required modules using Composer: @@ -47,7 +45,7 @@ Make sure that the following modules have been installed: {% endinfo_block %} -### 2) Set up Express Checkout payments configuration +## 2) Set up Express Checkout payments configuration 1. Configure the checkout payment step to hide the express checkout payment methods. For example, if you're using the ACP Payone app, you can exclude the `payone-paypal-express` payment method. @@ -275,7 +273,7 @@ class PaymentAppShipmentConfig extends SprykerPaymentAppShipmentConfig {% endinfo_block %} -### 2) Set up database schema and transfer objects +## 2) Set up database schema and transfer objects Apply database changes and generate entity and transfer changes: @@ -312,9 +310,9 @@ Make sure the following changes have been applied in transfer objects: {% endinfo_block %} -### 3) Import data +## 3) Import data -#### Import Payment Methods +### Import Payment Methods {% info_block infoBox "Info" %} @@ -437,7 +435,7 @@ Make sure that the configured data has been added to the `spy_payment_method`, ` {% endinfo_block %} -### 4) Add translations +## 4) Add translations 1. Append the glossary according to your configuration: @@ -456,7 +454,7 @@ payment_app_widget.error.incorrect_quote,"Angebot nicht gefunden, Sitzung ist m console data:import glossary ``` -### 5) Set up behavior +## 5) Set up behavior 1. Configure data import to use your data on the project level. @@ -592,12 +590,11 @@ class PaymentAppDependencyProvider extends SprykerPaymentAppDependencyProvider {% info_block warningBox "Verification" %} -Make sure that: -* Enabled the express checkout payment method for the payment app. +Make sure the following applies: * The express checkout button is displayed on the Cart page. * Clicking the express checkout button opens the express checkout page. -* You can place an order using the express checkout flow. -* On the summary page you will see the default shipment method applied to the order. +* You can place an order using the express checkout. +* On the summary page, a default shipment method applied to the order is displayed. {% endinfo_block %} @@ -672,13 +669,13 @@ class CartDependencyProvider extends SprykerCartDependencyProvider {% endinfo_block %} -### 6) Replace deprecated funtionality +## 6) Replace deprecated funtionality Use the `PaymentDataImport` module instead of the following: * `SalesPaymentMethodTypeInstallerPlugin` plugin * `PaymentConfig::getSalesPaymentMethodTypes()` config method -### 7) Set up widgets +## 7) Set up widgets 1. Register the following plugins to enable widgets: From 193f500deb61638dfd8d11f089ad4d0184e1a7a2 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Dec 2024 16:24:08 +0200 Subject: [PATCH 149/199] related links --- _data/sidebars/pbc_all_sidebar.yml | 2 +- .../base-shop/payment-method-strategies.md | 8 +++--- ...ed-the-stripe-payment-page-as-an-iframe.md | 11 +++++++- .../oms-configuration-for-stripe.md | 10 +++++++ .../processing-refunds-with-stripe.md | 10 +++++++ .../project-guidelines-for-stripe.md | 28 +++++++------------ ...ripe-checkout-as-a-hosted-payment-page.md} | 12 +++++++- .../sending-additional-data-to-stripe.md | 11 +++++++- ...ipe-checkout-with-third-party-frontends.md | 10 +++++++ 9 files changed, 76 insertions(+), 26 deletions(-) rename docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/{implement-stripe-checkout-as-a-hosted-payment-page.md => project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.md} (54%) diff --git a/_data/sidebars/pbc_all_sidebar.yml b/_data/sidebars/pbc_all_sidebar.yml index 45c500744a0..359f59aee44 100644 --- a/_data/sidebars/pbc_all_sidebar.yml +++ b/_data/sidebars/pbc_all_sidebar.yml @@ -2614,7 +2614,7 @@ entries: - title: Embed the Stripe payment page as an iframe url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html - title: Implement Stripe checkout as a hosted payment page - url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.html + url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html - title: OMS configuration for Stripe url: /docs/pbc/all/payment-service-provider/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html - title: Processing refunds with Stripe diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md index f4118517c24..ee1fd40e2be 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/payment-method-strategies.md @@ -9,14 +9,14 @@ Spryker and Payment Service Provider (PSP) apps support various payment methods. The following strategies are available: -- hosted-payment-page: After an order is submitted to complete the payment, the customer is redirected to a hosted payment page of the PSP. -- express-checkout: One or more buttons are displayed e.g. on the Cart Page or the PDP Page. +- hosted-payment-page: After an order is submitted, to complete the payment, the customer is redirected to a hosted payment page of the PSP. +- express-checkout: One or more express checkout buttons are displayed, for example–on the Cart or PDP page. The strategy is defined in the `PaymentMethodTransfer` object. The object is used to transfer the payment method data between the shop and the PSP. -When an app is configured in the ACP app Catalog, the `PaymentMethod` data is sent to Spryker using an async API and is persisted in the database. The configuration is a JSON string, which is mapped to the `PaymentMethodTransfer` object. +When an app is configured in the ACP app Catalog, the `PaymentMethod` data and the configuration is sent to Spryker using an async API and is persisted in the database. The configuration is a JSON string, which is mapped to the `PaymentMethodTransfer` object. `PaymentMethodTransfer` contains a `PaymentMethodappConfigurationTransfer` object. The `PaymentMethodappConfigurationTransfer` object contains the `CheckoutStrategyTransfer` object. `CheckoutStrategyTransfer` contains the strategy name. The strategy name is used to determine where and how the payment method or PSP elements are displayed in the shop. @@ -66,7 +66,7 @@ The `payment_service_provider_data` contains the data that can be used by projec The app knows only which query parameters (keys) are needed. The shop knows which values are needed and where to get them from. -For example the script must be like `https://example.com/js?currency=EUR`. The app knows that the `currency` is needed but can't know which one is used in the shop. The shop knows that the used `currency` is `EUR`. +For example the script URL can be `https://example.com/js?currency=EUR`. The app knows that the `currency` is needed but can't know which one is used in the shop. The shop knows that the used `currency` is `EUR`. The app defines a script as follows: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md index bd1aaf34ac3..0a4e54b8325 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.md @@ -6,7 +6,16 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html - + - title: Implement Stripe checkout as a hosted payment page + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html + - title: OMS configuration for Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Processing refunds with Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Sending additional data to Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html + - title: Stripe checkout with third-party frontends + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html --- By default, the Stripe App payment flow assumes that the payment page is on another domain. When users place an order, they're redirected to the Stripe payment page. To improve the user experience, you can embed the Stripe payment page directly into your website as follows: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md index b1b53b29867..33ab4981b5c 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.md @@ -6,6 +6,16 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + - title: Embed the Stripe payment page as an iframe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: Implement Stripe checkout as a hosted payment page + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html + - title: Processing refunds with Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Sending additional data to Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html + - title: Stripe checkout with third-party frontends + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html --- diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md index c413e9b6d7e..47090a22cce 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.md @@ -6,6 +6,16 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + - title: Embed the Stripe payment page as an iframe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: Implement Stripe checkout as a hosted payment page + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html + - title: OMS configuration for Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Sending additional data to Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html + - title: Stripe checkout with third-party frontends + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html --- In the default OMS configuration, a refund can be done for an order or an individual item. The refund action is initiated by a Back Office user triggering the `Payment/Refund` command. The selected item enters the `payment refund pending` state, awaiting the response from Stripe. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md index b523eec3427..18cd01fee4f 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-guidelines-for-stripe.md @@ -6,28 +6,20 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html -redirect_from: - - /docs/pbc/all/payment-service-provider/202311.0/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/install-stripe.html - - /docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/stripe/integrate-stripe.html - --- -This document provides comprehensive guidelines for integrating and utilizing Stripe in your projects through the Stripe App. +This document provides comprehensive guidelines for integrating and utilizing Stripe in your projects through the Stripe App. -Whether you are looking to implement Stripe for checkout in a headless application, as a hosted payment page, or using an iframe, this guide has you covered. +Whether you are looking to implement Stripe for checkout in a headless application, as a hosted payment page, or using an iframe, this guide has you covered. -Additionally, you will find detailed instructions on sending additional data to Stripe, retrieving and using payment details, and configuring the Order Management System (OMS). +Additionally, you will find detailed instructions on sending additional data to Stripe, retrieving and using payment details, and configuring the Order Management System (OMS). -Each section is designed to help you maximize the potential of Stripe in your projects. Explore the links below to dive into the detailed guides and enhance your Stripe implementation with best practices and advanced techniques. +Each section is designed to help you maximize the potential of Stripe in your projects. Explore the links below to dive into the detailed guides and enhance your Stripe implementation with best practices and advanced techniques. -* [OMS configuration](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms.html) -* [Implementing Stripe for checkout in a headless application](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/headless.html) -* [Implementing Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/hosted-payment-page.html) -* [Implementing Stripe payment page using an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/iframe.html) -* [Refund handling with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/refund.html) -* [Retrieving and using payment details from Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/payment-details.html) -* [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/send-additional-data-to-stripe.html) -* [Retrieve and use payment details from third-party PSPs](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/retrieve-and-use-payment-details-from-third-party-psps.html) -* [Change OOTB provided return URL's](https://docs.spryker.com/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/change-default-return-urls.html) \ No newline at end of file +- [Embed the Stripe payment page as an iframe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html) +- [Implement Stripe checkout as a hosted payment page](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html) +- [OMS configuration for Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html) +- [Processing refunds with Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html) +- [Sending additional data to Stripe](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html) +- [Stripe checkout with third-party frontends](/docs/pbc/all/payment-service-provider/{{page.version}}/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html) diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.md similarity index 54% rename from docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md rename to docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.md index afaad49bf80..f92c5cd8872 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/implement-stripe-checkout-as-a-hosted-payment-page.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.md @@ -1,11 +1,21 @@ --- -title: Prepare project for implementing Stripe checkout as a hosted payment page +title: Project prerequisites for implementing Stripe checkout as a hosted payment page description: Learn how to implement Stripe using ACP last_updated: Nov 8, 2024 template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + - title: Embed the Stripe payment page as an iframe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: OMS configuration for Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Processing refunds with Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Sending additional data to Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html + - title: Stripe checkout with third-party frontends + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html --- If your shop is live or `@CheckoutPage/views/payment/payment.twig` is overwritten on the project level, follow the steps to prepare your project to implement Stripe checkout as a hosted payment page: diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md index ffb612ad5fb..1a2c1f9b4de 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.md @@ -6,7 +6,16 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html - + - title: Embed the Stripe payment page as an iframe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: Implement Stripe checkout as a hosted payment page + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html + - title: OMS configuration for Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Processing refunds with Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Stripe checkout with third-party frontends + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.html --- Stripe accepts metadata passed using API calls. To send additional data to Stripe, the `QuoteTransfer::PAYMENT::ADDITIONAL_PAYMENT_DATA` field is used; the field is a key-value array. When sending requests using Glue API, pass the `additionalPaymentData` field in the `POST /checkout` request. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md index 624dcadb20f..33641a321c6 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/stripe-checkout-with-third-party-frontends.md @@ -6,6 +6,16 @@ template: howto-guide-template related: - title: Stripe link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/stripe.html + - title: Embed the Stripe payment page as an iframe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/embed-the-stripe-payment-page-as-an-iframe.html + - title: Implement Stripe checkout as a hosted payment page + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/project-prerequisites-for-implementing-Stripe-checkout-as-a-hosted-payment-page.html + - title: OMS configuration for Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/oms-configuration-for-stripe.html + - title: Processing refunds with Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/processing-refunds-with-stripe.html + - title: Sending additional data to Stripe + link: docs/pbc/all/payment-service-provider/page.version/base-shop/third-party-integrations/stripe/project-guidelines-for-stripe/sending-additional-data-to-stripe.html --- This document describes the approaches to implementing Stripe checkout with third-party frontends. From 938e81652afa4c8e35a9ef9d1963d781eba559fb Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Dec 2024 16:49:31 +0200 Subject: [PATCH 150/199] tw-review --- .../security-release-notes-202212.0.md | 4 +- _data/sidebars/about_all_sidebar.yml | 2 + _data/sidebars/ca_dev_sidebar.yml | 2 +- ...ct-folder-can-not-be-mounted-due-to-sip.md | 6 +- .../mac-osx-iterm2-locale-error.md | 2 +- .../mac-osx-wrong-curl-version-error.md | 2 +- ...-spryker-in-vagrant-installation-issues.md | 2 +- .../multistore-infrastructure-options.md | 2 +- _drafts/for-commerce-quest/faq.md | 2 +- ...ebpack-js-scss-for-zed-on-project-level.md | 2 +- .../202307.0/install-dynamic-multistore.md | 4 +- .../install-the-approval-process-feature.md | 4 +- .../202307.0/install-the-cms-feature.md | 2 +- .../install-the-order-management-feature.md | 2 +- ...all-the-persistent-cart-sharing-feature.md | 2 +- ...nstall-the-product-bundles-cart-feature.md | 2 +- .../install-the-merchant-switcher-feature.md | 2 +- .../202311.0/install-dynamic-multistore.md | 4 +- .../install-the-approval-process-feature.md | 4 +- .../202311.0/install-the-cms-feature.md | 2 +- .../install-the-order-management-feature.md | 2 +- ...all-the-persistent-cart-sharing-feature.md | 2 +- ...nstall-the-product-bundles-cart-feature.md | 2 +- .../install-the-merchant-switcher-feature.md | 2 +- .../202404.0/install-dynamic-multistore.md | 2 +- .../install-the-approval-process-feature.md | 4 +- .../202404.0/install-the-cms-feature.md | 2 +- .../install-the-order-management-feature.md | 2 +- ...all-the-persistent-cart-sharing-feature.md | 2 +- ...nstall-the-product-bundles-cart-feature.md | 2 +- .../install-the-merchant-switcher-feature.md | 2 +- .../202410.0/install-dynamic-multistore.md | 2 +- .../install-the-approval-process-feature.md | 4 +- .../202410.0/install-the-cms-feature.md | 2 +- .../install-the-order-management-feature.md | 2 +- ...all-the-persistent-cart-sharing-feature.md | 2 +- ...nstall-the-product-bundles-cart-feature.md | 2 +- .../install-the-merchant-switcher-feature.md | 2 +- .../upgrade-the-catalog-module.md | 2 +- .../upgrade-the-category-module.md | 2 +- ...the-cms-block-category-connector-module.md | 2 +- .../upgrade-the-price-module.md | 2 +- _templates/module-upgrade-guide-template.md | 2 +- .../security-release-notes-202302.0.md | 2 +- .../security-release-notes-202306.0.md | 2 +- .../security-release-notes-202403.0.md | 2 +- .../security-release-notes-202412.0.md | 62 +++++++++++-------- ...ion-test-by-port-zero-executive-summary.md | 2 +- .../general-product-safety-regulation.md | 2 +- .../all/support/using-the-support-portal.md | 4 +- .../jenkins-operational-best-practices.md | 6 +- docs/ca/dev/environments-overview.md | 2 +- .../multistore-setup-options.md | 6 +- docs/ca/dev/preparation-for-going-live.md | 2 +- docs/ca/dev/set-up-dns.md | 2 +- ...s-due-to-a-failed-docker-authentication.md | 2 +- .../troubleshooting-deployment-issues.md | 2 +- .../architecture/architectural-convention.md | 2 +- docs/dg/dev/architecture/technology-stack.md | 2 +- .../cronjobs/optimizing-jenkins-execution.md | 2 +- ...hout-p&s-and-data-importers-refactoring.md | 2 +- .../get-an-overview-of-the-used-plugins.md | 2 +- .../create-and-configure-zed-tables.md | 2 +- .../monitorable-process-guidelines.md | 2 +- .../process-documentation-guidelines.md | 2 +- docs/dg/dev/code-contribution-guide.md | 2 +- ...porting-product-data-with-a-single-file.md | 2 +- ...porting-product-data-with-a-single-file.md | 2 +- ...porting-product-data-with-a-single-file.md | 2 +- .../oryx-server-side-rendering.md | 2 +- .../styling/oryx-icon-system.md | 2 +- .../oryx-managing-component-options.md | 2 +- .../202311.0/yves/multi-theme.md | 2 +- .../oryx-server-side-rendering.md | 2 +- .../styling/oryx-icon-system.md | 2 +- .../oryx-managing-component-options.md | 2 +- .../202404.0/yves/multi-theme.md | 2 +- .../oryx-server-side-rendering.md | 2 +- .../styling/oryx-icon-system.md | 2 +- .../oryx-managing-component-options.md | 2 +- .../202410.0/yves/multi-theme.md | 2 +- .../dead-code-checker.md | 2 +- .../architecture-performance-guidelines.md | 6 +- ...the-publish-and-synchronization-process.md | 2 +- ...integrate-multi-queue-publish-structure.md | 2 +- .../dev/sdks/sdk/development-tools/phpstan.md | 2 +- docs/dg/dev/supported-versions-of-php.md | 2 +- .../phpstan-memory-issues.md | 2 +- ...oud-adapt-the-filesystem-based-features.md | 2 +- .../migrate-to-cloud-restore-es-and-redis.md | 2 +- .../upgrade-publish-and-sync.md | 2 +- .../upgrade-and-migrate/upgrade-to-php-83.md | 2 +- .../upgrade-to-symfony-5.md | 4 +- docs/dg/dev/zed-api/zed-api-beta.md | 2 +- .../amazon-quicksight.md | 2 +- ...t-methods-when-submitting-checkout-data.md | 2 +- ...e-shipments-when-checking-out-purchases.md | 2 +- ...t-methods-when-submitting-checkout-data.md | 2 +- ...e-shipments-when-checking-out-purchases.md | 2 +- ...t-methods-when-submitting-checkout-data.md | 2 +- ...e-shipments-when-checking-out-purchases.md | 2 +- .../quick-add-to-cart-feature-overview.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- .../glue-api-submit-checkout-data.md | 2 +- .../quick-add-to-cart-feature-overview.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- .../glue-api-submit-checkout-data.md | 2 +- .../quick-add-to-cart-feature-overview.md | 2 +- .../check-out/glue-api-check-out-purchases.md | 2 +- .../glue-api-submit-checkout-data.md | 2 +- .../glue-api-retrieve-cms-pages.md | 2 +- .../glue-api-retrieve-cms-pages.md | 2 +- .../glue-api-retrieve-cms-pages.md | 2 +- ...sending-requests-with-data-exchange-api.md | 4 +- ...sending-requests-with-data-exchange-api.md | 4 +- .../promotions-discounts-feature-overview.md | 2 +- .../promotions-discounts-feature-overview.md | 2 +- .../promotions-discounts-feature-overview.md | 2 +- .../202311.0/base-shop/delete-stores.md | 2 +- .../202404.0/base-shop/delete-stores.md | 2 +- .../202410.0/base-shop/delete-stores.md | 2 +- ...glue-api-authenticate-as-a-company-user.md | 2 +- ...glue-api-authenticate-as-a-company-user.md | 2 +- ...glue-api-authenticate-as-a-company-user.md | 2 +- ...merchant-opening-hours-feature-overview.md | 2 +- ...merchant-opening-hours-feature-overview.md | 2 +- ...merchant-opening-hours-feature-overview.md | 2 +- .../vshn.md | 2 +- .../vshn.md | 2 +- .../vshn.md | 2 +- .../common-pitfalls-in-oms-design.md | 4 +- ...er-process-modelling-via-state-machines.md | 2 +- ...external-erp-services-for-order-updates.md | 4 +- .../reclamations-feature-overview.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...place-order-management-feature-overview.md | 2 +- .../marketplace-order-overview.md | 2 +- ...er-process-modelling-via-state-machines.md | 2 +- ...external-erp-services-for-order-updates.md | 4 +- .../reclamations-feature-overview.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...place-order-management-feature-overview.md | 2 +- .../marketplace-order-overview.md | 2 +- ...er-process-modelling-via-state-machines.md | 2 +- ...external-erp-services-for-order-updates.md | 4 +- .../reclamations-feature-overview.md | 2 +- ...ine-cookbook-state-machine-fundamentals.md | 2 +- .../manage-marketplace-orders.md | 2 +- ...place-order-management-feature-overview.md | 2 +- .../marketplace-order-overview.md | 2 +- .../manual-integration/integrate-payone.md | 2 +- .../ratenkauf-by-easycredit.md | 2 +- .../manual-integration/integrate-payone.md | 2 +- .../ratenkauf-by-easycredit.md | 2 +- .../manual-integration/integrate-payone.md | 2 +- .../ratenkauf-by-easycredit.md | 2 +- docs/pbc/all/pbc.md | 2 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- ...e-million-prices-in-spryker-commerce-os.md | 4 +- .../packaging-units-feature-overview.md | 2 +- .../import-product-data-with-a-single-file.md | 2 +- .../decimal-stock-migration-concept.md | 2 +- ...at-stock-for-products-migration-concept.md | 2 +- .../glue-api-retrieve-alternative-products.md | 2 +- .../packaging-units-feature-overview.md | 2 +- .../import-product-data-with-a-single-file.md | 2 +- .../decimal-stock-migration-concept.md | 2 +- ...at-stock-for-products-migration-concept.md | 2 +- .../glue-api-retrieve-alternative-products.md | 2 +- .../packaging-units-feature-overview.md | 2 +- .../import-product-data-with-a-single-file.md | 2 +- .../decimal-stock-migration-concept.md | 2 +- ...at-stock-for-products-migration-concept.md | 2 +- .../glue-api-retrieve-alternative-products.md | 2 +- .../best-practices/data-driven-ranking.md | 6 +- .../algolia/algolia.md | 2 +- .../best-practices/data-driven-ranking.md | 6 +- .../algolia/algolia.md | 2 +- .../best-practices/data-driven-ranking.md | 6 +- .../algolia/algolia.md | 2 +- 183 files changed, 252 insertions(+), 238 deletions(-) diff --git a/_archive/release-notes/release-notes-202212.0/security-release-notes-202212.0.md b/_archive/release-notes/release-notes-202212.0/security-release-notes-202212.0.md index 050e7456f94..e47bd5740c2 100644 --- a/_archive/release-notes/release-notes-202212.0/security-release-notes-202212.0.md +++ b/_archive/release-notes/release-notes-202212.0/security-release-notes-202212.0.md @@ -60,7 +60,7 @@ spryker/twig (3.17.0 or earlier) ## Missing validation of the wishlist name on adding an item -Due to the way the characters are handled, it was possible to abuse the name in a way that the constructed URL linked to another resource of the shop instead of the wishlist. +Because of the way the characters are handled, it was possible to abuse the name in a way that the constructed URL linked to another resource of the shop instead of the wishlist. **Changes:** Wishlist module: @@ -330,7 +330,7 @@ composer update codeception/codeception Make sure that for the codeception/codeception module, the current version is equal to or later than 4.1.22. ## Known vulnerabilities in frontend dependencies -- The datatables.net package is vulnerable to Prototype Pollution due to an incomplete fix. +- The datatables.net package is vulnerable to Prototype Pollution because of an incomplete fix. - Known Regular Expression Denial of Service (ReDoS) vulnerabilities in the hosted-git-info package. - Known vulnerabilities in the lodash package (Command Injection, ReDoS, Prototype Pollution). - Known vulnerabilities in the ssri package (ReDoS). diff --git a/_data/sidebars/about_all_sidebar.yml b/_data/sidebars/about_all_sidebar.yml index a720602855f..4c6ce3c49ab 100644 --- a/_data/sidebars/about_all_sidebar.yml +++ b/_data/sidebars/about_all_sidebar.yml @@ -7,6 +7,8 @@ entries: - title: Releases url: /docs/about/all/releases/product-and-code-releases.html nested: + - title: Security release notes 202412.0 + url: /docs/about/all/releases/security-release-notes-202412.0.html - title: Release notes 202410.0 url: /docs/about/all/releases/release-notes-202410.0.html - title: Security release notes 202409.0 diff --git a/_data/sidebars/ca_dev_sidebar.yml b/_data/sidebars/ca_dev_sidebar.yml index 0045b08fe7f..37feda18228 100644 --- a/_data/sidebars/ca_dev_sidebar.yml +++ b/_data/sidebars/ca_dev_sidebar.yml @@ -135,7 +135,7 @@ entries: nested: - title: Assets, logs, or pipelines are not visible in AWS Management Console url: /docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/assets-logs-or-pipelines-are-not-visible-in-aws-management-console.html - - title: Deployment fails due to a failed docker authentication + - title: Deployment fails because of a failed docker authentication url: /docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.html - title: Jenkins does not restart url: /docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/jenkins-does-not-restart.html diff --git a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.md b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.md index 92ac6ab5715..5ee07635002 100644 --- a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.md +++ b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.md @@ -1,6 +1,6 @@ --- -title: Mac OSX - Installation fails or project folder can not be mounted due to SIP -description: Learn how to fix the issue when installation fails on MacOS or project folder can not be mounted due to SIP +title: Mac OSX - Installation fails or project folder can not be mounted because of SIP +description: Learn how to fix the issue when installation fails on MacOS or project folder can not be mounted because of SIP last_updated: Jun 16, 2021 template: troubleshooting-guide-template originalLink: https://documentation.spryker.com/2021080/docs/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip @@ -21,7 +21,7 @@ related: ## Description -Sometimes, installation fails or project folder can not be mounted due to SIP on MacOS. +Sometimes, installation fails or project folder can not be mounted because of SIP on MacOS. ## Cause diff --git a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.md b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.md index 17308ba628b..6905a50891e 100644 --- a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.md +++ b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.md @@ -13,7 +13,7 @@ redirect_from: - /v6/docs/mac-osx-iterm2-locale-error - /v6/docs/en/mac-osx-iterm2-locale-error related: - - title: Mac OSX - Installation fails or project folder can not be mounted due to SIP + - title: Mac OSX - Installation fails or project folder can not be mounted because of SIP link: docs/scos/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.html - title: Mac OSX - Wrong curl version error link: docs/scos/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.html diff --git a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.md b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.md index 7846abf857d..3c180d98a2e 100644 --- a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.md +++ b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.md @@ -13,7 +13,7 @@ redirect_from: - /v6/docs/mac-osx-wrong-curl-version-error - /v6/docs/en/mac-osx-wrong-curl-version-error related: - - title: Mac OSX - Installation fails or project folder can not be mounted due to SIP + - title: Mac OSX - Installation fails or project folder can not be mounted because of SIP link: docs/scos/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.html - title: Mac OSX - iterm2 (locale error) link: docs/scos/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.html diff --git a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/troubleshooting-spryker-in-vagrant-installation-issues.md b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/troubleshooting-spryker-in-vagrant-installation-issues.md index f41e6ac36d7..3780e48a04a 100644 --- a/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/troubleshooting-spryker-in-vagrant-installation-issues.md +++ b/_drafts/deprecated-devvm/troubleshooting-spryker-in-vagrant-issues/troubleshooting-spryker-in-vagrant-installation-issues.md @@ -36,7 +36,7 @@ When you [install Spryker with Vagrant](/docs/dg/dev/set-up-spryker-locally/inst MacOS issues: * [Mac OSX: iterm2 (locale error)](/docs/dg/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-iterm2-locale-error.html) - * [Mac OSX: Installation fails or project folder can not be mounted due to SIP](/docs/dg/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.html) + * [Mac OSX: Installation fails or project folder can not be mounted because of SIP](/docs/dg/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-installation-fails-or-project-folder-can-not-be-mounted-due-to-sip.html) * [Mac OSX: Wrong curl version error](/docs/dg/dev/troubleshooting/troubleshooting-spryker-in-vagrant-issues/macos-issues/mac-osx-wrong-curl-version-error.html) Windows issues: diff --git a/_drafts/drafts-dev/multistore-infrastructure-options.md b/_drafts/drafts-dev/multistore-infrastructure-options.md index d47f7a33cb7..d86a65663a1 100644 --- a/_drafts/drafts-dev/multistore-infrastructure-options.md +++ b/_drafts/drafts-dev/multistore-infrastructure-options.md @@ -12,7 +12,7 @@ Multi-store setup 1: Database, search engine, and key-value storage are shared b ![multi-store setup 1](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/dev/tutorials-and-howtos/howtos/how-to-set-up-multiple-stores.md/multi-store-setup-configuration-option-1.png) -Due to the resources being shared, the infrastructure costs are low. This setup is most suitable for B2C projects with low traffic and a small amount of data like products and prices. +Because of the resources being shared, the infrastructure costs are low. This setup is most suitable for B2C projects with low traffic and a small amount of data like products and prices. Multi-store setup 2: Each store has a dedicated search engine and key-value storage while the database is shared. diff --git a/_drafts/for-commerce-quest/faq.md b/_drafts/for-commerce-quest/faq.md index 0317ef69938..26ec9bb2f7c 100644 --- a/_drafts/for-commerce-quest/faq.md +++ b/_drafts/for-commerce-quest/faq.md @@ -43,7 +43,7 @@ Capabilities are groups of features that are composed of modules, such as a cart ## How expensive is an average Spryker project? -The price depends on the number of apps and on the type of app you are going to build. As a rule of thumb, it is possible to build and deploy a single slimline app for most standard use cases within a few weeks—for example, a voice app for Alexa or a simple chatbot. The aim is to keep each app simple and relevant and to lock away as much of it in the OS as possible. This means that building a standard, run-of-the-mill webshop with Spryker does not take longer than with other systems. Spryker's real strength, however, is the variety of apps. So, building a B2C case with 4-5 apps (for example, a shop, a web app, a chatbot, voice, and POS) using a standard system would be complex, very expensive, and frustratingly slow undertaking. Unlike standard systems, such a use case is part of Spryker's DNA. Besides, in IoT scenarios, Spryker is actually better than most of the other solutions due to the absence of dedicated technology. +The price depends on the number of apps and on the type of app you are going to build. As a rule of thumb, it is possible to build and deploy a single slimline app for most standard use cases within a few weeks—for example, a voice app for Alexa or a simple chatbot. The aim is to keep each app simple and relevant and to lock away as much of it in the OS as possible. This means that building a standard, run-of-the-mill webshop with Spryker does not take longer than with other systems. Spryker's real strength, however, is the variety of apps. So, building a B2C case with 4-5 apps (for example, a shop, a web app, a chatbot, voice, and POS) using a standard system would be complex, very expensive, and frustratingly slow undertaking. Unlike standard systems, such a use case is part of Spryker's DNA. Besides, in IoT scenarios, Spryker is actually better than most of the other solutions because of the absence of dedicated technology. ## How might an MVP look like? diff --git a/_includes/dg/overriding-webpack-js-scss-for-zed-on-project-level.md b/_includes/dg/overriding-webpack-js-scss-for-zed-on-project-level.md index 070667a4bc9..8cb212ea8b6 100644 --- a/_includes/dg/overriding-webpack-js-scss-for-zed-on-project-level.md +++ b/_includes/dg/overriding-webpack-js-scss-for-zed-on-project-level.md @@ -44,7 +44,7 @@ oryxForZed.getConfiguration(myCustomZedSettings) ``` The `oryx-for-zed` building settings must be expanded with a path to ZED modules on the project level (`entry.dirs`). -Due to `mergeWithStrategy`, the default config with core paths is expanded with a path to the project level. +Because of `mergeWithStrategy`, the default config with core paths is expanded with a path to the project level. {% info_block infoBox %} diff --git a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md index 60231c68a8f..4f0646e5af3 100644 --- a/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202307.0/install-dynamic-multistore.md @@ -91,7 +91,7 @@ We recommend making de.mysprykershop.com a mirror of eu.mysprykershop.com to pre 2. Enable dynamic store feature -Due to a change in the ideology with shifting to the region instead of store configuration for deploy, you need to change the deploy file to enable it. +Because of a change in the ideology with shifting to the region instead of store configuration for deploy, you need to change the deploy file to enable it. To use the new region configuration, create a new deployment file, such as `deploy.dynamic-store.yml` (or `deploy.dev.dynamic-store.yml` for development environment). You can check example deploy file for EU region: @@ -119,7 +119,7 @@ image: regions: EU: # Services for EU region. Use one of the following services: mail, database, broker, key_value_store, search for all stores in EU region. - # Stores MUST not be defined in the deploy file as it was before due to their dynamic nature + # Stores MUST not be defined in the deploy file as it was before because of their dynamic nature services: mail: sender: diff --git a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md index 8aa896e550c..23d309371d7 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-approval-process-feature.md @@ -139,9 +139,9 @@ quote_approval.remove,Cancel Request,en_US quote_approval.remove,Anfrage Abbrechen,de_DE quote_approval.cart.require_approval,"You can't place this order because of your purchasing limit, please send your cart for approval or contact your manager.",en_US quote_approval.cart.require_approval,"Sie können diese Bestellung aufgrund Ihres Einkaufslimits nicht aufgeben. Senden Sie Ihren Einkaufswagen zur Genehmigung oder wenden Sie sich an Ihren Kontakmanager.",de_DE -quote_approval.cart.waiting_approval,"You can't place this order due to pending approval request.",en_US +quote_approval.cart.waiting_approval,"You can't place this order because of pending approval request.",en_US quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund einer ausstehenden Genehmigungsanfrage nicht aufgeben.",de_DE -quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request due to approver limit.",en_US +quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-cms-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-cms-feature.md index 5b2a2c6d1ab..46524e3a960 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-cms-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-cms-feature.md @@ -779,7 +779,7 @@ cms-page--3,Placeholders Title & Content,1,1,1,/de/datenschutz,/en/privacy,Daten cms-page--4,Placeholders Title & Content,1,0,1,/de/loremde,/en/lorem,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,"{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--5,Placeholders Title & Content,1,1,0,/de/dolorde,/en/dolor,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Lorem ipsum,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--6,Placeholders Title & Content,1,1,1,/de/demo-landing-page,/en/demo-landing-page,Demo Landing Page,Demo Landing Page,Demo Landing Page,Demo Landing Page,"demo,cms page, landing page","demo,cms page, landing page",This is a demo landing page with different content widgets.,This is a demo landing page with different content widgets.,"

    DAS IST EINE GROßARTIGE LANDING PAGE

    ","

    THIS IS A GREAT LANDING PAGE

    ","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    Dies ist eine Liste von Produkten auf einer CMS Seite:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    Dies ist eine Liste von Produkt-Gruppen auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    Dies ist ein Produkt-Set auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    This is a list of products in a CMS page:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    This is a list of product groups in a CMS page:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    This a product set in a CMS page:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}" -cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return due to hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " +cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return because of hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " ``` diff --git a/_includes/pbc/all/install-features/202307.0/install-the-order-management-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-order-management-feature.md index 45e24eef709..d9a66b6470f 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-order-management-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-order-management-feature.md @@ -631,7 +631,7 @@ By default, in state machine names, the following applies: ```csv sales.error.customer_order_not_found,Customer Order not found.,en_US sales.error.customer_order_not_found,Die Bestellung wurde nicht gefunden.,de_DE -sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled due to wrong item state.,en_US +sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled because of wrong item state.,en_US sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Die Bestellung kann wegen dem falschen Artikelstatus nicht storniert werden.,de_DE oms.state.new,New,en_US oms.state.new,Neu,de_DE diff --git a/_includes/pbc/all/install-features/202307.0/install-the-persistent-cart-sharing-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-persistent-cart-sharing-feature.md index b4572a69b99..974f52ce762 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-persistent-cart-sharing-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-persistent-cart-sharing-feature.md @@ -292,6 +292,6 @@ Make sure, that when you're on a cart page, you can see the "Share Cart via Link {% info_block warningBox "Verification" %} -Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible due to some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. +Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible because of some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-cart-feature.md b/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-cart-feature.md index 434b47757ec..e909ff2abcf 100644 --- a/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-cart-feature.md +++ b/_includes/pbc/all/install-features/202307.0/install-the-product-bundles-cart-feature.md @@ -55,7 +55,7 @@ Make sure that the item counter of the cart widget shows the correct number—bu ## Alternative setup for handling large quantities of bundled products in the cart When a bundle product is added to the cart with a large quantity (for example, 100-200 items), users may -experience a slow-down in the cart operations handling or even may get an internal server error due to insufficient memory. +experience a slow-down in the cart operations handling or even may get an internal server error because of insufficient memory. To avoid a slow-down in the cart operations and internal server errors, an alternative set of plugins has been implemented: diff --git a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-switcher-feature.md b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-switcher-feature.md index 0787f2b817b..d21adcef1df 100644 --- a/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-switcher-feature.md +++ b/_includes/pbc/all/install-features/202307.0/marketplace/install-the-merchant-switcher-feature.md @@ -106,7 +106,7 @@ Append glossary according to your configuration: **data/import/common/common/glossary.csv** ```yaml -merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Due to different availability, not all products may be added to your shopping cart.,en_US +merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Because of different availability, not all products may be added to your shopping cart.,en_US merchant_switcher.message,Wechseln von %currentMerchant% zu %newMerchant%? Aufgrund unterschiedlicher Verfügbarkeit können ggf. nicht alle Produkte in Warenkorb übernommen werden.,de_DE merchant_switcher.message.product_is_not_available,"Product %product_name% (SKU %sku%) is not available from the selected merchant. Please remove it in order to proceed or switch the merchant.",en_US merchant_switcher.message.product_is_not_available,"Produkt %product_name% (SKU %sku%) ist beim ausgewählten Händler nicht erhältlich. Bitte diesen Artikel entfernen, um fortzufahren oder den Händler zu wechseln.",de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md index de67be7fe88..4acfb3afdd7 100644 --- a/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202311.0/install-dynamic-multistore.md @@ -88,7 +88,7 @@ We recommend making de.mysprykershop.com a mirror of eu.mysprykershop.com to pre 2. Enable dynamic store feature -Due to a change in the ideology with shifting to the region instead of store configuration for deploy, you need to change the deploy file to enable it. +Because of a change in the ideology with shifting to the region instead of store configuration for deploy, you need to change the deploy file to enable it. To use the new region configuration, create a new deployment file, such as `deploy.dynamic-store.yml` (or `deploy.dev.dynamic-store.yml` for development environment). You can check example deploy file for EU region: @@ -116,7 +116,7 @@ image: regions: EU: # Services for EU region. Use one of the following services: mail, database, broker, key_value_store, search for all stores in EU region. - # Stores MUST not be defined in the deploy file as it was before due to their dynamic nature + # Stores MUST not be defined in the deploy file as it was before because of their dynamic nature services: mail: sender: diff --git a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md index 8aa896e550c..23d309371d7 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-approval-process-feature.md @@ -139,9 +139,9 @@ quote_approval.remove,Cancel Request,en_US quote_approval.remove,Anfrage Abbrechen,de_DE quote_approval.cart.require_approval,"You can't place this order because of your purchasing limit, please send your cart for approval or contact your manager.",en_US quote_approval.cart.require_approval,"Sie können diese Bestellung aufgrund Ihres Einkaufslimits nicht aufgeben. Senden Sie Ihren Einkaufswagen zur Genehmigung oder wenden Sie sich an Ihren Kontakmanager.",de_DE -quote_approval.cart.waiting_approval,"You can't place this order due to pending approval request.",en_US +quote_approval.cart.waiting_approval,"You can't place this order because of pending approval request.",en_US quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund einer ausstehenden Genehmigungsanfrage nicht aufgeben.",de_DE -quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request due to approver limit.",en_US +quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-cms-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-cms-feature.md index 5b2a2c6d1ab..46524e3a960 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-cms-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-cms-feature.md @@ -779,7 +779,7 @@ cms-page--3,Placeholders Title & Content,1,1,1,/de/datenschutz,/en/privacy,Daten cms-page--4,Placeholders Title & Content,1,0,1,/de/loremde,/en/lorem,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,"{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--5,Placeholders Title & Content,1,1,0,/de/dolorde,/en/dolor,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Lorem ipsum,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--6,Placeholders Title & Content,1,1,1,/de/demo-landing-page,/en/demo-landing-page,Demo Landing Page,Demo Landing Page,Demo Landing Page,Demo Landing Page,"demo,cms page, landing page","demo,cms page, landing page",This is a demo landing page with different content widgets.,This is a demo landing page with different content widgets.,"

    DAS IST EINE GROßARTIGE LANDING PAGE

    ","

    THIS IS A GREAT LANDING PAGE

    ","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    Dies ist eine Liste von Produkten auf einer CMS Seite:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    Dies ist eine Liste von Produkt-Gruppen auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    Dies ist ein Produkt-Set auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    This is a list of products in a CMS page:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    This is a list of product groups in a CMS page:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    This a product set in a CMS page:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}" -cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return due to hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " +cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return because of hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " ``` diff --git a/_includes/pbc/all/install-features/202311.0/install-the-order-management-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-order-management-feature.md index adeb4434371..40d4965e431 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-order-management-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-order-management-feature.md @@ -643,7 +643,7 @@ By default, in state machine names, the following applies: ```csv sales.error.customer_order_not_found,Customer Order not found.,en_US sales.error.customer_order_not_found,Die Bestellung wurde nicht gefunden.,de_DE -sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled due to wrong item state.,en_US +sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled because of wrong item state.,en_US sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Die Bestellung kann wegen dem falschen Artikelstatus nicht storniert werden.,de_DE oms.state.new,New,en_US oms.state.new,Neu,de_DE diff --git a/_includes/pbc/all/install-features/202311.0/install-the-persistent-cart-sharing-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-persistent-cart-sharing-feature.md index b4572a69b99..974f52ce762 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-persistent-cart-sharing-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-persistent-cart-sharing-feature.md @@ -292,6 +292,6 @@ Make sure, that when you're on a cart page, you can see the "Share Cart via Link {% info_block warningBox "Verification" %} -Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible due to some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. +Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible because of some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-cart-feature.md b/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-cart-feature.md index 434b47757ec..e909ff2abcf 100644 --- a/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-cart-feature.md +++ b/_includes/pbc/all/install-features/202311.0/install-the-product-bundles-cart-feature.md @@ -55,7 +55,7 @@ Make sure that the item counter of the cart widget shows the correct number—bu ## Alternative setup for handling large quantities of bundled products in the cart When a bundle product is added to the cart with a large quantity (for example, 100-200 items), users may -experience a slow-down in the cart operations handling or even may get an internal server error due to insufficient memory. +experience a slow-down in the cart operations handling or even may get an internal server error because of insufficient memory. To avoid a slow-down in the cart operations and internal server errors, an alternative set of plugins has been implemented: diff --git a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-switcher-feature.md b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-switcher-feature.md index 0787f2b817b..d21adcef1df 100644 --- a/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-switcher-feature.md +++ b/_includes/pbc/all/install-features/202311.0/marketplace/install-the-merchant-switcher-feature.md @@ -106,7 +106,7 @@ Append glossary according to your configuration: **data/import/common/common/glossary.csv** ```yaml -merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Due to different availability, not all products may be added to your shopping cart.,en_US +merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Because of different availability, not all products may be added to your shopping cart.,en_US merchant_switcher.message,Wechseln von %currentMerchant% zu %newMerchant%? Aufgrund unterschiedlicher Verfügbarkeit können ggf. nicht alle Produkte in Warenkorb übernommen werden.,de_DE merchant_switcher.message.product_is_not_available,"Product %product_name% (SKU %sku%) is not available from the selected merchant. Please remove it in order to proceed or switch the merchant.",en_US merchant_switcher.message.product_is_not_available,"Produkt %product_name% (SKU %sku%) ist beim ausgewählten Händler nicht erhältlich. Bitte diesen Artikel entfernen, um fortzufahren oder den Händler zu wechseln.",de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md index 7df0274e324..77bbd0e4193 100644 --- a/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202404.0/install-dynamic-multistore.md @@ -103,7 +103,7 @@ image: regions: EU: # Services for EU region. Use one of the following services: mail, database, broker, key_value_store, search for all stores in EU region. - # Stores MUST not be defined in the deploy file as it was before due to their dynamic nature + # Stores MUST not be defined in the deploy file as it was before because of their dynamic nature services: mail: sender: diff --git a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md index 8aa896e550c..23d309371d7 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-approval-process-feature.md @@ -139,9 +139,9 @@ quote_approval.remove,Cancel Request,en_US quote_approval.remove,Anfrage Abbrechen,de_DE quote_approval.cart.require_approval,"You can't place this order because of your purchasing limit, please send your cart for approval or contact your manager.",en_US quote_approval.cart.require_approval,"Sie können diese Bestellung aufgrund Ihres Einkaufslimits nicht aufgeben. Senden Sie Ihren Einkaufswagen zur Genehmigung oder wenden Sie sich an Ihren Kontakmanager.",de_DE -quote_approval.cart.waiting_approval,"You can't place this order due to pending approval request.",en_US +quote_approval.cart.waiting_approval,"You can't place this order because of pending approval request.",en_US quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund einer ausstehenden Genehmigungsanfrage nicht aufgeben.",de_DE -quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request due to approver limit.",en_US +quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-cms-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-cms-feature.md index 5b2a2c6d1ab..46524e3a960 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-cms-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-cms-feature.md @@ -779,7 +779,7 @@ cms-page--3,Placeholders Title & Content,1,1,1,/de/datenschutz,/en/privacy,Daten cms-page--4,Placeholders Title & Content,1,0,1,/de/loremde,/en/lorem,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,"{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--5,Placeholders Title & Content,1,1,0,/de/dolorde,/en/dolor,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Lorem ipsum,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--6,Placeholders Title & Content,1,1,1,/de/demo-landing-page,/en/demo-landing-page,Demo Landing Page,Demo Landing Page,Demo Landing Page,Demo Landing Page,"demo,cms page, landing page","demo,cms page, landing page",This is a demo landing page with different content widgets.,This is a demo landing page with different content widgets.,"

    DAS IST EINE GROßARTIGE LANDING PAGE

    ","

    THIS IS A GREAT LANDING PAGE

    ","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    Dies ist eine Liste von Produkten auf einer CMS Seite:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    Dies ist eine Liste von Produkt-Gruppen auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    Dies ist ein Produkt-Set auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    This is a list of products in a CMS page:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    This is a list of product groups in a CMS page:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    This a product set in a CMS page:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}" -cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return due to hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " +cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return because of hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " ``` diff --git a/_includes/pbc/all/install-features/202404.0/install-the-order-management-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-order-management-feature.md index adeb4434371..40d4965e431 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-order-management-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-order-management-feature.md @@ -643,7 +643,7 @@ By default, in state machine names, the following applies: ```csv sales.error.customer_order_not_found,Customer Order not found.,en_US sales.error.customer_order_not_found,Die Bestellung wurde nicht gefunden.,de_DE -sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled due to wrong item state.,en_US +sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled because of wrong item state.,en_US sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Die Bestellung kann wegen dem falschen Artikelstatus nicht storniert werden.,de_DE oms.state.new,New,en_US oms.state.new,Neu,de_DE diff --git a/_includes/pbc/all/install-features/202404.0/install-the-persistent-cart-sharing-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-persistent-cart-sharing-feature.md index b4572a69b99..974f52ce762 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-persistent-cart-sharing-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-persistent-cart-sharing-feature.md @@ -292,6 +292,6 @@ Make sure, that when you're on a cart page, you can see the "Share Cart via Link {% info_block warningBox "Verification" %} -Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible due to some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. +Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible because of some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-cart-feature.md b/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-cart-feature.md index 434b47757ec..e909ff2abcf 100644 --- a/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-cart-feature.md +++ b/_includes/pbc/all/install-features/202404.0/install-the-product-bundles-cart-feature.md @@ -55,7 +55,7 @@ Make sure that the item counter of the cart widget shows the correct number—bu ## Alternative setup for handling large quantities of bundled products in the cart When a bundle product is added to the cart with a large quantity (for example, 100-200 items), users may -experience a slow-down in the cart operations handling or even may get an internal server error due to insufficient memory. +experience a slow-down in the cart operations handling or even may get an internal server error because of insufficient memory. To avoid a slow-down in the cart operations and internal server errors, an alternative set of plugins has been implemented: diff --git a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-switcher-feature.md b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-switcher-feature.md index 0787f2b817b..d21adcef1df 100644 --- a/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-switcher-feature.md +++ b/_includes/pbc/all/install-features/202404.0/marketplace/install-the-merchant-switcher-feature.md @@ -106,7 +106,7 @@ Append glossary according to your configuration: **data/import/common/common/glossary.csv** ```yaml -merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Due to different availability, not all products may be added to your shopping cart.,en_US +merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Because of different availability, not all products may be added to your shopping cart.,en_US merchant_switcher.message,Wechseln von %currentMerchant% zu %newMerchant%? Aufgrund unterschiedlicher Verfügbarkeit können ggf. nicht alle Produkte in Warenkorb übernommen werden.,de_DE merchant_switcher.message.product_is_not_available,"Product %product_name% (SKU %sku%) is not available from the selected merchant. Please remove it in order to proceed or switch the merchant.",en_US merchant_switcher.message.product_is_not_available,"Produkt %product_name% (SKU %sku%) ist beim ausgewählten Händler nicht erhältlich. Bitte diesen Artikel entfernen, um fortzufahren oder den Händler zu wechseln.",de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md index c3df36721cd..ddb0ee399e2 100644 --- a/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md +++ b/_includes/pbc/all/install-features/202410.0/install-dynamic-multistore.md @@ -90,7 +90,7 @@ image: regions: EU: # Services for EU region. Use one of the following services: mail, database, broker, key_value_store, search for all stores in EU region. - # Stores MUST not be defined in the deploy file as it was before due to their dynamic nature + # Stores MUST not be defined in the deploy file as it was before because of their dynamic nature services: mail: sender: diff --git a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md index 8aa896e550c..23d309371d7 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-approval-process-feature.md @@ -139,9 +139,9 @@ quote_approval.remove,Cancel Request,en_US quote_approval.remove,Anfrage Abbrechen,de_DE quote_approval.cart.require_approval,"You can't place this order because of your purchasing limit, please send your cart for approval or contact your manager.",en_US quote_approval.cart.require_approval,"Sie können diese Bestellung aufgrund Ihres Einkaufslimits nicht aufgeben. Senden Sie Ihren Einkaufswagen zur Genehmigung oder wenden Sie sich an Ihren Kontakmanager.",de_DE -quote_approval.cart.waiting_approval,"You can't place this order due to pending approval request.",en_US +quote_approval.cart.waiting_approval,"You can't place this order because of pending approval request.",en_US quote_approval.cart.waiting_approval,"Sie können diese Bestellung aufgrund einer ausstehenden Genehmigungsanfrage nicht aufgeben.",de_DE -quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request due to approver limit.",en_US +quote_approval.create.approver_cant_approve_quote,"Selected approver cannot approve your request because of approver limit.",en_US quote_approval.create.approver_cant_approve_quote,"Der ausgewählte Manager kann Ihre Anfrage aufgrund des Genehmigungslimits nicht genehmigen.",de_DE quote_approval.create.you_cant_approve_quote,"You can't approve or decline this cart because it's amount higher that your Approver limit.",en_US quote_approval.create.you_cant_approve_quote,"Sie können diesen Einkaufswagen nicht genehmigen oder ablehnen, weil dessen Betrag höher als ihr Genehmigungslimit ist.",de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-cms-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-cms-feature.md index 5b2a2c6d1ab..46524e3a960 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-cms-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-cms-feature.md @@ -779,7 +779,7 @@ cms-page--3,Placeholders Title & Content,1,1,1,/de/datenschutz,/en/privacy,Daten cms-page--4,Placeholders Title & Content,1,0,1,/de/loremde,/en/lorem,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,Lorem ipsum,"{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","{% raw %}{{{% endraw %} chart('testChart', 'testChart') {% raw %}}}{% endraw %}
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--5,Placeholders Title & Content,1,1,0,/de/dolorde,/en/dolor,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Dolor sit amet,Lorem ipsum,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.","Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem." cms-page--6,Placeholders Title & Content,1,1,1,/de/demo-landing-page,/en/demo-landing-page,Demo Landing Page,Demo Landing Page,Demo Landing Page,Demo Landing Page,"demo,cms page, landing page","demo,cms page, landing page",This is a demo landing page with different content widgets.,This is a demo landing page with different content widgets.,"

    DAS IST EINE GROßARTIGE LANDING PAGE

    ","

    THIS IS A GREAT LANDING PAGE

    ","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    Dies ist eine Liste von Produkten auf einer CMS Seite:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    Dies ist eine Liste von Produkt-Gruppen auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    Dies ist ein Produkt-Set auf einer CMS Seite:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}","

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non erat felis. Suspendisse nulla quam, dictum vitae malesuada a, ullamcorper eu urna. Sed diam tellus, feugiat iaculis consequat eu, commodo in dui. Integer ac ipsum urna. Aliquam rhoncus varius felis at dignissim. Nulla id justo id nunc lacinia efficitur. Etiam nec vehicula lorem. Phasellus ut lacus eu lorem luctus luctus. Quisque id vestibulum lectus, vel aliquam erat. Praesent ut erat quis magna varius tempor et sed sapien. Cras ac turpis id ligula gravida dignissim in sed nisl. Suspendisse scelerisque eros vel risus sagittis, in ultricies odio commodo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae.

    Duis nunc dolor, vestibulum eu cursus ut, facilisis eget justo. Ut quis placerat mauris. In cursus enim purus, a mollis felis cursus non. Mauris rutrum a ante a rutrum. Aliquam gravida tortor et cursus pharetra. Ut id sagittis arcu, eu convallis felis. Integer fermentum convallis lorem, eu posuere ex ultricies scelerisque. Suspendisse et consectetur mauris, vel rhoncus elit. Sed ultrices eget lacus quis rutrum. Aliquam erat volutpat. Aliquam varius mauris purus, non imperdiet turpis tempor vel. Donec vitae scelerisque mi.


    This is a list of products in a CMS page:

    {% raw %}{{{% endraw %} product(['093', '066', '035', '083', '021','055']) {% raw %}}}{% endraw %}


    Sed volutpat felis non elit elementum fermentum. Sed sit amet nunc lacinia ligula malesuada pretium. Duis imperdiet sem id nibh tristique, non convallis nunc luctus. Fusce congue vestibulum purus in rhoncus. Suspendisse eu nisl non diam ornare convallis. Nullam cursus, magna vitae porttitor consectetur, leo justo volutpat augue, vitae gravida eros metus ac diam. Donec iaculis diam at massa posuere posuere. Ut molestie, mauris nec tempus aliquam, massa mauris pellentesque ligula, eu mattis quam diam nec magna. Nunc ante odio, pulvinar ac nisl quis, efficitur eleifend enim. Nam consectetur placerat ligula, nec aliquet eros feugiat quis.

    Sed eget imperdiet dolor. Nullam fringilla facilisis odio eu mattis. Morbi nibh erat, ornare et malesuada vel, commodo vel ligula. Donec maximus odio dolor, in aliquam mi tempus eu. Vivamus imperdiet imperdiet hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec quis dapibus libero, id sagittis dolor. Sed efficitur malesuada turpis sit amet efficitur. Etiam mattis ex elit, sit amet cursus sapien maximus id. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.


    This is a list of product groups in a CMS page:

    {% raw %}{{{% endraw %} product_group(['095', '009', '052', '005', '188', '090', '084', '195']) {% raw %}}}{% endraw %}


    Curabitur ipsum nulla, mollis vel tellus a, tristique tempor sapien. Mauris ut urna molestie, cursus nunc eget, lacinia erat. Donec efficitur, nisl a porta dapibus, nisi ipsum efficitur ipsum, eu auctor turpis ipsum vel sapien. Maecenas molestie risus odio. Suspendisse lobortis dapibus nisi non accumsan. Ut mattis tincidunt odio eu convallis. Nulla leo neque, scelerisque eu sagittis vitae, consectetur vel lacus. Aliquam erat volutpat. Nam euismod aliquet urna eget congue.


    This a product set in a CMS page:

    {% raw %}{{{% endraw %} product_set(['2_sony_set']) {% raw %}}}{% endraw %}" -cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return due to hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " +cms-page--7,Placeholders Title & Content,1,1,1,/de/ruecknahmegarantie,/en/return-policy,Rücknahmegarantie,Return policy,Rücknahmegarantie,Return policy,,,,,"

    Rücknahmegarantie

    ","

    Return policy

    ","

    Option zur Rücksendung von Waren bis 30 Tage nach Erhalt

    Unbeschadet Ihres gesetzlichen Widerrufsrechts bieten wir Ihnen die Möglichkeit, die Ware innerhalb von 30 Tagen nach Erhalt zurückzusenden. Mit dieser Rücksendeoption können Sie den Vertrag auch nach Ablauf der 14-tägigen Widerrufsfrist innerhalb von 30 Tagen nach Erhalt kündigen, indem Sie die Ware an uns zurücksenden (diese Frist beginnt mit dem Erhalt der Ware).

    Wenn Sie unsere Waren zurücksenden, können Sie das Ihrer Bestellung beigefügte Rücksendeetikett verwenden oder das Etikett selbst von Ihrer Kundenkontoseite ausdrucken. Bitte wenden Sie sich an den Kundendienst, wenn Sie Probleme beim Herunterladen des Rücksendeetiketts haben oder keinen Zugang zu einem Drucker haben.

    Ihre Ware gilt innerhalb von 30 Tagen als zurückgesandt, wenn Sie sie innerhalb dieser Zeit versenden. Ihre Ausübung dieser Rückgabeoption setzt jedoch voraus, dass die Ware vollständig im Originalzustand, intakt und unbeschädigt sowie in der Originalverpackung zurückgesandt wird. Bis zum Ablauf der Frist zur Ausübung des gesetzlichen Widerrufsrechts gelten ausschließlich die gesetzlichen Bestimmungen dieses Rechts. Die Möglichkeit, Waren zurückzusenden, schränkt Ihre gesetzlichen Gewährleistungsrechte, auf die Sie ohne Einschränkung Anspruch haben, nicht ein. Die Option zur Rücksendung von Waren gilt nicht für Geschenkgutscheine.

    Das freiwillige Rückgaberecht von 30 Tagen besteht nicht für Verträge mit versiegelten Waren, die nach Lieferung entsiegelt wurden und aus hygienischen Gründen nicht für die Rücksendung geeignet sind.

    Die gesetzlichen Gewährleistungsrechte bleiben vom freiwilligen 30-tägigen Rückgaberecht unberührt. Das freiwillige 30-tägige Rückgaberecht gilt nicht für den Kauf von Geschenkgutscheinen.

    ","

    Option to return merchandise up to 30 days after receipt

    Without prejudice to your statutory right of revocation, we offer you the option of returning the merchandise within 30 days of you receiving them. This return option allows you, even after the 14-day revocation period has expired, to cancel the contract by returning the merchandise to us, within 30 days of receiving them (this period commences upon your receipt of the merchandise).

    If you are returning our merchandise, you can use the return shipping label enclosed with your order, or you can print the label out yourself from your customer account page. Please contact Customer Care if you have any problems downloading the return shipping label or you do not have access to a printer.

    Your merchandise will be deemed returned within 30 days if you send it within such time. However, your exercise of this return option is preconditioned upon the merchandise being returned in full in its original condition, intact and undamaged, and in its original packaging. Until the period for exercising the statutory right of revocation expires, the statutory provisions governing this right shall apply exclusively. The option to return merchandise does not limit your statutory warranty rights, to which you remain entitled without qualification. The option to return merchandise does not apply to gift vouchers.

    The voluntary 30 days return right does not exist for contracts subject to sealed goods which have been unsealed after delivery and which are not suitable for return because of hygienic reasons.

    The statutory warranty rights remain unaffected from the voluntary 30 days return right. The voluntary 30 days right of return is not applicable to the purchase of gift vouchers.

    " ``` diff --git a/_includes/pbc/all/install-features/202410.0/install-the-order-management-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-order-management-feature.md index f5ca50fcf96..a01655da9a1 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-order-management-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-order-management-feature.md @@ -641,7 +641,7 @@ By default, in state machine names, the following applies: ```csv sales.error.customer_order_not_found,Customer Order not found.,en_US sales.error.customer_order_not_found,Die Bestellung wurde nicht gefunden.,de_DE -sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled due to wrong item state.,en_US +sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Order cannot be canceled because of wrong item state.,en_US sales.error.order_cannot_be_canceled_due_to_wrong_item_state,Die Bestellung kann wegen dem falschen Artikelstatus nicht storniert werden.,de_DE oms.state.new,New,en_US oms.state.new,Neu,de_DE diff --git a/_includes/pbc/all/install-features/202410.0/install-the-persistent-cart-sharing-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-persistent-cart-sharing-feature.md index b4572a69b99..974f52ce762 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-persistent-cart-sharing-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-persistent-cart-sharing-feature.md @@ -292,6 +292,6 @@ Make sure, that when you're on a cart page, you can see the "Share Cart via Link {% info_block warningBox "Verification" %} -Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible due to some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. +Login to Yves as Company User, add some product to the cart and go to the cart page.
    Make sure, that you can see the "Share Cart via Link" widget on a cart page.
    Make sure you can see an "External Users" radio button. Click on it.
    Make sure, that you can see the generated link for Preview access.
    Make sure, that you can see a "Copy" button near the link. Click on it.
    Make sure, that the link was copied to the clipboard (or a message that it's impossible because of some browser limitations).
    Copy the Cart Preview link and proceed with it. Make sure, that you are redirected to the Cart Preview page. {% endinfo_block %} diff --git a/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-cart-feature.md b/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-cart-feature.md index 13ca8f386e5..8fcc43c9e9d 100644 --- a/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-cart-feature.md +++ b/_includes/pbc/all/install-features/202410.0/install-the-product-bundles-cart-feature.md @@ -55,7 +55,7 @@ Make sure that the item counter of the cart widget shows the correct number—bu ## Alternative setup for handling large quantities of bundled products in the cart When a bundle product is added to the cart with a large quantity (for example, 100-200 items), users may -experience a slow-down in the cart operations handling or even may get an internal server error due to insufficient memory. +experience a slow-down in the cart operations handling or even may get an internal server error because of insufficient memory. To avoid a slow-down in the cart operations and internal server errors, an alternative set of plugins has been implemented: diff --git a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-switcher-feature.md b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-switcher-feature.md index 0787f2b817b..d21adcef1df 100644 --- a/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-switcher-feature.md +++ b/_includes/pbc/all/install-features/202410.0/marketplace/install-the-merchant-switcher-feature.md @@ -106,7 +106,7 @@ Append glossary according to your configuration: **data/import/common/common/glossary.csv** ```yaml -merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Due to different availability, not all products may be added to your shopping cart.,en_US +merchant_switcher.message,Switch from %currentMerchant% to %newMerchant%? Because of different availability, not all products may be added to your shopping cart.,en_US merchant_switcher.message,Wechseln von %currentMerchant% zu %newMerchant%? Aufgrund unterschiedlicher Verfügbarkeit können ggf. nicht alle Produkte in Warenkorb übernommen werden.,de_DE merchant_switcher.message.product_is_not_available,"Product %product_name% (SKU %sku%) is not available from the selected merchant. Please remove it in order to proceed or switch the merchant.",en_US merchant_switcher.message.product_is_not_available,"Produkt %product_name% (SKU %sku%) ist beim ausgewählten Händler nicht erhältlich. Bitte diesen Artikel entfernen, um fortzufahren oder den Händler zu wechseln.",de_DE diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-catalog-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-catalog-module.md index d42a0810dc1..56f0afb178b 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-catalog-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-catalog-module.md @@ -168,7 +168,7 @@ class CatalogDependencyProvider extends SprykerCatalogDependencyProvider ## Upgrading from version 3.* to version 4.* -Due to introducing the Suggestion Search feature, the Catalog bundle now requires Search >=5.2. +Because of introducing the Suggestion Search feature, the Catalog bundle now requires Search >=5.2. To upgrade from 3.* to 4.\*: 1. Before upgrading to the new version, make sure that you do not use any deprecated code from the version 3.\*. Check the description of the deprecated code to see what you will need to use instead. diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-category-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-category-module.md index 91316cf3040..b842bc097b1 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-category-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-category-module.md @@ -219,7 +219,7 @@ _Estimated migration time: 1 hour. The time may vary depending on project-specif ### Update modules 1. Update the `Category` module by adding `"spryker/category": "^4.0.0"` to your `composer.json` and running composer update. -Due to the changes in the Category module, all related modules have to be updated too. +Because of the changes in the Category module, all related modules have to be updated too. 2. Run composer require `spryker/event spryker/storage` to install Event and Storage modules. ### Database update and migration diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-cms-block-category-connector-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-cms-block-category-connector-module.md index 9fde09dc770..96fcfaceae6 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-cms-block-category-connector-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-cms-block-category-connector-module.md @@ -2,7 +2,7 @@ ## Upgrading from version 1.* to version 2.* -Due to introducing the CMS Block positioning and CMS Block templates for Category, the CMS Block Category Connector module now requires Category >=4.0. +Because of introducing the CMS Block positioning and CMS Block templates for Category, the CMS Block Category Connector module now requires Category >=4.0. The migration will contain the following steps: 1. New module installation diff --git a/_includes/pbc/all/upgrade-modules/upgrade-the-price-module.md b/_includes/pbc/all/upgrade-modules/upgrade-the-price-module.md index fbf4aa5155f..c9c356d817d 100644 --- a/_includes/pbc/all/upgrade-modules/upgrade-the-price-module.md +++ b/_includes/pbc/all/upgrade-modules/upgrade-the-price-module.md @@ -4,7 +4,7 @@ From version 5 we have changed price module responsibilities: previously it was responsible for handling product price related functionality. This responsibility has now been moved to the new PriceProduct module which handles product prices, while Price module is responsible for generic spryker core related functionality. -Due to this change of the Price module responsibility, all related modules have also be updated to work with the `PriceProduct` module. +Because of this change of the Price module responsibility, all related modules have also be updated to work with the `PriceProduct` module. 1. First you have to install the new `PriceProduct` module. diff --git a/_templates/module-upgrade-guide-template.md b/_templates/module-upgrade-guide-template.md index 4ed38215427..6b22b3365d2 100644 --- a/_templates/module-upgrade-guide-template.md +++ b/_templates/module-upgrade-guide-template.md @@ -10,6 +10,6 @@ template: module-upgrade-guide-template *Estimated migration time: {time in hours or minutes}* ## Spryker’s GPSR obligations diff --git a/docs/about/all/support/using-the-support-portal.md b/docs/about/all/support/using-the-support-portal.md index e72cba1c0b4..92c41769f0c 100644 --- a/docs/about/all/support/using-the-support-portal.md +++ b/docs/about/all/support/using-the-support-portal.md @@ -77,9 +77,9 @@ Emergencies are reserved for problems that have significant business impact now {% info_block warningBox "Plan your change requests and use the right request form" %} -Due to verification processes and role-based access control mechanisms, change requests take some time to process. Expect 3-5 days of processing time. +Because of verification processes and role-based access control mechanisms, change requests take some time to process. Expect 3-5 days of processing time. -Due to contractual reasons, only customers can request new environments or access to environment monitoring, not partners. +Because of contractual reasons, only customers can request new environments or access to environment monitoring, not partners. {% endinfo_block %} diff --git a/docs/ca/dev/best-practices/jenkins-operational-best-practices.md b/docs/ca/dev/best-practices/jenkins-operational-best-practices.md index 490e0153aa8..320504e5885 100644 --- a/docs/ca/dev/best-practices/jenkins-operational-best-practices.md +++ b/docs/ca/dev/best-practices/jenkins-operational-best-practices.md @@ -48,7 +48,7 @@ Formula to estimate your maximum theoretical RAM demand: Number of executors x (maximum workers and threads spawned by heaviest job * memory_limit) = Theoretical max RAM Demand -As you can see from the multiplicative nature of the threads and executors, you can easily reach a surprisingly high theoretical max RAM demand. However, it's unlikely that you will actually consume this amount. You would need to have multiple heaviest jobs running in parallel and consuming up to the `memory_limit simultaneously`. Nevertheless, calculating it is good practice, as keeping your theoretical maximum RAM demand below the memory supply significantly increases stability as it virtually eliminates the risk of Jenkins crashing due to exhausting its memory supply. This is currently the most common root cause of Jenkins service degradation and outages. +As you can see from the multiplicative nature of the threads and executors, you can easily reach a surprisingly high theoretical max RAM demand. However, it's unlikely that you will actually consume this amount. You would need to have multiple heaviest jobs running in parallel and consuming up to the `memory_limit simultaneously`. Nevertheless, calculating it is good practice, as keeping your theoretical maximum RAM demand below the memory supply significantly increases stability as it virtually eliminates the risk of Jenkins crashing because of exhausting its memory supply. This is currently the most common root cause of Jenkins service degradation and outages. ### To-Dos @@ -95,7 +95,7 @@ Import jobs, as well as Publish and Sync-related processes, can be taxing on the ### Imports and Publish and Synchronize -Imports and certain Publish and Sync processes can lead to high computational costs, such as permutation calculations for filters. Therefore, it is crucial to implement [RAM-aware batch processing](/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.html#integrate-ram-aware-batch-processing) and [queue chunk sizes](/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.html#chunk-size) that are suitable for the complexity of your data. The former helps prevent loading all import data into RAM, while the latter prevents RabbitMQ pipe timeouts due to lengthy processing times. A chunk or batch size that is too large may result in memory-related exceptions or messages being stuck in queues (with logs indicating RabbitMQ broken pipe exceptions), whereas a chunk or batch size that is too small may lead to subpar import and P&S performance. There is no one-size-fits-all solution, but with profiling, you can find a good balance between stability and performance. +Imports and certain Publish and Sync processes can lead to high computational costs, such as permutation calculations for filters. Therefore, it is crucial to implement [RAM-aware batch processing](/docs/dg/dev/integrate-and-configure/integrate-elastic-computing.html#integrate-ram-aware-batch-processing) and [queue chunk sizes](/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.html#chunk-size) that are suitable for the complexity of your data. The former helps prevent loading all import data into RAM, while the latter prevents RabbitMQ pipe timeouts because of lengthy processing times. A chunk or batch size that is too large may result in memory-related exceptions or messages being stuck in queues (with logs indicating RabbitMQ broken pipe exceptions), whereas a chunk or batch size that is too small may lead to subpar import and P&S performance. There is no one-size-fits-all solution, but with profiling, you can find a good balance between stability and performance. While fine-tuning your chunk size, check out the following articles: - [Messages are moved to error queues](https://docs.spryker.com/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/troubleshooting-rabbitmq/messages-are-moved-to-error-queues.html) @@ -107,7 +107,7 @@ A valuable general recommendation is to [split up publishing queues](https://doc ### CPU credits Standard-sized non-production environments aren't intended to handle long periods of high load. Most infrastructure components in this package size operate with a burst configuration, allowing for increased performance during limited periods. However, if these environments are under heavy load for an extended duration, the components will eventually run out of "burst credits" and throttle until the load decreases and the credits can replenish over time. When an instance is throttled, its CPU performance is capped at 20%. Consequently, the instance may struggle to complete standard tasks, resulting in the following common symptoms: -- Deployment-related steps in the Deploy_Scheduler pipeline may encounter issues due to insufficient processing capacity. +- Deployment-related steps in the Deploy_Scheduler pipeline may encounter issues because of insufficient processing capacity. - Job execution durations in your APM may sharply increase, or you may encounter RabbitMQ broken pipe exceptions. - The Jenkins UI may become unresponsive or sluggish. diff --git a/docs/ca/dev/environments-overview.md b/docs/ca/dev/environments-overview.md index fb0a840288a..2cbb0d134d2 100644 --- a/docs/ca/dev/environments-overview.md +++ b/docs/ca/dev/environments-overview.md @@ -12,7 +12,7 @@ This document describes the environment types shipped with Spryker and the best {% info_block infoBox "" %} * Contracts may vary, and this document only describes the environments types that may represent your default setup. If you are using a different setup, ask your project manager or product owner for a more detailed explanation. -* Your non-production environments don't scale automatically. If you want to increase their scaling, let us know by submitting this form: [Upscale Request](https://support.spryker.com/s/hosting-change-requests/environment-upscaling). Due to contractual reasons, only customers can request these changes, not partners. +* Your non-production environments don't scale automatically. If you want to increase their scaling, let us know by submitting this form: [Upscale Request](https://support.spryker.com/s/hosting-change-requests/environment-upscaling). Because of contractual reasons, only customers can request these changes, not partners. {% endinfo_block %} diff --git a/docs/ca/dev/multi-store-setups/multistore-setup-options.md b/docs/ca/dev/multi-store-setups/multistore-setup-options.md index 410881695ba..317dff6ee93 100644 --- a/docs/ca/dev/multi-store-setups/multistore-setup-options.md +++ b/docs/ca/dev/multi-store-setups/multistore-setup-options.md @@ -163,14 +163,14 @@ This setup has the following characteristics: - Centralized third-party integrations. This setup is recommended for the following cases: -- Your shops look completely different—not only from the design perspective but also from business logic and used features/modules due to completely separated code. +- Your shops look completely different—not only from the design perspective but also from business logic and used features/modules because of completely separated code. - Shop maintenance and development happen independently. You may have multiple teams working on different shops, having their own development workflow and release cycles. -- Data management (products, customers, orders, etc.) is separated due to separate databases. Data sharing and synchronization is possible with the help of external systems. +- Data management (products, customers, orders, etc.) is separated because of separate databases. Data sharing and synchronization is possible with the help of external systems. In terms of infrastructure, this setup is the most flexible way of scaling and deploying your setups independently since all of the infrastructure parts are separate cloud resources: - You can host single stores in different AWS regions. For example, you can host the US store in N. Virginia and the DE store—in Frankfurt. -- Traffic distribution is _independent_ for every store* due to ALB+NLBs (ALB-->NLB-->Nginx-->PHP-FPM). +- Traffic distribution is _independent_ for every store* because of ALB+NLBs (ALB-->NLB-->Nginx-->PHP-FPM). {% info_block infoBox "Info" %} diff --git a/docs/ca/dev/preparation-for-going-live.md b/docs/ca/dev/preparation-for-going-live.md index 486c66cd2f8..71adb91c296 100644 --- a/docs/ca/dev/preparation-for-going-live.md +++ b/docs/ca/dev/preparation-for-going-live.md @@ -159,7 +159,7 @@ Prepare a data migration plan. Include all the data. Make sure you've addressed all the items from the following checklists: - Implement the code freeze. We recommend having a code freeze at least two weeks before going live. -- Double-check the go-live date. If any of the preceding tasks aren't complete, postpone your go-live or discuss with us how to complete them in time. DNS changes are especially sensitive to deadlines. Due to the way the DNS system works, any DNS changes take time to take effect. +- Double-check the go-live date. If any of the preceding tasks aren't complete, postpone your go-live or discuss with us how to complete them in time. DNS changes are especially sensitive to deadlines. Because of the way the DNS system works, any DNS changes take time to take effect. - Make sure that the rollback strategy is still valid. Check that you have everything you need to recover from an unforeseen issue with the newest version of the project you are deploying. - Make sure that DNS is set up. For details on the DNS setup, see [Set up DNS](/docs/ca/dev/set-up-dns.html). - Make sure that the third-party systems have been switched to the production mode: diff --git a/docs/ca/dev/set-up-dns.md b/docs/ca/dev/set-up-dns.md index e92a849f6f5..fa4edd70ce5 100644 --- a/docs/ca/dev/set-up-dns.md +++ b/docs/ca/dev/set-up-dns.md @@ -14,7 +14,7 @@ You normally add a CNAME record in your DNS Management for the domains you want {% info_block infoBox "Info" %} -This process can take a full week to complete due to DNS propagation and the terraform work that needs to be done. To avoid double work, ensure the endpoint selection is final and tested. +This process can take a full week to complete because of DNS propagation and the terraform work that needs to be done. To avoid double work, ensure the endpoint selection is final and tested. {% endinfo_block %} diff --git a/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.md b/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.md index b0e8a1d07b8..fa3f4e374fe 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.md @@ -1,5 +1,5 @@ --- -title: Deployment fails due to a failed docker authentication +title: Deployment fails because of a failed docker authentication description: Resolve Docker authentication errors in Spryker deployments with solutions to fix 'EOF' issues template: troubleshooting-guide-template last_updated: Oct 6, 2023 diff --git a/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/troubleshooting-deployment-issues.md b/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/troubleshooting-deployment-issues.md index 21736fbbee8..c5338737ef1 100644 --- a/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/troubleshooting-deployment-issues.md +++ b/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/troubleshooting-deployment-issues.md @@ -14,5 +14,5 @@ This section contains solutions to common deployment issues. Browse the deployment troubleshooting: * [Assets, logs, or pipelines are not visible in AWS Management](/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/assets-logs-or-pipelines-are-not-visible-in-aws-management-console.html) -* [Deployment fails due to a failed Docker authentication](/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.html) +* [Deployment fails because of a failed Docker authentication](/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/deployment-fails-due-to-a-failed-docker-authentication.html) * [Jenkins does not restart](/docs/ca/dev/troubleshooting/troubleshooting-deployment-issues/jenkins-does-not-restart.html) diff --git a/docs/dg/dev/architecture/architectural-convention.md b/docs/dg/dev/architecture/architectural-convention.md index f7ac8669040..71aed562c47 100644 --- a/docs/dg/dev/architecture/architectural-convention.md +++ b/docs/dg/dev/architecture/architectural-convention.md @@ -333,7 +333,7 @@ Used components: The Service application layer is a multipurpose library that's used across various application layers, such as Yves, Client, Glue, or Zed. -A service primarily consists of reusable lightweight stateless business logic components. Due to its deployment across all applications, a service is constrained to accessing data providers that are available universally. For example, the backend database is not accessible from Storefront applications by default. +A service primarily consists of reusable lightweight stateless business logic components. Because of its deployment across all applications, a service is constrained to accessing data providers that are available universally. For example, the backend database is not accessible from Storefront applications by default. ```text [Organization] diff --git a/docs/dg/dev/architecture/technology-stack.md b/docs/dg/dev/architecture/technology-stack.md index a7c6792ba5f..e13b21f80cf 100644 --- a/docs/dg/dev/architecture/technology-stack.md +++ b/docs/dg/dev/architecture/technology-stack.md @@ -24,7 +24,7 @@ Spryker uses a set of well-known tools: * *Redis*. Redis is the most popular key-value database; the name is an abbreviation for Remote Dictionary Server. In Spryker it's used as a client-side data source for localized content. The Redis key-value database avoids the necessity of making queries to the SQL database, which can come with a high cost. The data stored in Redis is kept in sync with the data stored in the SQL database through specialized cronjobs. Redis supports replication, so it's a solution that enables scalability. * *Elasticsearch*. Elasticsearch is a distributed search engine that offers an easy-to-configure and easy-to-integrate solution for making searches fast. The relevant search data is stored in dedicated storage, so is similar to using Redis storage; it avoids making a costly query to the SQL database. The data stored in Elasticsearch is updated through cronjobs. -* *Symfony*. Symfony is the leading PHP framework for creating MVC web applications. Spryker implements the model-view-controller design pattern with Symfony. MVC design pattern aims to separate the business logic from the view, making the source code easier to understand and maintain due to this separation. +* *Symfony*. Symfony is the leading PHP framework for creating MVC web applications. Spryker implements the model-view-controller design pattern with Symfony. MVC design pattern aims to separate the business logic from the view, making the source code easier to understand and maintain because of this separation. * *Twig*. It is a fast and modern PHP templating engine. * *Propel2*. It is an ORM library for PHP, offering an object-relational mapping toolkit. It's part of the Symfony framework. Propel's principal function is to provide the mapping between database tables and PHP classes. Propel includes a source code generator for creating PHP classes based on the data model definition given through an XML file. The data model definition is independent of the database used, so Spryker provides a single interface that enables access to different database management systems. * *Jenkins*. Cronjobs can be easily configured in the jobs configuration file. diff --git a/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md b/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md index a94122b8e0f..2c985d27363 100644 --- a/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md +++ b/docs/dg/dev/backend-development/cronjobs/optimizing-jenkins-execution.md @@ -13,7 +13,7 @@ Our out-of-the-box (OOTB) system requires a specific command (Worker - `queue:wo By default, our system has a limit of two Jenkins executors for each environment. This limit is usually not a problem for single-store setups, but it becomes a potentially critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. -Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU utilization are not generally high (around 20-30%), there can be spikes in memory consumption due to a random combination of several workers simultaneously processing heavy messages for multiple stores. +Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU utilization are not generally high (around 20-30%), there can be spikes in memory consumption because of a random combination of several workers simultaneously processing heavy messages for multiple stores. There are two potential solutions to address this problem: application optimization and better background job orchestration. diff --git a/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md b/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md index a827b0cfd71..4b34ec75648 100644 --- a/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md +++ b/docs/dg/dev/backend-development/cronjobs/reduce-jenkins-execution-costs-without-p&s-and-data-importers-refactoring.md @@ -11,7 +11,7 @@ By default, the system requires the `queue:worker:start` command to be continuou By default, Spryker has a limit of two Jenkins executors for each environment. This limit is usually not a problem for single-store setups, but it can be a critical issue when there are multiple stores. Without increasing this limit, processing becomes slow because only two Workers are scanning queues and running tasks at a time, while other Workers for different stores have to wait. On top of this, even when some stores don't have messages to process, we still need to run a Worker just for scanning purposes, which occupies Jenkins executors, CPU time, and memory. -Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU usage aren't generally high (around 20-30%), there can be spikes in memory consumption due to a random combination of several workers simultaneously processing heavy messages for multiple stores. +Increasing the number of processes per queue can lead to issues such as Jenkins hanging, crashing, or becoming unresponsive. Although memory consumption and CPU usage aren't generally high (around 20-30%), there can be spikes in memory consumption because of a random combination of several workers simultaneously processing heavy messages for multiple stores. There are two potential solutions to address this problem that can be implemented simultaneously: application optimization and better background job orchestration. diff --git a/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md b/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md index 1fc8a9d6c68..4dc35611165 100644 --- a/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md +++ b/docs/dg/dev/backend-development/plugins/get-an-overview-of-the-used-plugins.md @@ -13,7 +13,7 @@ related: link: docs/dg/dev/backend-development/plugins/plugins.html --- -To use a new feature projects most likely need to add some plugins to their `*DependencyProvider`. Currently, it is not easy for projects to integrate a new feature due to the difficulties in identifying to which *`DependencyProvider` plugin A* of *module B* can be added to bring *functionality X*. +To use a new feature projects most likely need to add some plugins to their `*DependencyProvider`. Currently, it is not easy for projects to integrate a new feature because of the difficulties in identifying to which *`DependencyProvider` plugin A* of *module B* can be added to bring *functionality X*. To see which [Plugin](/docs/dg/dev/backend-development/plugins/plugins.html) can be used in which `DependencyProvider` we added a feature called **Plugin Overview**. This feature gives you several ways of displaying our plugin usages. The feature brings a console command (`vendor/bin/console dev:plugin-usage:dump`) and a [GUI in Zed](https://zed.mysprykershop.com/development/dependency-provider-plugin-usage). diff --git a/docs/dg/dev/backend-development/zed-ui-tables/create-and-configure-zed-tables.md b/docs/dg/dev/backend-development/zed-ui-tables/create-and-configure-zed-tables.md index f09ba1fa811..5500c2f1ec6 100644 --- a/docs/dg/dev/backend-development/zed-ui-tables/create-and-configure-zed-tables.md +++ b/docs/dg/dev/backend-development/zed-ui-tables/create-and-configure-zed-tables.md @@ -103,7 +103,7 @@ $config->setDefaultSortField(SpySalesOrderTableMap::COL_CREATED_ATб \Spryker\Ze ### Configure search by columns -The default search option in Back Office data tables searches for anything that contains the specified substrings. This default search makes use of the SQL logical operator ‘LIKE’ in combination with ‘LOWER’ for comparison. It may result in performance issues on larger tables due to indexes not being used. +The default search option in Back Office data tables searches for anything that contains the specified substrings. This default search makes use of the SQL logical operator ‘LIKE’ in combination with ‘LOWER’ for comparison. It may result in performance issues on larger tables because of indexes not being used. Search by columns can be used on all Back Office data tables which extend the `AbstractTable` class. diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/monitorable-process-guidelines.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/monitorable-process-guidelines.md index 97a92418bb5..4a09a38034b 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/monitorable-process-guidelines.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/monitorable-process-guidelines.md @@ -64,7 +64,7 @@ Applies to all application components. ### What not to log? * Unreasonable logging: Avoid logging without a clear purpose. When deciding to create a log entry, identify at least one use case for the data. * Performance critical places: Minimize logging in areas where performance is critical. If there's a performance-critical process or a large cycle as a sub-process element, try to strike a balance between performance and traceability. -* Audit trail: While it's recommended to log the audit trails of significant entity changes, these logs shouldn't be sent to the regular log system due to the sensitive nature of the data typically involved in authentication and authorization. +* Audit trail: While it's recommended to log the audit trails of significant entity changes, these logs shouldn't be sent to the regular log system because of the sensitive nature of the data typically involved in authentication and authorization. ### Log levels Appropriately implement the following log levels in application workflows to simplify issue investigations and resolutions. The log levels are based on Syslog [RFC 5424](https://datatracker.ietf.org/doc/html/rfc5424). diff --git a/docs/dg/dev/best-practices/non-functional-requirement-templates/process-documentation-guidelines.md b/docs/dg/dev/best-practices/non-functional-requirement-templates/process-documentation-guidelines.md index ea816e3a6dd..79e24709955 100644 --- a/docs/dg/dev/best-practices/non-functional-requirement-templates/process-documentation-guidelines.md +++ b/docs/dg/dev/best-practices/non-functional-requirement-templates/process-documentation-guidelines.md @@ -61,7 +61,7 @@ This request is for the deployment of version 1.2.3 of the MyProject application * Add an additional application server to the load balancer pool. * Increase the size of the database server's disk. *Expected behavior: - * There may be a temporary increase in error log entries due to a known issue with the new version that will be fixed in the next release. + * There may be a temporary increase in error log entries because of a known issue with the new version that will be fixed in the next release. **Impact**:
    This deployment will include updates to the application's database connection and API key, as well as changes to the infrastructure. There is a low risk of downtime during the deployment. diff --git a/docs/dg/dev/code-contribution-guide.md b/docs/dg/dev/code-contribution-guide.md index 289f6e36360..4ccc500991b 100644 --- a/docs/dg/dev/code-contribution-guide.md +++ b/docs/dg/dev/code-contribution-guide.md @@ -47,7 +47,7 @@ Spryker uses our proprietary licenses and common open-source licenses. In genera For example, here is a result of this flow: https://github.com/spryker/product-configurations-rest-api/pull/1. -If we can't merge a PR due to our release process, we manually introduce the change. Once the change is released, we inform you by closing the PR. +If we can't merge a PR because of our release process, we manually introduce the change. Once the change is released, we inform you by closing the PR. ## Pull request processing time diff --git a/docs/dg/dev/data-import/202311.0/importing-product-data-with-a-single-file.md b/docs/dg/dev/data-import/202311.0/importing-product-data-with-a-single-file.md index 654f293a8c8..140d89ca51d 100644 --- a/docs/dg/dev/data-import/202311.0/importing-product-data-with-a-single-file.md +++ b/docs/dg/dev/data-import/202311.0/importing-product-data-with-a-single-file.md @@ -40,7 +40,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/dg/dev/data-import/202404.0/importing-product-data-with-a-single-file.md b/docs/dg/dev/data-import/202404.0/importing-product-data-with-a-single-file.md index 3a4bec6f62c..6cabd475611 100644 --- a/docs/dg/dev/data-import/202404.0/importing-product-data-with-a-single-file.md +++ b/docs/dg/dev/data-import/202404.0/importing-product-data-with-a-single-file.md @@ -40,7 +40,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/dg/dev/data-import/202410.0/importing-product-data-with-a-single-file.md b/docs/dg/dev/data-import/202410.0/importing-product-data-with-a-single-file.md index 3a4bec6f62c..6cabd475611 100644 --- a/docs/dg/dev/data-import/202410.0/importing-product-data-with-a-single-file.md +++ b/docs/dg/dev/data-import/202410.0/importing-product-data-with-a-single-file.md @@ -40,7 +40,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/oryx-server-side-rendering.md b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/oryx-server-side-rendering.md index 2088320d087..4caa2ea26f5 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/architecture/oryx-server-side-rendering.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/architecture/oryx-server-side-rendering.md @@ -11,7 +11,7 @@ redirect_from: -Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity due to its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. +Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity because of its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. ## Differences between server-side and client-side rendering diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-icon-system.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-icon-system.md index 3394877d59a..d632428bb5e 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-icon-system.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-applications/styling/oryx-icon-system.md @@ -49,7 +49,7 @@ Oryx supports both font-based icons and SVG icons, letting you choose the most s ### Font-based icons -Font-based icons are a popular choice due to their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. +Font-based icons are a popular choice because of their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. Oryx leverages [Material symbols](https://fonts.google.com/icons) and [Font Awesome icons](https://fontawesome.com/). However, you can also add other icon fonts. Material Symbols are built with Variable fonts, enabling developers to edit font characteristics like line weight and fill through CSS. diff --git a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md index 824e372344d..4c220a0116d 100644 --- a/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202311.0/oryx/building-components/oryx-managing-component-options.md @@ -123,7 +123,7 @@ protected override render(): TemplateResult { To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. -The following code shows how to use the `$options` signal. Due to the component option interface, the usage of the signal is type safe. +The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. ```ts @defaultOptions({ diff --git a/docs/dg/dev/frontend-development/202311.0/yves/multi-theme.md b/docs/dg/dev/frontend-development/202311.0/yves/multi-theme.md index 71d8bb6d200..ef15d7f0d96 100644 --- a/docs/dg/dev/frontend-development/202311.0/yves/multi-theme.md +++ b/docs/dg/dev/frontend-development/202311.0/yves/multi-theme.md @@ -21,7 +21,7 @@ A theme is a combination of twig, CSS and JS files that make your user interface * **Current Theme**—a single theme defined on a project level. E.g., B2B-theme, B2C-theme. * **Default Theme**—a theme provided from Spryker by default and used in the Spryker Commerce OS. Used for incremental project updates (start from default and change components one-by-one) and a graceful fallback in case Spryker provides a new functionality which does not have own frontend in a project. -From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Due to the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. +From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Because of the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. ```xml { diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/oryx-server-side-rendering.md b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/oryx-server-side-rendering.md index d9ab2be3285..8434c74870f 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/architecture/oryx-server-side-rendering.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/architecture/oryx-server-side-rendering.md @@ -11,7 +11,7 @@ redirect_from: -Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity due to its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. +Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity because of its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. ## Differences between server-side and client-side rendering diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-icon-system.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-icon-system.md index 3ef9f3f6bb1..feebd438e81 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-icon-system.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-applications/styling/oryx-icon-system.md @@ -49,7 +49,7 @@ Oryx supports both font-based icons and SVG icons, letting you choose the most s ### Font-based icons -Font-based icons are a popular choice due to their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. +Font-based icons are a popular choice because of their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. Oryx leverages [Material symbols](https://fonts.google.com/icons) and [Font Awesome icons](https://fontawesome.com/). However, you can also add other icon fonts. Material Symbols are built with Variable fonts, enabling developers to edit font characteristics like line weight and fill through CSS. diff --git a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md index ee8f268157e..d81b74f42de 100644 --- a/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202404.0/oryx/building-components/oryx-managing-component-options.md @@ -123,7 +123,7 @@ protected override render(): TemplateResult { To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. -The following code shows how to use the `$options` signal. Due to the component option interface, the usage of the signal is type safe. +The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. ```ts @defaultOptions({ diff --git a/docs/dg/dev/frontend-development/202404.0/yves/multi-theme.md b/docs/dg/dev/frontend-development/202404.0/yves/multi-theme.md index 3ae28e3c958..c67c224210d 100644 --- a/docs/dg/dev/frontend-development/202404.0/yves/multi-theme.md +++ b/docs/dg/dev/frontend-development/202404.0/yves/multi-theme.md @@ -21,7 +21,7 @@ A theme is a combination of twig, CSS and JS files that make your user interface * **Current Theme**—a single theme defined on a project level. E.g., B2B-theme, B2C-theme. * **Default Theme**—a theme provided from Spryker by default and used in the Spryker Commerce OS. Used for incremental project updates (start from default and change components one-by-one) and a graceful fallback in case Spryker provides a new functionality which does not have own frontend in a project. -From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Due to the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. +From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Because of the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. ```xml { diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/oryx-server-side-rendering.md b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/oryx-server-side-rendering.md index d9ab2be3285..8434c74870f 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/architecture/oryx-server-side-rendering.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/architecture/oryx-server-side-rendering.md @@ -11,7 +11,7 @@ redirect_from: -Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity due to its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. +Server-side rendering (SSR), including Static Site Generation (SSG) as a variant, has grown in popularity because of its ability to boost web application performance, facilitate effective Search Engine Optimization (SEO), social sharing, and improve Core Web Vitals (CWV). By delivering pre-rendered HTML from the server or even a content delivery network (CDN) to the client, SSR and SSG lead to quicker initial page load times, improve user experience (UX), and can significantly improve CWV scores. SSG, in particular, pre-renders HTML at build time, resulting in static HTML, CSS, and JavaScript files that can be served directly from a CDN. It is a useful strategy for sites with content that does not change frequently, and can improve performance, scalability, and security. ## Differences between server-side and client-side rendering diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-icon-system.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-icon-system.md index 3ef9f3f6bb1..feebd438e81 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-icon-system.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-applications/styling/oryx-icon-system.md @@ -49,7 +49,7 @@ Oryx supports both font-based icons and SVG icons, letting you choose the most s ### Font-based icons -Font-based icons are a popular choice due to their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. +Font-based icons are a popular choice because of their ease of use and the availability of a wide range of icons. They offer great quality and scalability, staying sharp at various sizes. Additionally, font-based icons can be easily colored using CSS, seamlessly integrating with UI themes. Oryx leverages [Material symbols](https://fonts.google.com/icons) and [Font Awesome icons](https://fontawesome.com/). However, you can also add other icon fonts. Material Symbols are built with Variable fonts, enabling developers to edit font characteristics like line weight and fill through CSS. diff --git a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md index ee8f268157e..d81b74f42de 100644 --- a/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md +++ b/docs/dg/dev/frontend-development/202410.0/oryx/building-components/oryx-managing-component-options.md @@ -123,7 +123,7 @@ protected override render(): TemplateResult { To use component options asynchronously, it is important to observe the options and react to updates in the component UI. Oryx provides a [reactive](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/reactivity.html) framework with observable data streams that can update the UI using [signals](/docs/dg/dev/frontend-development/{{page.version}}/oryx/architecture/reactivity/signals.html). To simplify the integration in the component logic, `ContentMixin` provides the `$options` signal that can be called in the render logic or other signals. -The following code shows how to use the `$options` signal. Due to the component option interface, the usage of the signal is type safe. +The following code shows how to use the `$options` signal. Because of the component option interface, the usage of the signal is type safe. ```ts @defaultOptions({ diff --git a/docs/dg/dev/frontend-development/202410.0/yves/multi-theme.md b/docs/dg/dev/frontend-development/202410.0/yves/multi-theme.md index 3ae28e3c958..c67c224210d 100644 --- a/docs/dg/dev/frontend-development/202410.0/yves/multi-theme.md +++ b/docs/dg/dev/frontend-development/202410.0/yves/multi-theme.md @@ -21,7 +21,7 @@ A theme is a combination of twig, CSS and JS files that make your user interface * **Current Theme**—a single theme defined on a project level. E.g., B2B-theme, B2C-theme. * **Default Theme**—a theme provided from Spryker by default and used in the Spryker Commerce OS. Used for incremental project updates (start from default and change components one-by-one) and a graceful fallback in case Spryker provides a new functionality which does not have own frontend in a project. -From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Due to the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. +From now on, besides the default theme, you, as a shop owner, can create and use different themes for different stores. When you select a theme, you decide how your shop is displayed. For example, you may have a New Year theme with the New year attributes that is enabled every year during the New Year holidays. Because of the development of the Spryker Commerce OS, the entities that previously were called stores (DE, EN, AT) - are now renamed into namespaces. ```xml { diff --git a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.md b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.md index 6760f20d7a5..b80c3ec5896 100644 --- a/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.md +++ b/docs/dg/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.md @@ -11,7 +11,7 @@ The dead code checker checks for dead code that extends core classes in your pro ## Problem description -The project has the capability to extend Spryker core classes, but over time, it may become ineffective due to changes in the project or core components. +The project has the capability to extend Spryker core classes, but over time, it may become ineffective because of changes in the project or core components. This results in unnecessary additional time investment from developers, as they need to update the dead code. This check examines potential obsolete classes, with a tendency to overlook important Spryker kernel classes like `Factory`, `Facade`, or `DependencyProvider`. If desired, you have the option to disable the dead code checker for a particular class using the `@evaluator-skip-dead-code` annotation. diff --git a/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md b/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md index d76db13027d..548243218e1 100644 --- a/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md +++ b/docs/dg/dev/guidelines/performance-guidelines/architecture-performance-guidelines.md @@ -22,7 +22,7 @@ Below, you will find the most common architecture design mistakes and impediment ### Duplications of slow operations -Sometimes, due to business requirements, it’s mandatory to have a slow operation during one transaction. This slow part of functionality might be very small and hidden behind an API, but the usage of this API can go out of control. +Sometimes, because of business requirements, it’s mandatory to have a slow operation during one transaction. This slow part of functionality might be very small and hidden behind an API, but the usage of this API can go out of control. Let's consider an example illustrating the impact of a bad architecture design with slow operations. Imagine you have a method called `caluculateDiscount()` that generates some discounts for cart items. However, each call of this method takes 100ms, which might be a proper response time for an API. Now think of another business requirement when you need to calculate the discount for 10 separated groups of items in the cart. In this case, you need to call the `caluculateDiscount()` method 10 times, leading to 1000ms (1 second), which already poses a performance problem. @@ -41,7 +41,7 @@ Make sure you carefully check for memory leaks during the query optimizations, a ### Optimistic vs. pessimistic locking -Sometimes, developers use explicit locks to prevent race conditions or other issues that impact performance due to the high traffic load. This happens because all requests need to wait for the lock, which turns the parallel request processing into sequential processing and can increase the response time of all the queued requests. +Sometimes, developers use explicit locks to prevent race conditions or other issues that impact performance because of the high traffic load. This happens because all requests need to wait for the lock, which turns the parallel request processing into sequential processing and can increase the response time of all the queued requests. Some of the pessimistic locking use cases are: @@ -106,7 +106,7 @@ Spryker uses Propel ORM as a database abstraction layer which allows to stay DBM Performance is one of the key attributes when it comes to synchronous combinations. Therefore, as a rule of thumb, any database operations must be high performant and be executed fast. If ORM cannot guarantee the high-speed database operation because of the lack of features or complexity, one should avoid using it. -For example, to display products in the Spryker shop, we need to import and propagate data into several databases. For some projects, this is a cumbersome operation due to the large volume of data. Therefore, Spryker recommends not to use ORM for these operations, but choose other solutions instead, for example, CTE, PDO, etc. +For example, to display products in the Spryker shop, we need to import and propagate data into several databases. For some projects, this is a cumbersome operation because of the large volume of data. Therefore, Spryker recommends not to use ORM for these operations, but choose other solutions instead, for example, CTE, PDO, etc. For data import of large files, it's also important to use bulk processing. Therefore, consider importing data into the database with chunks of 1000+ elements. The same applies to triggering events. Using bulk processing saves a lot of time for communication with the database and queues. diff --git a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md index d99a664b9cd..1451cc842b1 100644 --- a/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md +++ b/docs/dg/dev/guidelines/testing-guidelines/executing-tests/testing-the-publish-and-synchronization-process.md @@ -34,7 +34,7 @@ related: link: docs/scos/dev/guidelines/testing-guidelines/testing-console-commands.html --- -Publish & Synchronize (P&S) is an asynchronous process of changing data available to customers by pushing the data into storage, for example, Redis, and making it searchable, for example, with Elasticsearch. Due to its asynchronous nature, it is not easy to test the full process while developing. +Publish & Synchronize (P&S) is an asynchronous process of changing data available to customers by pushing the data into storage, for example, Redis, and making it searchable, for example, with Elasticsearch. Because of its asynchronous nature, it is not easy to test the full process while developing. In short, in P&S, you create or update an entity in the database. The process is like this: diff --git a/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md b/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md index ca4f833c1d0..78cb3b44002 100644 --- a/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md +++ b/docs/dg/dev/integrate-and-configure/integrate-multi-queue-publish-structure.md @@ -15,7 +15,7 @@ To improve debugging of failures and slow events in Spryker, we introduced a new | PROPERTY | SINGLE PUBLISH QUEUE STRUCTURE | MULTIPLE PUBLISH QUEUE STRUCTURE | | --- | --- | --- | | Event processing | Infrastructure and application events are processed in the same event queue. | Infrastructure events are spread across multiple publish events. Application events are processed in the event queue. | -| Monitoring of event consumption speed | Due to mixed listeners, event consumption speed is unpredictable and not linear. | You can monitor the speed of event consumption in each queue separately. | +| Monitoring of event consumption speed | Because of mixed listeners, event consumption speed is unpredictable and not linear. | You can monitor the speed of event consumption in each queue separately. | | Per event configuration of chunk size | | ✓ | | Per event separation of workers | | ✓ | diff --git a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md index 12a7ae384a9..298e54821e1 100644 --- a/docs/dg/dev/sdks/sdk/development-tools/phpstan.md +++ b/docs/dg/dev/sdks/sdk/development-tools/phpstan.md @@ -48,7 +48,7 @@ composer require --dev phpstan/phpstan ## Usage -1. Run the following command to generate autocompletion and prevent any error messages that might occur due to the incomplete classes: +1. Run the following command to generate autocompletion and prevent any error messages that might occur because of the incomplete classes: `vendor/bin/console dev:ide:generate-auto-completion` 2. Run this command to start analyzing: `php -d memory_limit=2048M vendor/bin/phpstan analyze -c vendor/spryker/spryker/phpstan.neon vendor/// -l 2` diff --git a/docs/dg/dev/supported-versions-of-php.md b/docs/dg/dev/supported-versions-of-php.md index 011f76b0151..041221bbf9f 100644 --- a/docs/dg/dev/supported-versions-of-php.md +++ b/docs/dg/dev/supported-versions-of-php.md @@ -29,7 +29,7 @@ Before switching PHP versions in production environments, ensure to check this n {% info_block infoBox "Info" %} -PHP 8.2+ is a hard requirement from December 2023 due to the modules being PHP 8.2+. +PHP 8.2+ is a hard requirement from December 2023 because of the modules being PHP 8.2+. {% endinfo_block %} diff --git a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md index ae022e9d5ae..797a848a508 100644 --- a/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md +++ b/docs/dg/dev/troubleshooting/troubleshooting-general-technical-issues/phpstan-memory-issues.md @@ -10,7 +10,7 @@ redirect_from: ## Cause -PHPStan needs to parse all files and due to Spryker's magic with resolving classes, e.g., `$this->getFacade()`, PHPStan needs to look up this class on its own when the `@method` annotation is missing. +PHPStan needs to parse all files and because of Spryker's magic with resolving classes, e.g., `$this->getFacade()`, PHPStan needs to look up this class on its own when the `@method` annotation is missing. ## Solution diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md index 4c4a2dcf32f..a759a2e4050 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-adapt-the-filesystem-based-features.md @@ -8,7 +8,7 @@ last_updated: Dec 6, 2023 --- -Due to the specifics of the Spryker architecture, all containers, such as Yves, Gateway, Backoffice, Jenkins, or Glue are isolated from each other and don't share any volume. For more details, refer to [Docker environment infrastructure](/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.html). +Because of the specifics of the Spryker architecture, all containers, such as Yves, Gateway, Backoffice, Jenkins, or Glue are isolated from each other and don't share any volume. For more details, refer to [Docker environment infrastructure](/docs/dg/dev/sdks/the-docker-sdk/docker-environment-infrastructure.html). For a shared file storage solution, we recommend using S3 buckets. For an illustrative example, see the [Data Import](/docs/ca/dev/configure-data-import-from-an-s3-bucket.html) feature based on an S3 bucket for file storage. For more details on the suggested file system, see [Flysystem feature](/docs/dg/dev/backend-development/data-manipulation/data-ingestion/structural-preparations/flysystem.html). diff --git a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md index 0ad98f50f4b..272bc928fef 100644 --- a/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md +++ b/docs/dg/dev/upgrade-and-migrate/migrate-to-cloud/migrate-to-cloud-restore-es-and-redis.md @@ -18,7 +18,7 @@ There is a default `vendor/bin/console sync:data` command in Spryker that lets y Considering this fact, ensure that the `sync:data` command can restore your Elasticsearch and Redis from scratch in a consistent and resilient way. This especially applies to custom `*Storage` and `*Search` modules, as they should have synchronization plugins implemented and enabled. -Due to the large data size, sometimes the command can't process all the records and fails. In this case, it can be executed per resource as follows: +Because of the large data size, sometimes the command can't process all the records and fails. In this case, it can be executed per resource as follows: ```bash console sync:data url diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-publish-and-sync.md b/docs/dg/dev/upgrade-and-migrate/upgrade-publish-and-sync.md index d6b6fce4df0..4d437c4340d 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-publish-and-sync.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-publish-and-sync.md @@ -47,7 +47,7 @@ $stores['DE']['queuePools']['synchronizationPool'] = [ #### Module layers -In Previous version the listener plugins has been extended from Abstract plugin classes and now this has changed due to obey the Spryker architecture and moved into business layer and open APIs from Facade classes. +In Previous version the listener plugins has been extended from Abstract plugin classes and now this has changed because of obey the Spryker architecture and moved into business layer and open APIs from Facade classes. ### Version 1 of the EventBehavior modules diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-php-83.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-php-83.md index bed8d5aa00d..91b6b664bf3 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-php-83.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-php-83.md @@ -95,7 +95,7 @@ docker/sdk boot && docker/sdk up --build ## 5. Test the upgrade -Thoroughly test your application to identify any issues due to the PHP version upgrade: +Thoroughly test your application to identify any issues because of the PHP version upgrade: - Automated tests: Run unit, integration, and functional tests. - Manual testing: Test critical application functionality. diff --git a/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-5.md b/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-5.md index e57ba523af3..4434e3eafae 100644 --- a/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-5.md +++ b/docs/dg/dev/upgrade-and-migrate/upgrade-to-symfony-5.md @@ -10,7 +10,7 @@ redirect_from: - /docs/scos/dev/technical-enhancements/symfony-5-integration.html --- -Spryker supports Symfony 5 that was released in November 2019. We tried to keep BC for all three major versions of Symfony, but due to some changes in version 5, we had to partially drop support for Symfony 3. +Spryker supports Symfony 5 that was released in November 2019. We tried to keep BC for all three major versions of Symfony, but because of some changes in version 5, we had to partially drop support for Symfony 3. {% info_block warningBox "Avoid old Symfony versions" %} @@ -24,7 +24,7 @@ Although Spryker still supports older versions of Symfony, avoid installing them Most of the changes in Symfony 5 are related to changes in `symfony/http-kernel` and the `symfony/translation` components. In version 4 of the `symfony/http-kernel` component, new event classes were introduced, some were deprecated, and the event classes are final in version 5. Thus, we had to use the new final event classes and refactor some modules that use the old event classes. -In version 5 of the `symfony/translation` component, some interfaces were extracted into the `symfony/translation-contracts` component. Due to this, we had to refactor some modules that used those interfaces. +In version 5 of the `symfony/translation` component, some interfaces were extracted into the `symfony/translation-contracts` component. Because of this, we had to refactor some modules that used those interfaces. ## Upgrade Symfony to version 5 diff --git a/docs/dg/dev/zed-api/zed-api-beta.md b/docs/dg/dev/zed-api/zed-api-beta.md index 58f3e60ab36..e9f69ed5df0 100644 --- a/docs/dg/dev/zed-api/zed-api-beta.md +++ b/docs/dg/dev/zed-api/zed-api-beta.md @@ -94,7 +94,7 @@ JSON_PARTIAL_OUTPUT_ON_ERROR | JSON_PRETTY_PRINT * 405 Method Not Allowed - When an HTTP method is being requested that isn’t allowed for the authenticated user. 410 Gone - Indicates that the resource at this end point is no longer available. Useful as a blanket response for old API versions. * 415 Unsupported Media Type - If incorrect content type was provided as part of the request. * 422 Unprocessable Entity - Used for validation errors. -* 429 Too Many Requests - When a request is rejected due to rate limiting. +* 429 Too Many Requests - When a request is rejected because of rate limiting. * 500 Internal Server Error - An internal error of the API. Something is broken. ## Development tools diff --git a/docs/pbc/all/business-intelligence/202410.0/amazon-quicksight-third-party-integration/amazon-quicksight.md b/docs/pbc/all/business-intelligence/202410.0/amazon-quicksight-third-party-integration/amazon-quicksight.md index 01c7f67328a..64374c8cf88 100644 --- a/docs/pbc/all/business-intelligence/202410.0/amazon-quicksight-third-party-integration/amazon-quicksight.md +++ b/docs/pbc/all/business-intelligence/202410.0/amazon-quicksight-third-party-integration/amazon-quicksight.md @@ -120,7 +120,7 @@ The default dashboard contains the following sheets. | ----------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | Total Sales | KPI | Indicates overall business revenue and helps track growth or identify trends. | Track overall revenue trends. If growth slows, evaluate pricing strategies, marketing efforts, or product performance. | | Total Orders | Table | Reflects customer activity and signals demand and operational performance. | Monitor order volume to measure demand. Sudden changes may indicate issues with pricing, stock availability, or competition. | - | Total Canceled | KPI | Quantifies the financial loss due to order cancellations, helping assess the monetary impact of cancellations and identify trends or root causes | Analyze canceled order trends to identify common causes like shipping delays or inventory shortages and take corrective action. | + | Total Canceled | KPI | Quantifies the financial loss because of order cancellations, helping assess the monetary impact of cancellations and identify trends or root causes | Analyze canceled order trends to identify common causes like shipping delays or inventory shortages and take corrective action. | | Cancelation Rate | Donut chart | Reveals issues in inventory, delivery, or customer decision-making. | Investigate and reduce factors causing high cancellation rates, such as unclear product descriptions or lack of customer support. | | Return Rate | Donut chart | Highlights product quality or customer dissatisfaction issues. | Identify patterns in high return rates and address them by improving product quality, descriptions, or customer expectations. | | "Waiting for Return" Order Items | KPI | Tracks pending returns, aiding better inventory and refund management. | Monitor pending returns to ensure timely processing and better inventory management. | diff --git a/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md b/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md index 2a478facabd..4f2844c40fe 100644 --- a/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md +++ b/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md @@ -534,7 +534,7 @@ To retrieve all available shipment methods, submit checkout data with one or mor | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md b/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md index cf7f6e038df..8a395058c31 100644 --- a/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md +++ b/docs/pbc/all/carrier-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md @@ -360,7 +360,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md b/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md index 2a478facabd..4f2844c40fe 100644 --- a/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md +++ b/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md @@ -534,7 +534,7 @@ To retrieve all available shipment methods, submit checkout data with one or mor | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md b/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md index cf7f6e038df..8a395058c31 100644 --- a/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md +++ b/docs/pbc/all/carrier-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md @@ -360,7 +360,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md b/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md index 9ee112674a7..2c6557c39cf 100644 --- a/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md +++ b/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-and-shipment-methods-when-submitting-checkout-data.md @@ -534,7 +534,7 @@ To retrieve all available shipment methods, submit checkout data with one or mor | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md b/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md index ed59d8746d1..33b704b762a 100644 --- a/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md +++ b/docs/pbc/all/carrier-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-shipments-when-checking-out-purchases.md @@ -360,7 +360,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md index 3b820acd7bf..93417e40e48 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md @@ -116,7 +116,7 @@ You can upload only one file at a time. By default, only concrete SKUs are validated. On successful upload, items and quantities are extracted and filled out in the quick order form fields. -In case the quantity is not valid due to [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. +In case the quantity is not valid because of [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. If there are already products added to the quick order list, the products from the CSV file are added to the bottom of the quick order template. diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index 8147d22b943..d937d4742a6 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -1212,7 +1212,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md index 9a8ce0ec108..e2bcb887ab5 100644 --- a/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md +++ b/docs/pbc/all/cart-and-checkout/202311.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md @@ -1221,7 +1221,7 @@ In case of a successful update, the endpoint responds with information that can | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md index 45a7c9b89e8..5d95efeb1d5 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md @@ -116,7 +116,7 @@ You can upload only one file at a time. By default, only concrete SKUs are validated. On successful upload, items and quantities are extracted and filled out in the quick order form fields. -In case the quantity is not valid due to [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. +In case the quantity is not valid because of [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. If there are already products added to the quick order list, the products from the CSV file are added to the bottom of the quick order template. diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index 8147d22b943..d937d4742a6 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -1212,7 +1212,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md index 882f59e6191..fb4dc761fb0 100644 --- a/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md +++ b/docs/pbc/all/cart-and-checkout/202404.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md @@ -1172,7 +1172,7 @@ In case of a successful update, the endpoint responds with information that can | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md index 45a7c9b89e8..5d95efeb1d5 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/feature-overviews/quick-add-to-cart-feature-overview.md @@ -116,7 +116,7 @@ You can upload only one file at a time. By default, only concrete SKUs are validated. On successful upload, items and quantities are extracted and filled out in the quick order form fields. -In case the quantity is not valid due to [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. +In case the quantity is not valid because of [quantity restrictions](/docs/pbc/all/cart-and-checkout/{{site.version}}/base-shop/feature-overviews/non-splittable-products-feature-overview.html) setting, the quantity is changed to a valid number. If there are already products added to the quick order list, the products from the CSV file are added to the bottom of the quick order template. diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md index b4bc817b6de..58a87c35a0d 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-check-out-purchases.md @@ -1212,7 +1212,7 @@ To retrieve order shipments, include `orders` and `order-shipments`. | STATUS | REASONS | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect;
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 404 | Order not found. | | 422 | Order payment is not updated. Checkout data is incorrect. | | 1101 | Checkout data is invalid. | diff --git a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md index 882f59e6191..fb4dc761fb0 100644 --- a/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md +++ b/docs/pbc/all/cart-and-checkout/202410.0/base-shop/manage-using-glue-api/check-out/glue-api-submit-checkout-data.md @@ -1172,7 +1172,7 @@ In case of a successful update, the endpoint responds with information that can | CODE | REASON | | --- | --- | -| 400 | Bad request. This error can occur due to the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | +| 400 | Bad request. This error can occur because of the following reasons:
    • The POST data is incorrect.
    • Neither **Authorization** nor **X-Anonymous-Customer-Unique-Id** headers were provided in the request.
    | | 422 | The checkout data is incorrect. | | 1101 | Checkout data is invalid. | | 1102 | Order cannot be placed. | diff --git a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md index d71a1378a3a..01aa0d0fd4d 100644 --- a/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md +++ b/docs/pbc/all/content-management-system/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md @@ -46,7 +46,7 @@ This endpoint returns activated CMS pages only. Also, if there are more than 12 ### Request -Due to the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. +Because of the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. Keep in mind that you can not retrieve the number of results, which is not a multiple of 12. Except for the cases when: diff --git a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md index f5372a19070..5ae2ea62d66 100644 --- a/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md +++ b/docs/pbc/all/content-management-system/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md @@ -46,7 +46,7 @@ This endpoint returns activated CMS pages only. Also, if there are more than 12 ### Request -Due to the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. +Because of the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. Keep in mind that you can not retrieve the number of results, which is not a multiple of 12. Except for the cases when: diff --git a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md index a7121e3c2f0..67eab1891cb 100644 --- a/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md +++ b/docs/pbc/all/content-management-system/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-cms-pages.md @@ -46,7 +46,7 @@ This endpoint returns activated CMS pages only. Also, if there are more than 12 ### Request -Due to the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. +Because of the Storefront layout, by default, the number of the retrieved pages is a multiple of 12. If you have less than 12 active CMS pages, the above request returns all of them. If you have more, you can enable paging and receive results in pages. For this purpose, use the `limit` and `offset` parameters in your request. Keep in mind that you can not retrieve the number of results, which is not a multiple of 12. Except for the cases when: diff --git a/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md b/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md index 289e8fcf47d..075d31050ea 100644 --- a/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md +++ b/docs/pbc/all/data-exchange/202404.0/sending-requests-with-data-exchange-api.md @@ -636,7 +636,7 @@ to the child entities based on the newly created parent entity's ID. By default, the Data Exchange API uses a transactional approach to save data. If an error occurs during the saving process, the entire transaction is rolled back, and no data is saved. However, in some cases, you may want to save data non-transactionally. In the non-transactional mode, the API wraps each entity and its related records (if present in the request) in a separate transaction. To enable the non-transactional behavior, you need to set the `X-Is-Transactional` with the value `false` in the request. -In the following example, the first entity will be saved successfully, while the second entity won't be saved due to the missing `rate` field. +In the following example, the first entity will be saved successfully, while the second entity won't be saved because of the missing `rate` field. ```bash @@ -676,7 +676,7 @@ Content-Length: 445 ``` -Due to the non-transactional mode, the user will receive a response with the saved entity in the `data` field and an error message in the `error` field. +Because of the non-transactional mode, the user will receive a response with the saved entity in the `data` field and an error message in the `error` field. ```json { diff --git a/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md b/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md index 6f7e7ed2d0c..fcda9cd7009 100644 --- a/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md +++ b/docs/pbc/all/data-exchange/202410.0/sending-requests-with-data-exchange-api.md @@ -636,7 +636,7 @@ to the child entities based on the newly created parent entity's ID. By default, the Data Exchange API uses a transactional approach to save data. If an error occurs during the saving process, the entire transaction is rolled back, and no data is saved. However, in some cases, you may want to save data non-transactionally. In the non-transactional mode, the API wraps each entity and its related records (if present in the request) in a separate transaction. To enable the non-transactional behavior, you need to set the `X-Is-Transactional` with the value `false` in the request. -In the following example, the first entity will be saved successfully, while the second entity won't be saved due to the missing `rate` field. +In the following example, the first entity will be saved successfully, while the second entity won't be saved because of the missing `rate` field. ```bash @@ -676,7 +676,7 @@ Content-Length: 445 ``` -Due to the non-transactional mode, the user will receive a response with the saved entity in the `data` field and an error message in the `error` field. +Because of the non-transactional mode, the user will receive a response with the saved entity in the `data` field and an error message in the `error` field. ```json { diff --git a/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md index 969994ca77b..21dc18b15fa 100644 --- a/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202311.0/base-shop/promotions-discounts-feature-overview.md @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended due to the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md index 969994ca77b..21dc18b15fa 100644 --- a/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202404.0/base-shop/promotions-discounts-feature-overview.md @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended due to the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md b/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md index 969994ca77b..21dc18b15fa 100644 --- a/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md +++ b/docs/pbc/all/discount-management/202410.0/base-shop/promotions-discounts-feature-overview.md @@ -155,7 +155,7 @@ The promotional product discount only applies if the product is added to the car {% endinfo_block %} -A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended due to the possibility of price fluctuations and differences across multiple products. +A Back Office user can either give away promotional products for free or provide a discount for these products by specifying the percentage value, or a fixed amount, to be discounted from their price. When giving a product for free, the percentage value must be 100%. Using a fixed amount discount for a free product is also possible, where the amount is equal to a product's price, but it is not recommended because of the possibility of price fluctuations and differences across multiple products. ![Collection - promotional product](https://spryker.s3.eu-central-1.amazonaws.com/docs/scos/user/features/promotions-discounts-feature-overview.md/202200.0/collection-promotional-product.png) diff --git a/docs/pbc/all/dynamic-multistore/202311.0/base-shop/delete-stores.md b/docs/pbc/all/dynamic-multistore/202311.0/base-shop/delete-stores.md index 26979843174..58e4633c566 100644 --- a/docs/pbc/all/dynamic-multistore/202311.0/base-shop/delete-stores.md +++ b/docs/pbc/all/dynamic-multistore/202311.0/base-shop/delete-stores.md @@ -59,7 +59,7 @@ vendor/bin/console scheduler:suspend ## Clean data and configuration in related database tables -1. Due to the foreign key relationship with the store entity, delete the data from the following tables: +1. Because of the foreign key relationship with the store entity, delete the data from the following tables: - `spy_price_product_store` - `spy_asset_store` - `spy_availability_abstract` diff --git a/docs/pbc/all/dynamic-multistore/202404.0/base-shop/delete-stores.md b/docs/pbc/all/dynamic-multistore/202404.0/base-shop/delete-stores.md index 26979843174..58e4633c566 100644 --- a/docs/pbc/all/dynamic-multistore/202404.0/base-shop/delete-stores.md +++ b/docs/pbc/all/dynamic-multistore/202404.0/base-shop/delete-stores.md @@ -59,7 +59,7 @@ vendor/bin/console scheduler:suspend ## Clean data and configuration in related database tables -1. Due to the foreign key relationship with the store entity, delete the data from the following tables: +1. Because of the foreign key relationship with the store entity, delete the data from the following tables: - `spy_price_product_store` - `spy_asset_store` - `spy_availability_abstract` diff --git a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/delete-stores.md b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/delete-stores.md index f2e787c13d6..011c2909dad 100644 --- a/docs/pbc/all/dynamic-multistore/202410.0/base-shop/delete-stores.md +++ b/docs/pbc/all/dynamic-multistore/202410.0/base-shop/delete-stores.md @@ -53,7 +53,7 @@ vendor/bin/console scheduler:suspend ## Clean data and configuration in related database tables -1. Due to the foreign key relationship with the store entity, delete the data from the following tables: +1. Because of the foreign key relationship with the store entity, delete the data from the following tables: - `spy_price_product_store` - `spy_asset_store` - `spy_availability_abstract` diff --git a/docs/pbc/all/identity-access-management/202311.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md b/docs/pbc/all/identity-access-management/202311.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md index cefa7ea76f3..f3fc5b8dda3 100644 --- a/docs/pbc/all/identity-access-management/202311.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md +++ b/docs/pbc/all/identity-access-management/202311.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md @@ -105,7 +105,7 @@ Request sample: authenticate as a company user | CODE | REASON | | --- | --- | -| 001 | Failed to authenticate a user. This can happen due to the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | +| 001 | Failed to authenticate a user. This can happen because of the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | | 002 | Authentication token is missing. | | 901 | The `idCompanyUser` attribute is not specified, invalid, or empty. | diff --git a/docs/pbc/all/identity-access-management/202404.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md b/docs/pbc/all/identity-access-management/202404.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md index cefa7ea76f3..f3fc5b8dda3 100644 --- a/docs/pbc/all/identity-access-management/202404.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md +++ b/docs/pbc/all/identity-access-management/202404.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md @@ -105,7 +105,7 @@ Request sample: authenticate as a company user | CODE | REASON | | --- | --- | -| 001 | Failed to authenticate a user. This can happen due to the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | +| 001 | Failed to authenticate a user. This can happen because of the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | | 002 | Authentication token is missing. | | 901 | The `idCompanyUser` attribute is not specified, invalid, or empty. | diff --git a/docs/pbc/all/identity-access-management/202410.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md b/docs/pbc/all/identity-access-management/202410.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md index 14f4e629628..636786ff9d1 100644 --- a/docs/pbc/all/identity-access-management/202410.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md +++ b/docs/pbc/all/identity-access-management/202410.0/manage-using-glue-api/glue-api-authenticate-as-a-company-user.md @@ -105,7 +105,7 @@ Request sample: authenticate as a company user | CODE | REASON | | --- | --- | -| 001 | Failed to authenticate a user. This can happen due to the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | +| 001 | Failed to authenticate a user. This can happen because of the following reasons:
    • Current authenticated customer cannot authenticate as the specified company user.
    • Specified company user does not exist.
    • Authentication token provided in the request is incorrect.
    | | 002 | Authentication token is missing. | | 901 | The `idCompanyUser` attribute is not specified, invalid, or empty. | diff --git a/docs/pbc/all/merchant-management/202311.0/marketplace/merchant-opening-hours-feature-overview.md b/docs/pbc/all/merchant-management/202311.0/marketplace/merchant-opening-hours-feature-overview.md index c1a1b07d1a5..13a34270a30 100644 --- a/docs/pbc/all/merchant-management/202311.0/marketplace/merchant-opening-hours-feature-overview.md +++ b/docs/pbc/all/merchant-management/202311.0/marketplace/merchant-opening-hours-feature-overview.md @@ -21,7 +21,7 @@ A merchant has the following: * Merchant is opened on a usually closed day—for example, Sunday. * Merchant has different opening hours in comparison to a normal schedule—for example, December 31st has shorter opening hours. -* Public holidays—special days when the Merchant is not available due to the public holidays +* Public holidays—special days when the Merchant is not available because of the public holidays To display merchant opening hours on the Storefront, you should import the open hours information. For information about how to do that, see [File details: merchant_open_hours_date_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-date-schedule.csv.html) and [File details: merchant_open_hours_week_day_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-week-day-schedule.csv.html). diff --git a/docs/pbc/all/merchant-management/202404.0/marketplace/merchant-opening-hours-feature-overview.md b/docs/pbc/all/merchant-management/202404.0/marketplace/merchant-opening-hours-feature-overview.md index c1a1b07d1a5..13a34270a30 100644 --- a/docs/pbc/all/merchant-management/202404.0/marketplace/merchant-opening-hours-feature-overview.md +++ b/docs/pbc/all/merchant-management/202404.0/marketplace/merchant-opening-hours-feature-overview.md @@ -21,7 +21,7 @@ A merchant has the following: * Merchant is opened on a usually closed day—for example, Sunday. * Merchant has different opening hours in comparison to a normal schedule—for example, December 31st has shorter opening hours. -* Public holidays—special days when the Merchant is not available due to the public holidays +* Public holidays—special days when the Merchant is not available because of the public holidays To display merchant opening hours on the Storefront, you should import the open hours information. For information about how to do that, see [File details: merchant_open_hours_date_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-date-schedule.csv.html) and [File details: merchant_open_hours_week_day_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-week-day-schedule.csv.html). diff --git a/docs/pbc/all/merchant-management/202410.0/marketplace/merchant-opening-hours-feature-overview.md b/docs/pbc/all/merchant-management/202410.0/marketplace/merchant-opening-hours-feature-overview.md index c1a1b07d1a5..13a34270a30 100644 --- a/docs/pbc/all/merchant-management/202410.0/marketplace/merchant-opening-hours-feature-overview.md +++ b/docs/pbc/all/merchant-management/202410.0/marketplace/merchant-opening-hours-feature-overview.md @@ -21,7 +21,7 @@ A merchant has the following: * Merchant is opened on a usually closed day—for example, Sunday. * Merchant has different opening hours in comparison to a normal schedule—for example, December 31st has shorter opening hours. -* Public holidays—special days when the Merchant is not available due to the public holidays +* Public holidays—special days when the Merchant is not available because of the public holidays To display merchant opening hours on the Storefront, you should import the open hours information. For information about how to do that, see [File details: merchant_open_hours_date_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-date-schedule.csv.html) and [File details: merchant_open_hours_week_day_schedule.csv](/docs/pbc/all/merchant-management/{{page.version}}/marketplace/import-and-export-data/import-file-details-merchant-open-hours-week-day-schedule.csv.html). diff --git a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md index 8aadcbc6e00..3896bc99875 100644 --- a/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md +++ b/docs/pbc/all/miscellaneous/202311.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md @@ -22,7 +22,7 @@ Since 2014 we support 300 customers & partners operating over 900 servers in 20 YOUR ADVANTAGES: * Your partner for DevOps, Docker, Kubernetes, Openshift and 24/7 cloud operations partner & application operation. * Our automation accelerates development, deployment and operations processes. -* Shorter time to market due to proven technologies like Git and Docker. +* Shorter time to market because of proven technologies like Git and Docker. * APPUiO.ch - the Swiss container platform based on Red Hat OpenShift as Managed Service. * Our processes are ISO 27001 certified and we operate according to the Swiss banking standards. * Our team of experts is available to you. 24/7 in case of emergency. diff --git a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md index 8aadcbc6e00..3896bc99875 100644 --- a/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md +++ b/docs/pbc/all/miscellaneous/202404.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md @@ -22,7 +22,7 @@ Since 2014 we support 300 customers & partners operating over 900 servers in 20 YOUR ADVANTAGES: * Your partner for DevOps, Docker, Kubernetes, Openshift and 24/7 cloud operations partner & application operation. * Our automation accelerates development, deployment and operations processes. -* Shorter time to market due to proven technologies like Git and Docker. +* Shorter time to market because of proven technologies like Git and Docker. * APPUiO.ch - the Swiss container platform based on Red Hat OpenShift as Managed Service. * Our processes are ISO 27001 certified and we operate according to the Swiss banking standards. * Our team of experts is available to you. 24/7 in case of emergency. diff --git a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md index 8aadcbc6e00..3896bc99875 100644 --- a/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md +++ b/docs/pbc/all/miscellaneous/202410.0/third-party-integrations/operational-tools-monitoring-legal/vshn.md @@ -22,7 +22,7 @@ Since 2014 we support 300 customers & partners operating over 900 servers in 20 YOUR ADVANTAGES: * Your partner for DevOps, Docker, Kubernetes, Openshift and 24/7 cloud operations partner & application operation. * Our automation accelerates development, deployment and operations processes. -* Shorter time to market due to proven technologies like Git and Docker. +* Shorter time to market because of proven technologies like Git and Docker. * APPUiO.ch - the Swiss container platform based on Red Hat OpenShift as Managed Service. * Our processes are ISO 27001 certified and we operate according to the Swiss banking standards. * Our team of experts is available to you. 24/7 in case of emergency. diff --git a/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/common-pitfalls-in-oms-design.md b/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/common-pitfalls-in-oms-design.md index b7a10f3662f..01d8ceee7ec 100644 --- a/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/common-pitfalls-in-oms-design.md +++ b/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/common-pitfalls-in-oms-design.md @@ -212,7 +212,7 @@ The unused state may have a missing transition. **Issue:** During the last transition in the callback from `picking finished` to `ready for recalculation`, a Jenkins job starts the `check-condition` command. Because of the command, the check-condition takes only a part of order items and pushes them forward. The next job executes the remaining order items with a delay, so many commands are triggered twice. ![saving-states-2](https://github.com/xartsiomx/spryker-docs/assets/110463030/1fd1b30f-00dc-49eb-8d35-37583e140f5e) -**Solution:** This is possible because, during the execution of `\Spryker\Zed\Oms\Business\OrderStateMachine\OrderStateMachine::saveOrderItems`, the system stores data per item. That's because the core logic expects that there may be more than one order in transition. To avoid blocking all of them due to a potential failed order, transition is executed per item. To change that, group order items per order and change the transaction behavior to store all order items per one transaction. Then, a check-condition or any other command can’t take order items partially. +**Solution:** This is possible because, during the execution of `\Spryker\Zed\Oms\Business\OrderStateMachine\OrderStateMachine::saveOrderItems`, the system stores data per item. That's because the core logic expects that there may be more than one order in transition. To avoid blocking all of them because of a potential failed order, transition is executed per item. To change that, group order items per order and change the transaction behavior to store all order items per one transaction. Then, a check-condition or any other command can’t take order items partially. ## LockedStateMachine @@ -220,7 +220,7 @@ When multiple processes can push forward an order from one source state, we reco 1. It implements the same interface as a common StateMachine and has locks for all methods except the `check-condition` command. -2. Lock works based on `spy_state_machine_lock` table. Due to the nature of MySQL, you may face deadlocks, which you need to [handle properly](https://dev.mysql.com/doc/refman/8.4/en/innodb-deadlocks-handling.html). Also, the same operation in MySQL takes more time than memory storage, like Redis. By default, locking works on the order item level, but, in most cases, using locks on the order level is more efficient. +2. Lock works based on `spy_state_machine_lock` table. Because of the nature of MySQL, you may face deadlocks, which you need to [handle properly](https://dev.mysql.com/doc/refman/8.4/en/innodb-deadlocks-handling.html). Also, the same operation in MySQL takes more time than memory storage, like Redis. By default, locking works on the order item level, but, in most cases, using locks on the order level is more efficient. ## Speed up oms:check-condition: parallel execution and run often than once per minute diff --git a/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md b/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md index 73ef0f6911e..406ebddafc1 100644 --- a/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md +++ b/docs/pbc/all/order-management-system/202311.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md @@ -136,7 +136,7 @@ The events can be fired as follows: * Automatically: If an event has the `onEnter="true"` attribute associated, then the event is fired automatically when the source state is reached. For example, `` means that the OMS state-authorized is triggered automatically. * By setting the `manual` attribute to `true`: This adds a button in the **Back Office → View Order [Order ID**] page that allows you to manually trigger the corresponding transition by clicking the button. For example, `` means that the OMS state canceled can only be triggered by clicking the **cancel** button for the order state. * Via an API call: The `triggerEvent`method allows triggering an event for a given process instance. For example, if a message from the payment provider is received that the capture was successful, the corresponding process instance can be triggered via the API call. -* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. +* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202311.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md b/docs/pbc/all/order-management-system/202311.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md index 4d3e63ff7c0..5b5a52438a4 100644 --- a/docs/pbc/all/order-management-system/202311.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md +++ b/docs/pbc/all/order-management-system/202311.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md @@ -21,7 +21,7 @@ Easy to implement, understand, and maintain. **Cons** -* Long-running requests can fail due to an HTTP connection timeout. +* Long-running requests can fail because of an HTTP connection timeout. * Heavy operations require scaling the hardware for the application, which can lead to extra costs. * Retry mechanism should be implemented on the caller's side. @@ -107,7 +107,7 @@ The following comparison table illustrates the various quality attributes of the | Usability / Understandability / Simplicity | ✅ | ❗ Experience with OMS engine is required | ❗ Experience with Jenkins and CLI is required | | Fault-tolerance / Correctness / Recoverability | ❌ HTTP connection usually has timeout.
    ❌ Extra efforts to make an application recoverable are required (may be impossible).
    ❌ Extra efforts to implement retry mechanism are required (may be impossible).
    ❗ Lock mechanism is required | ✅ Put transition command into DB transaction to be able to retry (if possible)
    ✅ Retry transitions can trigger retry logic manually or by timeout | ✅ Retry transitions can trigger retry logic manually or by timeout
    ✅ Event handler logic should be inside of DB transaction to be able to retry (if possible)
    ❗ Lock mechanism is required | | Scaleability | ✅ | ✅Static scaling of OMS check-condition job | ✅ Static scaling of Jenkins job | -| Upgradability | ✅ | ✅ | ✅ No upgradability issues due to no OOTB functionality usage | +| Upgradability | ✅ | ✅ | ✅ No upgradability issues because of no OOTB functionality usage | ✅ good or bonus diff --git a/docs/pbc/all/order-management-system/202311.0/base-shop/reclamations-feature-overview.md b/docs/pbc/all/order-management-system/202311.0/base-shop/reclamations-feature-overview.md index e2d69e4c32d..d6ecb12e649 100644 --- a/docs/pbc/all/order-management-system/202311.0/base-shop/reclamations-feature-overview.md +++ b/docs/pbc/all/order-management-system/202311.0/base-shop/reclamations-feature-overview.md @@ -26,7 +26,7 @@ With the reclamations in place, you can find the problematic issues with orders {% info_block errorBox %} -Due to the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. +Because of the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202311.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md b/docs/pbc/all/order-management-system/202311.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md index 26aae55b17a..a5ecebcbde4 100644 --- a/docs/pbc/all/order-management-system/202311.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md +++ b/docs/pbc/all/order-management-system/202311.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md @@ -228,7 +228,7 @@ On the default Zed Order Details page, you can trigger an event for a single ite Events can be triggered after a defined period of time has passed through a timeout. -Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. +Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202311.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md b/docs/pbc/all/order-management-system/202311.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md index b78714e05be..40591e0922e 100644 --- a/docs/pbc/all/order-management-system/202311.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md +++ b/docs/pbc/all/order-management-system/202311.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md @@ -206,7 +206,7 @@ Once a return has been created, it acquires the *Waiting for return* state. You |---|---| | execute-return | Select this state if you accept the return. When triggering this state, the return status is changed to *Returned*. | | refund | Select this state if you have refunded the returned items. When triggering this state, the return status is changed to *Refunded*. | -| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return due to the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | +| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return because of the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | | ship-return | You can trigger this state after the *Cancel* return state. Select this state if you shipped the canceled return back to the customer. The return status is changed to *Shipped to customer*. | | delivery-return | You can trigger this state after the *Shipped to customer*. Select this state if the return has been delivered to the customer. The return status is changed to *Delivered*. | | close | You can trigger this state after the *Delivered* state. Select this state to close the return. The return status is changed to *Closed*. | diff --git a/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md b/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md index 2b0c868eace..86635857755 100644 --- a/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md +++ b/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md b/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md index 2c6305ff7af..d02fb87e1c5 100644 --- a/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md +++ b/docs/pbc/all/order-management-system/202311.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202404.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md b/docs/pbc/all/order-management-system/202404.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md index 73ef0f6911e..406ebddafc1 100644 --- a/docs/pbc/all/order-management-system/202404.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md +++ b/docs/pbc/all/order-management-system/202404.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md @@ -136,7 +136,7 @@ The events can be fired as follows: * Automatically: If an event has the `onEnter="true"` attribute associated, then the event is fired automatically when the source state is reached. For example, `` means that the OMS state-authorized is triggered automatically. * By setting the `manual` attribute to `true`: This adds a button in the **Back Office → View Order [Order ID**] page that allows you to manually trigger the corresponding transition by clicking the button. For example, `` means that the OMS state canceled can only be triggered by clicking the **cancel** button for the order state. * Via an API call: The `triggerEvent`method allows triggering an event for a given process instance. For example, if a message from the payment provider is received that the capture was successful, the corresponding process instance can be triggered via the API call. -* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. +* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202404.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md b/docs/pbc/all/order-management-system/202404.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md index 4d3e63ff7c0..5b5a52438a4 100644 --- a/docs/pbc/all/order-management-system/202404.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md +++ b/docs/pbc/all/order-management-system/202404.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md @@ -21,7 +21,7 @@ Easy to implement, understand, and maintain. **Cons** -* Long-running requests can fail due to an HTTP connection timeout. +* Long-running requests can fail because of an HTTP connection timeout. * Heavy operations require scaling the hardware for the application, which can lead to extra costs. * Retry mechanism should be implemented on the caller's side. @@ -107,7 +107,7 @@ The following comparison table illustrates the various quality attributes of the | Usability / Understandability / Simplicity | ✅ | ❗ Experience with OMS engine is required | ❗ Experience with Jenkins and CLI is required | | Fault-tolerance / Correctness / Recoverability | ❌ HTTP connection usually has timeout.
    ❌ Extra efforts to make an application recoverable are required (may be impossible).
    ❌ Extra efforts to implement retry mechanism are required (may be impossible).
    ❗ Lock mechanism is required | ✅ Put transition command into DB transaction to be able to retry (if possible)
    ✅ Retry transitions can trigger retry logic manually or by timeout | ✅ Retry transitions can trigger retry logic manually or by timeout
    ✅ Event handler logic should be inside of DB transaction to be able to retry (if possible)
    ❗ Lock mechanism is required | | Scaleability | ✅ | ✅Static scaling of OMS check-condition job | ✅ Static scaling of Jenkins job | -| Upgradability | ✅ | ✅ | ✅ No upgradability issues due to no OOTB functionality usage | +| Upgradability | ✅ | ✅ | ✅ No upgradability issues because of no OOTB functionality usage | ✅ good or bonus diff --git a/docs/pbc/all/order-management-system/202404.0/base-shop/reclamations-feature-overview.md b/docs/pbc/all/order-management-system/202404.0/base-shop/reclamations-feature-overview.md index e2d69e4c32d..d6ecb12e649 100644 --- a/docs/pbc/all/order-management-system/202404.0/base-shop/reclamations-feature-overview.md +++ b/docs/pbc/all/order-management-system/202404.0/base-shop/reclamations-feature-overview.md @@ -26,7 +26,7 @@ With the reclamations in place, you can find the problematic issues with orders {% info_block errorBox %} -Due to the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. +Because of the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202404.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md b/docs/pbc/all/order-management-system/202404.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md index c01b972900b..6933942e902 100644 --- a/docs/pbc/all/order-management-system/202404.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md +++ b/docs/pbc/all/order-management-system/202404.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md @@ -228,7 +228,7 @@ On the default Zed Order Details page, you can trigger an event for a single ite Events can be triggered after a defined period of time has passed through a timeout. -Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. +Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202404.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md b/docs/pbc/all/order-management-system/202404.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md index 945735dab5e..ff560eef0e8 100644 --- a/docs/pbc/all/order-management-system/202404.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md +++ b/docs/pbc/all/order-management-system/202404.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md @@ -210,7 +210,7 @@ Once a return has been created, it acquires the *Waiting for return* state. You |---|---| | execute-return | Select this state if you accept the return. When triggering this state, the return status is changed to *Returned*. | | refund | Select this state if you have refunded the returned items. When triggering this state, the return status is changed to *Refunded*. | -| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return due to the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | +| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return because of the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | | ship-return | You can trigger this state after the *Cancel* return state. Select this state if you shipped the canceled return back to the customer. The return status is changed to *Shipped to customer*. | | delivery-return | You can trigger this state after the *Shipped to customer*. Select this state if the return has been delivered to the customer. The return status is changed to *Delivered*. | | close | You can trigger this state after the *Delivered* state. Select this state to close the return. The return status is changed to *Closed*. | diff --git a/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md b/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md index 2b0c868eace..86635857755 100644 --- a/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md +++ b/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md b/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md index 2c6305ff7af..d02fb87e1c5 100644 --- a/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md +++ b/docs/pbc/all/order-management-system/202404.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202410.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md b/docs/pbc/all/order-management-system/202410.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md index 73ef0f6911e..406ebddafc1 100644 --- a/docs/pbc/all/order-management-system/202410.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md +++ b/docs/pbc/all/order-management-system/202410.0/base-shop/datapayload-conversion/state-machine/order-process-modelling-via-state-machines.md @@ -136,7 +136,7 @@ The events can be fired as follows: * Automatically: If an event has the `onEnter="true"` attribute associated, then the event is fired automatically when the source state is reached. For example, `` means that the OMS state-authorized is triggered automatically. * By setting the `manual` attribute to `true`: This adds a button in the **Back Office → View Order [Order ID**] page that allows you to manually trigger the corresponding transition by clicking the button. For example, `` means that the OMS state canceled can only be triggered by clicking the **cancel** button for the order state. * Via an API call: The `triggerEvent`method allows triggering an event for a given process instance. For example, if a message from the payment provider is received that the capture was successful, the corresponding process instance can be triggered via the API call. -* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. +* By a timeout: Events are triggered after the defined time has passed. For example, `` means that the OMS state closed will be triggered in 1 hour, if not triggered manually from the Back Office earlier. Now let's assume we are trying to define the prepayment process, in which if after 15 days no payment is received, `reminder sent` is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the `sendFirstReminder` event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order/order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202410.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md b/docs/pbc/all/order-management-system/202410.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md index 4d3e63ff7c0..5b5a52438a4 100644 --- a/docs/pbc/all/order-management-system/202410.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md +++ b/docs/pbc/all/order-management-system/202410.0/base-shop/process-incoming-HTTP-requests-from-external-erp-services-for-order-updates.md @@ -21,7 +21,7 @@ Easy to implement, understand, and maintain. **Cons** -* Long-running requests can fail due to an HTTP connection timeout. +* Long-running requests can fail because of an HTTP connection timeout. * Heavy operations require scaling the hardware for the application, which can lead to extra costs. * Retry mechanism should be implemented on the caller's side. @@ -107,7 +107,7 @@ The following comparison table illustrates the various quality attributes of the | Usability / Understandability / Simplicity | ✅ | ❗ Experience with OMS engine is required | ❗ Experience with Jenkins and CLI is required | | Fault-tolerance / Correctness / Recoverability | ❌ HTTP connection usually has timeout.
    ❌ Extra efforts to make an application recoverable are required (may be impossible).
    ❌ Extra efforts to implement retry mechanism are required (may be impossible).
    ❗ Lock mechanism is required | ✅ Put transition command into DB transaction to be able to retry (if possible)
    ✅ Retry transitions can trigger retry logic manually or by timeout | ✅ Retry transitions can trigger retry logic manually or by timeout
    ✅ Event handler logic should be inside of DB transaction to be able to retry (if possible)
    ❗ Lock mechanism is required | | Scaleability | ✅ | ✅Static scaling of OMS check-condition job | ✅ Static scaling of Jenkins job | -| Upgradability | ✅ | ✅ | ✅ No upgradability issues due to no OOTB functionality usage | +| Upgradability | ✅ | ✅ | ✅ No upgradability issues because of no OOTB functionality usage | ✅ good or bonus diff --git a/docs/pbc/all/order-management-system/202410.0/base-shop/reclamations-feature-overview.md b/docs/pbc/all/order-management-system/202410.0/base-shop/reclamations-feature-overview.md index e2d69e4c32d..d6ecb12e649 100644 --- a/docs/pbc/all/order-management-system/202410.0/base-shop/reclamations-feature-overview.md +++ b/docs/pbc/all/order-management-system/202410.0/base-shop/reclamations-feature-overview.md @@ -26,7 +26,7 @@ With the reclamations in place, you can find the problematic issues with orders {% info_block errorBox %} -Due to the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. +Because of the specificity of the state machine for every project, out of the box, the `Refunded` state is not reflected in OMS in any way. It is just a mark for the shop administrators signifying that the order has been refunded. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202410.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md b/docs/pbc/all/order-management-system/202410.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md index edb644e3982..5a154a37d72 100644 --- a/docs/pbc/all/order-management-system/202410.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md +++ b/docs/pbc/all/order-management-system/202410.0/base-shop/state-machine-cookbook/state-machine-cookbook-state-machine-fundamentals.md @@ -228,7 +228,7 @@ On the default Zed Order Details page, you can trigger an event for a single ite Events can be triggered after a defined period of time has passed through a timeout. -Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired due to the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. +Let's assume you are trying to define the prepayment process, in which if, after 15 days, no payment is received, the reminder sent is fired because of the timeout. How is the reminder then technically sent? This can be implemented through a command attached to the send first reminder event. The command attribute references a PHP class that implements a specific interface. Every time the event is fired (automatically, after the timeout), Zed makes sure the associated command is executed. If an exception occurs in the command coding, the order or order item stays in the source state. ```xml diff --git a/docs/pbc/all/order-management-system/202410.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md b/docs/pbc/all/order-management-system/202410.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md index 945735dab5e..ff560eef0e8 100644 --- a/docs/pbc/all/order-management-system/202410.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md +++ b/docs/pbc/all/order-management-system/202410.0/marketplace/manage-in-the-back-office/manage-marketplace-orders.md @@ -210,7 +210,7 @@ Once a return has been created, it acquires the *Waiting for return* state. You |---|---| | execute-return | Select this state if you accept the return. When triggering this state, the return status is changed to *Returned*. | | refund | Select this state if you have refunded the returned items. When triggering this state, the return status is changed to *Refunded*. | -| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return due to the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | +| cancel-return | You can trigger this state after the *Waiting for return* state. Select this state if either customer changed their mind and doesn’t want to make the return anymore, or you cancel the return because of the return policy, or for other reasons. When triggering this state, the return status is changed to *Canceled*. | | ship-return | You can trigger this state after the *Cancel* return state. Select this state if you shipped the canceled return back to the customer. The return status is changed to *Shipped to customer*. | | delivery-return | You can trigger this state after the *Shipped to customer*. Select this state if the return has been delivered to the customer. The return status is changed to *Delivered*. | | close | You can trigger this state after the *Delivered* state. Select this state to close the return. The return status is changed to *Closed*. | diff --git a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md index d4c0e1d84b8..1d718726786 100644 --- a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md +++ b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-management-feature-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md index 5c13975a4a2..dc08f8a704f 100644 --- a/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md +++ b/docs/pbc/all/order-management-system/202410.0/marketplace/marketplace-order-management-feature-overview/marketplace-order-overview.md @@ -73,7 +73,7 @@ Rounding rules for a regular SCOS sales order also apply to the Marketplace orde {% info_block warningBox "Warning" %} -In some cases, due to rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. +In some cases, because of rounding, the amounts of Marketplace order totals can differ from the amounts of the Merchant order totals in a matter of a cent or less. You can modify the behavior by changing the rounding algorithms on the project level. {% endinfo_block %} diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md index e95d7bfe388..f5baf0c17bf 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md @@ -49,7 +49,7 @@ path.join(context, paths.eco.modules) ``` Run `npm run yves` after applying these changes. -Due to the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: +Because of the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: ```xml {% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} diff --git a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index f3cd0102c1c..89a3c26ae89 100644 --- a/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202311.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -24,7 +24,7 @@ Germany’s easiest installment purchase solution ratenkauf by easyCredit is the TeamBank, with its easyCredit product family, is the liquidity management specialist in the Volksbanken Raiffeisenbanken cooperative financial network. Its ‘ratenkauf by easyCredit’ product is the first installment purchase solution that combines a simple and uniformly designed installment purchase function both for e-commerce and for a physical point of sale. Customers can make their ratenkauf by easyCredit installment purchase in just three steps. No paperwork, immediate approval, and complete flexibility throughout. Simple. Fair. YOUR ADVANTAGES: -* Revenue booster: more revenue due to higher purchase amounts. +* Revenue booster: more revenue because of higher purchase amounts. * Profitable: fewer purchase cancellations thanks to the immediate credit check and approval. * Safe: no payment defaults as TeamBank assumes the credit risk. * Fair: excellent easyCredit processes offer transparency and flexibility for customers. diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md index e95d7bfe388..f5baf0c17bf 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md @@ -49,7 +49,7 @@ path.join(context, paths.eco.modules) ``` Run `npm run yves` after applying these changes. -Due to the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: +Because of the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: ```xml {% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} diff --git a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index f3cd0102c1c..89a3c26ae89 100644 --- a/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202404.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -24,7 +24,7 @@ Germany’s easiest installment purchase solution ratenkauf by easyCredit is the TeamBank, with its easyCredit product family, is the liquidity management specialist in the Volksbanken Raiffeisenbanken cooperative financial network. Its ‘ratenkauf by easyCredit’ product is the first installment purchase solution that combines a simple and uniformly designed installment purchase function both for e-commerce and for a physical point of sale. Customers can make their ratenkauf by easyCredit installment purchase in just three steps. No paperwork, immediate approval, and complete flexibility throughout. Simple. Fair. YOUR ADVANTAGES: -* Revenue booster: more revenue due to higher purchase amounts. +* Revenue booster: more revenue because of higher purchase amounts. * Profitable: fewer purchase cancellations thanks to the immediate credit check and approval. * Safe: no payment defaults as TeamBank assumes the credit risk. * Fair: excellent easyCredit processes offer transparency and flexibility for customers. diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md index e95d7bfe388..f5baf0c17bf 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/payone/manual-integration/integrate-payone.md @@ -49,7 +49,7 @@ path.join(context, paths.eco.modules) ``` Run `npm run yves` after applying these changes. -Due to the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: +Because of the pending update to Suite, you also have to apply Checkout template `.../src/Pyz/Yves/CheckoutPage/Theme/default/views/payment/payment.twig` update: ```xml {% raw %}{%{% endraw %} extends template('page-layout-checkout', 'CheckoutPage') {% raw %}%}{% endraw %} diff --git a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md index f3cd0102c1c..89a3c26ae89 100644 --- a/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md +++ b/docs/pbc/all/payment-service-provider/202410.0/base-shop/third-party-integrations/ratenkauf-by-easycredit/ratenkauf-by-easycredit.md @@ -24,7 +24,7 @@ Germany’s easiest installment purchase solution ratenkauf by easyCredit is the TeamBank, with its easyCredit product family, is the liquidity management specialist in the Volksbanken Raiffeisenbanken cooperative financial network. Its ‘ratenkauf by easyCredit’ product is the first installment purchase solution that combines a simple and uniformly designed installment purchase function both for e-commerce and for a physical point of sale. Customers can make their ratenkauf by easyCredit installment purchase in just three steps. No paperwork, immediate approval, and complete flexibility throughout. Simple. Fair. YOUR ADVANTAGES: -* Revenue booster: more revenue due to higher purchase amounts. +* Revenue booster: more revenue because of higher purchase amounts. * Profitable: fewer purchase cancellations thanks to the immediate credit check and approval. * Safe: no payment defaults as TeamBank assumes the credit risk. * Fair: excellent easyCredit processes offer transparency and flexibility for customers. diff --git a/docs/pbc/all/pbc.md b/docs/pbc/all/pbc.md index 20527b48a07..263d5149a32 100644 --- a/docs/pbc/all/pbc.md +++ b/docs/pbc/all/pbc.md @@ -36,7 +36,7 @@ This section is in beta because not all the PBCs are covered. Marketplace functi | [Identity Access Management (IAM)](/docs/pbc/all/identity-access-management/{{site.version}}/identity-access-management.html) | Enables the creation of new accounts for end customers and B2B customers. It also allows users to define password settings and utilize multi-login blockers for security purposes. Moreover, a third-party access management function is integrated. | Allows for quick and easy authorization and authentication of customers | | [Merchant Management](/docs/pbc/all/merchant-management/{{site.version}}/merchant-management.html) | For efficient Merchant Management, two parts are important. One, the overview and management on the Operator side, like approvals, edits, etc. And two, the self-service management of the Merchants, where they can take care of their daily business, like order or product management. | Gives you an overview of all your Merchants' activities. | | Miscellaneous | This category holds the documents that are not related to any PBC. | | -| [Offer Management](/docs/pbc/all/offer-management/{{site.version}}/offer-management.html) | Lets your Merchants create Offers on existing products in your Marketplace. By doing so, duplicates in the product catalog can be avoided and the management of Merchants, Products, and Offers becomes much more convenient. | Saves time due to a good overview of Merchant’s Offers. | +| [Offer Management](/docs/pbc/all/offer-management/{{site.version}}/offer-management.html) | Lets your Merchants create Offers on existing products in your Marketplace. By doing so, duplicates in the product catalog can be avoided and the management of Merchants, Products, and Offers becomes much more convenient. | Saves time because of a good overview of Merchant’s Offers. | | [Order Management System (OMS)](/docs/pbc/all/order-management-system/{{site.version}}/order-management-system.html) | Helps you keep track of your order processing from your B2B, B2C, or Marketplace, and ensure quick fulfillment. You can manage incoming orders in the Back Office, view and edit orders, track their progress, or contact customers who make open orders directly. With the compact Order Management features, you can keep your order processing running smoothly. | Lets you pProcess orders smoothly to fulfill them quickly. | | [Payment Service Provider (PSP)](/docs/pbc/all/payment-service-provider/{{site.version}}/payment-service-provider.html) | Provides integration of payment methods. You can integrate multiple payment gateways, define their availability, and customize how they appear on your site. | Lets you provide an excellent shopping experience and integrate your customers’ preferred payment methods. | | [Price Management](/docs/pbc/all/price-management/{{site.version}}/price-management.html) | The Spryker Cloud Commerce OS supports multiple currencies and automatically detects the payment currency based on a customer’s preference. You can manage gross and net prices per product and per country. You can also offer volume discounts to encourage customers to purchase products in larger quantities. | Saves you time by letting you implement your pricing strategy in one place and catering it to your business needs. | diff --git a/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index aea47f377c3..4302756a2dd 100644 --- a/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202311.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -181,11 +181,11 @@ The side effects of this solution are the following: 1. The [Product Reviews feature](/docs/pbc/all/ratings-reviews/{{page.version}}/ratings-and-reviews.html) is disabled because it requires multiple document types per index. 2. Performance requires additional attention. You can read about performance issues related to the feature in [Parent-join and performance](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html#_parent_join_and_performance). -3. Due to ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. +3. Because of ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. ### How to speed up the publishing process -To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Due to a large number of prices, the publish process became slow. This causes the following issues. +To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Because of a large number of prices, the publish process became slow. This causes the following issues. #### Issues diff --git a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index aea47f377c3..4302756a2dd 100644 --- a/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202404.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -181,11 +181,11 @@ The side effects of this solution are the following: 1. The [Product Reviews feature](/docs/pbc/all/ratings-reviews/{{page.version}}/ratings-and-reviews.html) is disabled because it requires multiple document types per index. 2. Performance requires additional attention. You can read about performance issues related to the feature in [Parent-join and performance](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html#_parent_join_and_performance). -3. Due to ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. +3. Because of ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. ### How to speed up the publishing process -To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Due to a large number of prices, the publish process became slow. This causes the following issues. +To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Because of a large number of prices, the publish process became slow. This causes the following issues. #### Issues diff --git a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md index aea47f377c3..4302756a2dd 100644 --- a/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md +++ b/docs/pbc/all/price-management/202410.0/base-shop/tutorials-and-howtos/handle-twenty-five-million-prices-in-spryker-commerce-os.md @@ -181,11 +181,11 @@ The side effects of this solution are the following: 1. The [Product Reviews feature](/docs/pbc/all/ratings-reviews/{{page.version}}/ratings-and-reviews.html) is disabled because it requires multiple document types per index. 2. Performance requires additional attention. You can read about performance issues related to the feature in [Parent-join and performance](https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html#_parent_join_and_performance). -3. Due to ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. +3. Because of ES limitations, you can't build proper queries to run sorting by prices. Only facet filtering is possible. ### How to speed up the publishing process -To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Due to a large number of prices, the publish process became slow. This causes the following issues. +To implement a parent-child relationship between documents, we built a standard search module that follows [Spryker architecture](/docs/dg/dev/backend-development/data-manipulation/data-publishing/publish-and-synchronization.html). The new price search module is subscribed to the publish and unpublish events of abstract products to manage related price documents in the search. The listener in the search module receives a product abstract ID and fetches all related prices to publish or unpublish them, depending on the incoming event. Because of a large number of prices, the publish process became slow. This causes the following issues. #### Issues diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md index ace31d8c8ef..9a47bdb28f2 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (due to amount restriction settings), a higher or lower amount must be selected. +The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md index 170356e41e4..61112537e3e 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md @@ -41,7 +41,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md index 8fff361d80a..358a14fa4f2 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md @@ -59,7 +59,7 @@ console transfer:generate {% info_block errorBox %} -Care should be taken on the project level code to handle the availability and stock values as decimal objects. Due to the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). +Care should be taken on the project level code to handle the availability and stock values as decimal objects. Because of the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). {% endinfo_block %} diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md index e2ae67644a3..5f25359e549 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md @@ -38,7 +38,7 @@ related: We have changed the type of stock and quantity fields from int to float. With this change, we allow to manage fractions of items in the system. -As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown due to a data type mismatch. +As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown because of a data type mismatch. In case of upgrading one of the modules involved into the float stock concept, we strongly recommend upgrading all the modules in your project from the list below. Mostly, the migrations have very low or even zero effort, because they only break type of a transfer object or an internal function’s signature. Some modules changed database field types to DOUBLE which is automatically upgradable by running the necessary console commands. diff --git a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md index fa22275ef8e..d1bf9212447 100644 --- a/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md +++ b/docs/pbc/all/product-information-management/202311.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md @@ -25,7 +25,7 @@ The Product Alternatives API provides access to alternative products via REST AP In your development, the endpoints help to: -* Provide alternatives for a product that runs out or unavailable, for example, due to local restrictions. +* Provide alternatives for a product that runs out or unavailable, for example, because of local restrictions. * Provide alternatives if a product is discontinued. * Make alternative products available to customers in their shopping list or suggestions area to make searching and comparing similar products easier. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 5864d22a844..95f0ee39b15 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (due to amount restriction settings), a higher or lower amount must be selected. +The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md index 170356e41e4..61112537e3e 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md @@ -41,7 +41,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md index 8fff361d80a..358a14fa4f2 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md @@ -59,7 +59,7 @@ console transfer:generate {% info_block errorBox %} -Care should be taken on the project level code to handle the availability and stock values as decimal objects. Due to the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). +Care should be taken on the project level code to handle the availability and stock values as decimal objects. Because of the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). {% endinfo_block %} diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md index e2ae67644a3..5f25359e549 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md @@ -38,7 +38,7 @@ related: We have changed the type of stock and quantity fields from int to float. With this change, we allow to manage fractions of items in the system. -As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown due to a data type mismatch. +As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown because of a data type mismatch. In case of upgrading one of the modules involved into the float stock concept, we strongly recommend upgrading all the modules in your project from the list below. Mostly, the migrations have very low or even zero effort, because they only break type of a transfer object or an internal function’s signature. Some modules changed database field types to DOUBLE which is automatically upgradable by running the necessary console commands. diff --git a/docs/pbc/all/product-information-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md b/docs/pbc/all/product-information-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md index 1e5b90749d0..a1bee25218f 100644 --- a/docs/pbc/all/product-information-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md +++ b/docs/pbc/all/product-information-management/202404.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md @@ -25,7 +25,7 @@ The Product Alternatives API provides access to alternative products via REST AP In your development, the endpoints help to: -* Provide alternatives for a product that runs out or unavailable, for example, due to local restrictions. +* Provide alternatives for a product that runs out or unavailable, for example, because of local restrictions. * Provide alternatives if a product is discontinued. * Make alternative products available to customers in their shopping list or suggestions area to make searching and comparing similar products easier. diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md index 5864d22a844..95f0ee39b15 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/feature-overviews/packaging-units-feature-overview.md @@ -95,7 +95,7 @@ For example, a packaging unit "bag" can be set to have "item" as a base unit and {% endinfo_block %} -The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (due to amount restriction settings), a higher or lower amount must be selected. +The amount of items contained in a sales unit is referred to as *sales unit amount*. If a customer chooses a sales unit amount, which is in between two available amounts (because of amount restriction settings), a higher or lower amount must be selected. {% info_block infoBox "Info" %} diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md index c561c7a62b4..b1e0968ded4 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/import-and-export-data/import-product-data-with-a-single-file.md @@ -41,7 +41,7 @@ The headers in this file are prefixed with the names of the individual product-r The only exceptions are `abstract_sku` and `concrete_sku` headers that are not prefixed. -Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Due to this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). +Thus, the CSV file for the main product data import is a combination of data from separate product-related CSV files (except for a [few fields specific for just this file](#specific-fields)). Because of this, when importing corresponding data, the same [dependencies and mandatory fields](#mandatory-fields) as for the separate files, apply to the combined product data import file. For example, if you want to import product image data via the combined product data file (headers *productimage.imageset_name*, *productimage.externalurl_large*, etc.), you should mind the dependencies and mandatory fields as for [product_image.csv](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/import-and-export-data/products-data-import/import-file-details-product-image.csv.html). By default, the import CSV file resides in data/import/common/{STORE}/. As, for example, the [combined_product_DE.csv](https://github.com/spryker-shop/suite/blob/master/data/import/common/DE/combined_product.csv) file in Spryker Master Suite. diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md index 8fff361d80a..358a14fa4f2 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/decimal-stock-migration-concept.md @@ -59,7 +59,7 @@ console transfer:generate {% info_block errorBox %} -Care should be taken on the project level code to handle the availability and stock values as decimal objects. Due to the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). +Care should be taken on the project level code to handle the availability and stock values as decimal objects. Because of the PHP floating-point precision issues, all decimal numbers in Spryker are wrapped in `decimal-object` that handles the calculations performed on them to allow exact precision. For more information about the`decimal-object` library, see [HowTo: Integrate and use precise decimal numbers](/docs/pbc/all/product-information-management/{{page.version}}/base-shop/tutorials-and-howtos/howto-integrate-and-use-precise-decimal-numbers.html). {% endinfo_block %} diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md index 08902216c40..62640dcb9ff 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/install-and-upgrade/float-stock-for-products-migration-concept.md @@ -39,7 +39,7 @@ related: We have changed the type of stock and quantity fields from int to float. With this change, we allow to manage fractions of items in the system. -As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown due to a data type mismatch. +As stock and quantity are very basic concepts of any commerce system, changing their type is a horizontal barrier for the modules. This means that, if a module is upgraded to a version that uses float stock, all the other modules in the project which are involved in the float stock barrier must be upgraded to avoid accidental type incompatibilities. For example, if ModuleX uses float stock and ModuleY uses int stock and there is no hard dependency between them, it’s technically possible to upgrade only one of them, however, during runtime, both modules may happen to process the same request data and, as a result, the response will either be calculated incorrectly or a fatal error will be thrown because of a data type mismatch. In case of upgrading one of the modules involved into the float stock concept, we strongly recommend upgrading all the modules in your project from the list below. Mostly, the migrations have very low or even zero effort, because they only break type of a transfer object or an internal function’s signature. Some modules changed database field types to DOUBLE which is automatically upgradable by running the necessary console commands. diff --git a/docs/pbc/all/product-information-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md b/docs/pbc/all/product-information-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md index e9ca7d63d20..c9b08f32c5c 100644 --- a/docs/pbc/all/product-information-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md +++ b/docs/pbc/all/product-information-management/202410.0/base-shop/manage-using-glue-api/glue-api-retrieve-alternative-products.md @@ -25,7 +25,7 @@ The Product Alternatives API provides access to alternative products via REST AP In your development, the endpoints help to: -* Provide alternatives for a product that runs out or unavailable, for example, due to local restrictions. +* Provide alternatives for a product that runs out or unavailable, for example, because of local restrictions. * Provide alternatives if a product is discontinued. * Make alternative products available to customers in their shopping list or suggestions area to make searching and comparing similar products easier. diff --git a/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md b/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md index ebcff22a510..058df890e61 100644 --- a/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md +++ b/docs/pbc/all/search/202311.0/base-shop/best-practices/data-driven-ranking.md @@ -49,7 +49,7 @@ related: When a query returns hundreds or thousands of results, the most relevant to the user products must be at the top of the search result page. Getting this right leads to a higher conversion probability and increases customer happiness. Implementing proper data-driven ranking, however, is usually very tricky because there might be large numbers of heuristics, which define what a good search result for a certain query is. -A common solution is to manually assign ranks to products (sometimes even within categories). However, this approach is not practical for large catalogs and might result in a bad search experience—for example, when products that are out of stock are listed at the top due to their manually assigned rank. +A common solution is to manually assign ranks to products (sometimes even within categories). However, this approach is not practical for large catalogs and might result in a bad search experience—for example, when products that are out of stock are listed at the top because of their manually assigned rank. ### Sorting by formulas based on scores @@ -142,7 +142,7 @@ Very different kinds of scoring functions are conceivable, and the advantages of To combine scores in such expressions, we normalize them between 0 and 1 and try to make sure that they are more or less equally distributed across all documents. If, for example, the ranking formula is *0.3 * score_1 + 0.7 * score_2* and the scores are in the same range, then you could say that score_1 has a 30% influence on the outcome of the sorting and score_2 an influence of 70%. The equal distribution is important because if, for example, most documents have a very high score_2, then having a high score_2 becomes much more important for appearing at the top of the ranking than having a high score_1 (an effect that can be consciously used). -So to find good normalization functions, look at the distribution of some measures across all products. This is the distribution of the number of sold items per product at Contortion (numbers are only up to the end of 2014 due to data sensitivity): +So to find good normalization functions, look at the distribution of some measures across all products. This is the distribution of the number of sold items per product at Contortion (numbers are only up to the end of 2014 because of data sensitivity): ![Computation of score top_seller](https://spryker.s3.eu-central-1.amazonaws.com/docs/Developer+Guide/Search+Engine/Data-Driven+Ranking/score-top-seller-computation.png) @@ -158,7 +158,7 @@ The last example is the expected delivery time in hours: Here our stakeholders made a conscious decision to define 48 hours as the neutral case (a score of 0.5) and everything after 60 hours as "bad": *0.5 - atan((x - 48) / 12) / π*. -Finally, a word on data processing: We compute these scores as part of the ETL / data integration processes of the data warehouse. Given the table `search_tmp.product_search_score_kpi`, which contains a list of performance measures per product, computing normalized scores can be as easy as this (most computations are left out due to their sensitive nature): +Finally, a word on data processing: We compute these scores as part of the ETL / data integration processes of the data warehouse. Given the table `search_tmp.product_search_score_kpi`, which contains a list of performance measures per product, computing normalized scores can be as easy as this (most computations are left out because of their sensitive nature): ```sql CREATE TABLE search_next.product_search_score AS diff --git a/docs/pbc/all/search/202311.0/base-shop/third-party-integrations/algolia/algolia.md b/docs/pbc/all/search/202311.0/base-shop/third-party-integrations/algolia/algolia.md index a82708fefc4..6992fb03faf 100644 --- a/docs/pbc/all/search/202311.0/base-shop/third-party-integrations/algolia/algolia.md +++ b/docs/pbc/all/search/202311.0/base-shop/third-party-integrations/algolia/algolia.md @@ -10,7 +10,7 @@ redirect_from: ![algolia-hero](https://spryker.s3.eu-central-1.amazonaws.com/docs/pbc/all/search/third-party-integrations/algolia/algolia-hero.png) -Spryker is shipped with [Elasticsearch](https://www.elastic.co/elasticsearch/) as the default search engine. However, you can replace it with [Algolia](https://www.algolia.com/). The Algolia search engine stands out due to its performance. With the Algolia app, your users can conduct advanced searches of active concrete products in your store. +Spryker is shipped with [Elasticsearch](https://www.elastic.co/elasticsearch/) as the default search engine. However, you can replace it with [Algolia](https://www.algolia.com/). The Algolia search engine stands out because of its performance. With the Algolia app, your users can conduct advanced searches of active concrete products in your store.