{"title":"Express checkout","category":"default","creationDate":1562937840,"content":"<p>Our <a href=\"https:\/\/github.com\/Adyen\/adyen-magento2-express-checkout\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">express checkout module<\/a> lets you implement <a href=\"\/pt\/payment-methods\/express-checkout\">express checkout<\/a> for your headless Adobe Commerce integration.<\/p>\n<p>The module supports express payments with <a href=\"\/pt\/payment-methods\/apple-pay\">Apple Pay<\/a>, <a href=\"\/pt\/payment-methods\/google-pay\">Google Pay<\/a>, and <a href=\"\/pt\/payment-methods\/paypal\">PayPal<\/a>. You can offer the option to use express checkout by placing express payment method buttons in the product detail, cart, and mini-cart pages on your website. This lets your shopper complete their payment  without having to go to a separate checkout page.<\/p>\n<h2>Requirements<\/h2>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">Make sure that you have: <ul><li markdown=\"1\">A <a href=\"\/pt\/plugins\/adobe-commerce\/headless-integration\">headless Adobe Commerce plugin integration<\/a>.<\/li><li markdown=\"1\"><a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=Components&amp;version=latest\">Web Components<\/a> integrations for the <a href=\"\/pt\/payment-methods\/express-checkout\/#supported-express-payment-methods\">express payment methods<\/a> that you want to support.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\"><a href=\"\/pt\/plugins\/adobe-commerce\/set-up-the-plugin-in-adobe-commerce#use-express-checkout\">Install the Adobe Commerce express checkout module<\/a>.<\/li><li markdown=\"1\"><a href=\"\/pt\/payment-methods\/express-checkout\/#get-started\">Implement express checkout<\/a> for the express payment methods that you offer.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Headless integration types<\/h2>\n<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Learn more<\/h5><div class=\"additional-info-block__body\"><p><img alt=\"\" src=\"\/images\/a\/1\/e\/2\/c\/a1e2c8f087730e8565e5073245582a9636238705-github-icon.png\" \/>&nbsp;Find the <a href=\"https:\/\/github.com\/Adyen\/adyen-magento2-express-checkout\/blob\/main\/etc\/schema.graphqls\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">GraphQL schema definition<\/a> and the <a href=\"https:\/\/github.com\/Adyen\/adyen-magento2-express-checkout\/blob\/main\/etc\/webapi.xml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">REST API implementation<\/a> for express checkout on our GitHub.<\/p><\/div><\/div>\n\n<p>You can use one of the following web APIs to get Adyen functionalities in your Adobe Commerce headless implementation:<\/p>\n<ul>\n<li><strong>REST<\/strong>: The most widely used web API. This method allows you to access all the functionalities provided by the Adyen plugin.<\/li>\n<li><strong>GraphQL<\/strong>: <div data-component-wrapper=\"tag\">\n    <tag :variant=&quot;warning&quot;>\n        Requires plugin v8.2.0 or later\n    <\/tag>\n<\/div>\nThe Adyen plugin utilizes the <code>\/graphql<\/code> endpoint exposed by the Adobe Commerce back-end, and adds functionality that is related to the plugin. You can access all functionalities provided by the Adyen plugin with this method. For more information, checkout the <a href=\"https:\/\/developer.adobe.com\/commerce\/webapi\/graphql\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adobe Commerce GraphQL documentation<\/a>.<\/li>\n<\/ul>\n<p>The steps to follow to set up express payment methods are different for REST and GraphQL integrations. If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is <code>\/graphql<\/code>, and there are different <a href=\"https:\/\/graphql.org\/learn\/queries\/#mutations\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">mutations<\/a> that you need to use.<\/p>\n<h2>How it works<\/h2>\n<p>With a headless Adobe Commerce integration, you can use the Adyen <a href=\"\/pt\/online-payments\/build-your-integration\/advanced-flow\/?platform=Web&amp;integration=Components&amp;version=latest\">Web Components<\/a> to support express checkout. You use our Components to show the express payment methods to your shoppers, and make requests to the Adobe Commerce API to handle the payment flow.<\/p>\n<p>The flow depends on where you show the option to use express checkout in your store:<\/p>\n\n<div id=\"tab27zU9\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Cart or mini-cart page&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;Adobe Commerce &lt;a href=\\&quot;#initialize-a-quote\\&quot;&gt;initializes a quote for the order&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper enters their shipping address, &lt;a href=\\&quot;#shipping-address\\&quot;&gt;present the available shipping methods&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper selects a shipping method, &lt;a href=\\&quot;#shipping-methods\\&quot;&gt;update the order with the shipping method&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;The total payment amount may change depending on the shipping method the shopper selects, in such cases, &lt;a href=\\&quot;#handle-payment-amount-changes\\&quot;&gt;handle the changes to the payment amount&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper selects the express payment button, the payment method components trigger an event.&lt;\\\/li&gt;\\n&lt;li&gt;Use the Adobe Commerce API to &lt;a href=\\&quot;#complete-the-payment\\&quot;&gt;complete the payment&lt;\\\/a&gt; within the event.\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;cart_or_mini-cart_page_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Product detail page&quot;,&quot;content&quot;:&quot;&lt;\\\/li&gt;\\n&lt;li&gt;To display the option to use express checkout on the product detail page, &lt;a href=\\&quot;#initialize-a-quote\\&quot;&gt;initialize a quote for the order&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper enters their shipping address, &lt;a href=\\&quot;#shipping-address\\&quot;&gt;present the available shipping methods&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper selects a shipping method, &lt;a href=\\&quot;#shipping-methods\\&quot;&gt;update the order with the shipping method&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;The total payment amount may change depending on the shipping method the shopper selects, in such cases, you &lt;a href=\\&quot;#handle-payment-amount-changes\\&quot;&gt;handle the changes to the payment amount&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;li&gt;When the shopper selects the express payment button, the payment method components trigger an event.&lt;\\\/li&gt;\\n&lt;li&gt;Use Adobe Commerce API to &lt;a href=\\&quot;#complete-the-payment\\&quot;&gt;activate the quote that you initialized, and complete the payment&lt;\\\/a&gt; within the event.\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;product_detail_page_1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n<\/li>\n<\/ol>\n<h2 id=\"initialize-a-quote\">Initialize a quote<\/h2>\n<p>Adobe Commerce requires a quote to be generated to complete a transaction and create an order.<\/p>\n<p>If you show express payment methods on:<\/p>\n<ul>\n<li><strong>Cart or mini-cart pages<\/strong>: when a shopper adds an item to their shopping cart for the first time, Adobe commerce <a href=\"https:\/\/developer.adobe.com\/commerce\/webapi\/rest\/tutorials\/orders\/order-create-quote\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">creates a quote<\/a>. Proceed to <a href=\"#shipping-address\">get the shopper's address and available shipping methods<\/a>.<\/li>\n<li><strong>Product detail page<\/strong>: <a href=\"#initialize-a-quote-manually\">initialize a quote manually<\/a>.<\/li>\n<\/ul>\n<h3>Initialize a quote manually<\/h3>\n<p>To initialize a quote on the product detail page, make an API request.<\/p>\n<p>If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is <code>\/graphql<\/code>.<\/p>\n\n<div id=\"tabozZ0W\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;h4&gt;Logged-in shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init\\\/mine&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;productCartParams&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;An instance of the &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-magento2-express-checkout\\\/blob\\\/main\\\/Api\\\/Data\\\/ProductCartParamsInterface.php\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;ProductCartParamsInterface&lt;\\\/code&gt;\\n&lt;\\\/a&gt;, including the product ID, quantity, and options for configurable products. The object should be a JSON encoded string.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The logged-in shopper&#039;s real cart ID. If a cart already exists at the time of the initialization request, this request disables the existing real cart using the cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page. You receive this value in the response to your first request to the endpoint and can use it in your subsequent requests. In subsequent requests, this field is used to update the quote in case of changes to the order.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;In the response, you receive the &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; that you need to use to mount the component in the &lt;a href=\\&quot;#shipping-address\\&quot;&gt;next step&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;h4&gt;Guest shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init\\\/guest&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;productCartParams&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;An instance of the &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-magento2-express-checkout\\\/blob\\\/main\\\/Api\\\/Data\\\/ProductCartParamsInterface.php\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;ProductCartParamsInterface&lt;\\\/code&gt;\\n&lt;\\\/a&gt;, including the product ID, quantity, and options for configurable products in a JSON encoded string format.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;guestMaskedId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The guest shopper&#039;s real cart ID. If a cart already exists at the time of the initialization request, this request disables the existing real cart using the cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page. You receive this value in the response to your first request to the endpoint and can use it in your subsequent requests. In subsequent requests, this field is used to update the quote in case of changes to the order.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;In the response, you receive the &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; that you need to use to mount the component in the &lt;a href=\\&quot;#shipping-address\\&quot;&gt;next step&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest1_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Use the &lt;code&gt;expressInit&lt;\\\/code&gt; GraphQL mutation to initialize a quote on the product detail page. If there is already a quote initialized on the product detail page, this mutation updates the quote.&lt;\\\/p&gt;\\n&lt;p&gt;Create a data object to send in the mutation, that includes the following:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;productCartParams&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;An instance of the &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-magento2-express-checkout\\\/blob\\\/main\\\/Api\\\/Data\\\/ProductCartParamsInterface.php\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;ProductCartParamsInterface&lt;\\\/code&gt;\\n&lt;\\\/a&gt;, including the product ID, quantity, and options for configurable products in a JSON encoded string format.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;guestMaskedId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The guest shopper&#039;s real cart ID. If a cart already exists at the time of the initialization request, this request disables the existing real cart using the cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page. You receive this value in the response to your first request to the endpoint and can use it in your subsequent requests. In subsequent requests, this field is used to update the quote in case of changes to the order.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;In the response, you receive the &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; that you need to use to mount the component in the &lt;a href=\\&quot;#shipping-address\\&quot;&gt;next step&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql1_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"shipping-address\">Get the shopper's address and available shipping methods<\/h2>\n<p>After an Adobe Commerce quote is created for the shopper's order, start the express checkout flow by presenting the express payment method and collecting the shopper's details.<\/p>\n\n<div id=\"tabVM3SP\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Mount the express payment method component:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;On the &lt;strong&gt;cart and mini-cart pages&lt;\\\/strong&gt;, you can mount the component after your shopper adds an item to their cart.&lt;\\\/li&gt;\\n&lt;li&gt;On the &lt;strong&gt;product detail page&lt;\\\/strong&gt;, you can mount the component after receiving the &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper selects the &lt;strong&gt;Pay&lt;\\\/strong&gt; button for the express payment method, the component shows the payment form.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;For Apple Pay and Google Pay, you do not need to take additional action to show the payment form.&lt;\\\/li&gt;\\n&lt;li&gt;For PayPal, there are &lt;a href=\\&quot;#show-the-paypal-lightbox\\&quot;&gt;extra steps to show the PayPal lightbox&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;accordion-shortcode adl-accordion adl-accordion--max-height-transition\\&quot; data-expand=\\&quot;true\\&quot; data-ignore=\\&quot;anchorjs-link\\&quot;&gt;\\n    \\n    &lt;div class=\\&quot;adl-accordion__item\\&quot; style=\\&quot;\\&quot;&gt;\\n        &lt;div tabindex=\\&quot;0\\&quot; role=\\&quot;item\\&quot; aria-expanded=\\&quot;false\\&quot; class=\\&quot;adl-accordion__header\\&quot;&gt;\\n            &lt;i class=\\&quot;adl-accordion__toggle adl-icon-chevron-down\\&quot;&gt;&lt;\\\/i&gt;\\n            &lt;div class=\\&quot;adl-accordion__title-wrapper\\&quot; data-accordion=\\&quot;#show-the-pay-pal-lightbox\\&quot;&gt;\\n                                    &lt;h4 class=\\&quot;adl-accordion__title\\&quot;&gt;Show the PayPal lightbox&lt;\\\/h4&gt;\\n                            &lt;\\\/div&gt;\\n        &lt;\\\/div&gt;\\n        &lt;div role=\\&quot;region\\&quot; class=\\&quot;adl-accordion__content\\&quot;&gt;\\n            \\n&lt;p&gt;For PayPal express payments, you need initial payment data to show the PayPal lightbox when your shopper selects the PayPal button.&lt;\\\/p&gt;\\n&lt;p&gt;Make a request to one of the following endpoints to obtain the initial data, depending on your shopper&#039;s use case.&lt;\\\/p&gt;\\n&lt;h4&gt;Logged-in shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init-payments\\\/mine&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;stateData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The &lt;code&gt;state.data&lt;\\\/code&gt; from the &lt;code&gt;onSubmit&lt;\\\/code&gt; event in the PayPal Web Component.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt; &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included. The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included. If you initialized a quote manually to mount the payment method component on the product detail page, this is the quote ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;h4&gt;Guest shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init-payments\\\/guest&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;stateData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The &lt;code&gt;state.data&lt;\\\/code&gt; from the &lt;code&gt;onSubmit&lt;\\\/code&gt; event in the PayPal Web Component.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;guestMaskedId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt; &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included. The guest shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt; &lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included. If you initialized a quote manually to mount the payment method component on the product detail page, this is the quote ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;p&gt;When you make a request to one of these endpoints, we make a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; request to obtain the &lt;code&gt;paymentData&lt;\\\/code&gt; object. The response includes the following:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;paymentData&lt;\\\/code&gt;: The payment data object that is required to show the PayPal lightbox. You need this value to update the PayPal order in later steps.&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;&lt;code&gt;response.action&lt;\\\/code&gt;: The &lt;code&gt;action&lt;\\\/code&gt; object from the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; response. Pass this from your server to the Component:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-javascript\\&quot;&gt;component.handleAction(response.action);&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;If the PayPal overlay gets stuck at loading state, make sure that you pass the full &lt;code&gt;response.action&lt;\\\/code&gt; object to the Component. See &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/paypal-troubleshooting\\\/#paypal-overlay-keeps-loading\\&quot;&gt;Troubleshooting PayPal&lt;\\\/a&gt; for more information.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n\\n        &lt;\\\/div&gt;\\n    &lt;\\\/div&gt;\\n&lt;\\\/div&gt;\\n\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper enters their shipping contact and address in the payment form, obtain the address changes from the event handlers of each payment method component.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/#ap-events\\&quot;&gt;Apple Pay Component&lt;\\\/a&gt; calls the &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/apple_pay_on_the_web\\\/applepaysession\\\/1778009-onshippingcontactselected\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;onShippingContactSelected&lt;\\\/code&gt;\\n&lt;\\\/a&gt; event handler when the shopper selects their shipping contact.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the event handler, make an API request to get the available shipping methods based on the shopper&#039;s shipping address.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;strong&gt;Logged-in shoppers&lt;\\\/strong&gt;:\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsmineestimate-shipping-methods\\\/#operation\\\/PostV1CartsMineEstimateshippingmethods\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/carts\\\/mine\\\/estimate-shipping-methods&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;strong&gt;Guest shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/guest-cartscartIdestimate-shipping-methods#operation\\\/PostV1GuestcartsCartIdEstimateshippingmethods\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/estimate-shipping-methods&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only if you support PayPal express, &lt;a href=\\&quot;#update-paypal\\&quot;&gt;update the PayPal order&lt;\\\/a&gt; after you get the available shipping methods to update the PayPal lightbox.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Use the response to present the available shipping methods to your shoppers.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest2_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Mount the express payment method component:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;On the &lt;strong&gt;cart and mini-cart pages&lt;\\\/strong&gt;, you can mount the component anytime after your shopper adds an item to their cart.&lt;\\\/li&gt;\\n&lt;li&gt;On the &lt;strong&gt;product detail page&lt;\\\/strong&gt;, you can mount the component after receiving the &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper selects the &lt;strong&gt;Pay&lt;\\\/strong&gt; button for the express payment method, the component shows the payment form.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;For Apple Pay and Google Pay, you do not need to take additional action to show the payment form.&lt;\\\/li&gt;\\n&lt;li&gt;For PayPal, there are &lt;a href=\\&quot;#show-the-paypal-lightbox\\&quot;&gt;extra steps to show the PayPal lightbox&lt;\\\/a&gt;.&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;accordion-shortcode adl-accordion adl-accordion--max-height-transition\\&quot; data-expand=\\&quot;true\\&quot; data-ignore=\\&quot;anchorjs-link\\&quot;&gt;\\n    \\n    &lt;div class=\\&quot;adl-accordion__item\\&quot; style=\\&quot;\\&quot;&gt;\\n        &lt;div tabindex=\\&quot;0\\&quot; role=\\&quot;item\\&quot; aria-expanded=\\&quot;false\\&quot; class=\\&quot;adl-accordion__header\\&quot;&gt;\\n            &lt;i class=\\&quot;adl-accordion__toggle adl-icon-chevron-down\\&quot;&gt;&lt;\\\/i&gt;\\n            &lt;div class=\\&quot;adl-accordion__title-wrapper\\&quot; data-accordion=\\&quot;#show-the-pay-pal-lightbox\\&quot;&gt;\\n                                    &lt;h4 class=\\&quot;adl-accordion__title\\&quot;&gt;Show the PayPal lightbox&lt;\\\/h4&gt;\\n                            &lt;\\\/div&gt;\\n        &lt;\\\/div&gt;\\n        &lt;div role=\\&quot;region\\&quot; class=\\&quot;adl-accordion__content\\&quot;&gt;\\n            \\n&lt;p&gt;For PayPal express payments, you need initial payment data to show the PayPal lightbox when your shopper selects the PayPal button.&lt;\\\/p&gt;\\n&lt;p&gt;Use the &lt;code&gt;adyenExpressInitPayments&lt;\\\/code&gt; mutation to obtain the payment data. Prepare a data object to send in the mutation that includes the following:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;stateData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The &lt;code&gt;state.data&lt;\\\/code&gt; from the &lt;code&gt;onSubmit&lt;\\\/code&gt; event in the PayPal Web Component.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt; &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included. The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;strong&gt;Required if&lt;\\\/strong&gt; &lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included. If you initialized a quote manually to mount the payment method component on the product detail page, this is the quote ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;This mutation makes a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; request to obtain the &lt;code&gt;paymentData&lt;\\\/code&gt; object. The response includes the following:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;paymentData&lt;\\\/code&gt;: The payment data object that is required to show the PayPal lightbox. You need this value to update the PayPal order in later steps.&lt;\\\/li&gt;\\n&lt;li&gt;&lt;code&gt;response.action&lt;\\\/code&gt;: The &lt;code&gt;action&lt;\\\/code&gt; object from the  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/payments\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/payments&lt;\\\/a&gt; response. Pass this from your server to the Component:\\n&lt;pre&gt;&lt;code class=\\&quot;language-javascript\\&quot;&gt;component.handleAction(response.action);&lt;\\\/code&gt;&lt;\\\/pre&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;If the PayPal overlay gets stuck at loading state, make sure that you pass the full &lt;code&gt;response.action&lt;\\\/code&gt; object to the Component. See &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/paypal-troubleshooting\\\/#paypal-overlay-keeps-loading\\&quot;&gt;Troubleshooting PayPal&lt;\\\/a&gt; for more information.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n\\n        &lt;\\\/div&gt;\\n    &lt;\\\/div&gt;\\n&lt;\\\/div&gt;\\n\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper enters their shipping contact and address in the payment form, obtain the address changes from the event handlers of each payment method component.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/#ap-events\\&quot;&gt;Apple Pay Component&lt;\\\/a&gt; calls the &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/apple_pay_on_the_web\\\/applepaysession\\\/1778009-onshippingcontactselected\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;onShippingContactSelected&lt;\\\/code&gt;\\n&lt;\\\/a&gt; event handler when the shopper selects their shipping contact.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the event handler, use the &lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-estimateShippingMethods\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;estimateShippingMethods&lt;\\\/code&gt;\\n&lt;\\\/a&gt; GraphQL mutation to get the available shipping methods based on the shopper&#039;s shipping address.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only if you support PayPal express, &lt;a href=\\&quot;#update-paypal\\&quot;&gt;update the PayPal order&lt;\\\/a&gt; after you get the available shipping methods to update the PayPal lightbox.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Use the response to present the available shipping methods to your shoppers.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql2_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<\/ol>\n<h2 id=\"shipping-methods\">Update the order with the selected shipping method<\/h2>\n<p>Update the order in Adobe Commerce after your shopper selects one of the available shipping methods.<\/p>\n\n<div id=\"tabjfNXB\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper selects a shipping method, obtain the selected shipping method from the event handlers of each payment method component.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/#ap-events\\&quot;&gt;Apple Pay Component&lt;\\\/a&gt; calls the &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/apple_pay_on_the_web\\\/applepaysession\\\/1778028-onshippingmethodselected\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;onShippingMethodSelected&lt;\\\/code&gt;\\n&lt;\\\/a&gt; event handler when the shopper selects a shipping method.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the event handler, make an API request to one of the following endpoints to update the Adobe Commerce quote with the shopper address and shipping method that you saved to the component.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;strong&gt;Logged-in shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsmineshipping-information#operation\\\/PostV1CartsMineShippinginformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/carts\\\/mine\\\/shipping-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;strong&gt;Guest shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/guest-cartscartIdshipping-information#operation\\\/PostV1GuestcartsCartIdShippinginformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/shipping-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;Apple Pay and Google Pay return the shopper details only after a payment is authorized. For these payment methods, use dummy values when calling the &lt;code&gt;\\\/shipping-information&lt;\\\/code&gt; endpoint. You can call this endpoint again when you receive the shopper&#039;s details.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only if you support PayPal express, &lt;a href=\\&quot;#update-paypal\\&quot;&gt;update the PayPal order&lt;\\\/a&gt; after your shopper selects a shipping method to update the PayPal lightbox.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest3_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;When your shopper selects a shipping method, obtain the selected shipping method from the event handlers of each payment method component.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/#ap-events\\&quot;&gt;Apple Pay Component&lt;\\\/a&gt; calls the &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/apple_pay_on_the_web\\\/applepaysession\\\/1778028-onshippingmethodselected\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;onShippingMethodSelected&lt;\\\/code&gt;\\n&lt;\\\/a&gt; event handler when the shopper selects a shipping method.&lt;\\\/p&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;In the event handler, use the following GraphQL mutations to update the Adobe Commerce quote with the shopper address and shipping method that you saved to the component.&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-setShippingAddressesOnCart\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;setShippingAddressesOnCart&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-setShippingMethodsOnCart\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;setShippingMethodsOnCart&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;Apple Pay and Google Pay return the shopper details after the payment is authorized. For these payment methods, use dummy values. You can use the mutation again when you receive the shopper&#039;s details.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only if you support PayPal express, &lt;a href=\\&quot;#update-paypal\\&quot;&gt;update the PayPal order&lt;\\\/a&gt; after your shopper selects a shipping method to update the PayPal lightbox.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql3_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<\/ol>\n<h2>Handle payment amount changes<\/h2>\n<p>The total payment amount may change depending on the shopper's selected shipping method. You must then update the payment method component and the Adobe Commerce quote with the final amount.<\/p>\n\n<div id=\"tabA1tVc\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;To get the total order amount, make an API request to one of the following endpoints:\\n&lt;ul&gt;\\n&lt;li&gt;&lt;strong&gt;Logged-in shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsminetotals-information#operation\\\/PostV1CartsMineTotalsinformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/carts\\\/mine\\\/totals-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;strong&gt;Guest shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartscartIdtotals-information#operation\\\/PostV1CartsCartIdTotalsinformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/totals-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;li&gt;After you obtain the updated total payment amount, pass this to the payment method component. The payment method components have functions that you can use in event handlers.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/express-checkout\\\/#step-4-configure-the-callback-to-handle-shipping-method-changes\\&quot;&gt;Apple Pay&lt;\\\/a&gt; component lets you use the &lt;code&gt;resolve()&lt;\\\/code&gt; function in the event handler to set the new payment amount.\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest4_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;&lt;\\\/li&gt;\\n&lt;li&gt;To get the total order amount, use the &lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-estimateTotals\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;estimateTotals&lt;\\\/code&gt;\\n&lt;\\\/a&gt; GraphQL mutation.&lt;\\\/li&gt;\\n&lt;li&gt;After you obtain the updated total payment amount, pass this to the payment method component. The payment method components have functions that you can use in event handlers.&lt;br \\\/&gt;\\nFor example, the &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/apple-pay\\\/web-component\\\/express-checkout\\\/#step-4-configure-the-callback-to-handle-shipping-method-changes\\&quot;&gt;Apple Pay&lt;\\\/a&gt; component lets you use the &lt;code&gt;resolve()&lt;\\\/code&gt; function in the event handler to set the new payment amount.\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql4_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Complete the payment<\/h2>\n<p>To complete the payment, the shopper's cart must be active. If you show express payment methods on:<\/p>\n<ul>\n<li><strong>Cart or mini-cart pages<\/strong>: the shopper's cart is already active. Proceed to <a href=\"#place-the-order\">place the order<\/a>.<\/li>\n<li><strong>Product detail page<\/strong>: you must <a href=\"#activate-the-cart-manually\">manually activate<\/a> the cart for the quote you initialized manually.<\/li>\n<\/ul>\n<h3>Activate the cart manually<\/h3>\n<p>If you show express payment methods on the product detail page, and <a href=\"#initialize-a-quote\">initialized a quote manually<\/a>, make an API request to activate the cart for the quote you initialized.<\/p>\n<p>If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is <code>\/graphql<\/code>.<\/p>\n\n<div id=\"tab961Mx\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;h4&gt;Logged-in shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/activate\\\/mine&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page. You receive this in the &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init\\\/guest&lt;\\\/code&gt; response when you &lt;a href=\\&quot;#initialize-a-quote-manually\\&quot;&gt;initialize a quote manually&lt;\\\/a&gt;.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The ID of the logged-in shopper&#039;s real cart.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;h4&gt;Guest shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/activate\\\/guest&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.  You receive this in the &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init\\\/guest&lt;\\\/code&gt; response when you &lt;a href=\\&quot;#initialize-a-quote-manually\\&quot;&gt;initialize a quote manually&lt;\\\/a&gt;.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;currentMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The ID of the guest shopper&#039;s real cart.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest5_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Use the &lt;code&gt;expressActivate&lt;\\\/code&gt; mutation to activate the quote you initialized on the product detail page for logged-in users. This mutation disables any other real carts.&lt;\\\/p&gt;\\n&lt;p&gt;Create a data object to send in the mutation, that includes the following:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page. You receive this in the &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/init\\\/guest&lt;\\\/code&gt; response when you &lt;a href=\\&quot;#initialize-a-quote-manually\\&quot;&gt;initialize a quote manually&lt;\\\/a&gt;.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql5_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h3>Place the order<\/h3>\n<p>When the shopper selects the express payment button, the payment method components trigger an event to complete the payment. For example, the <a href=\"\/pt\/payment-methods\/apple-pay\/web-component\/\">Apple Pay Component<\/a> triggers the <a href=\"https:\/\/developer.apple.com\/documentation\/apple_pay_on_the_web\/applepaysession\/1778020-onpaymentauthorized\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">\n  <code>onAuthorized<\/code>\n<\/a> event. In this event, implement the steps to complete the payment.<\/p>\n\n<div id=\"tabeFUZu\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;ol&gt;\\n&lt;li&gt;\\n&lt;p&gt;Update the cart details using the data you get in the payment method component event. There are different endpoints to update the billing address and shipping information.&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Order details&lt;\\\/th&gt;\\n&lt;th&gt;Endpoint for logged-in shoppers&lt;\\\/th&gt;\\n&lt;th&gt;Endpoint for guest shoppers&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;Billing address&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsminebilling-address#operation\\\/PostV1CartsMineBillingaddress\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;V1\\\/carts\\\/mine\\\/billing-address&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/guest-cartscartIdbilling-address#operation\\\/PostV1GuestcartsCartIdBillingaddress\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/billing-address&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;Shipping information&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsmineshipping-information#operation\\\/PostV1CartsMineShippinginformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;V1\\\/carts\\\/mine\\\/shipping-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/guest-cartscartIdshipping-information#operation\\\/PostV1GuestcartsCartIdShippinginformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/shipping-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Place the order with an API request to one of the following endpoints:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;strong&gt;Logged-in shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/cartsminepayment-information#operation\\\/PostV1CartsMinePaymentinformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/carts\\\/mine\\\/payment-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;li&gt;&lt;strong&gt;Guest shoppers&lt;\\\/strong&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;a href=\\&quot;https:\\\/\\\/adobe-commerce.redoc.ly\\\/2.4.7-admin\\\/tag\\\/guest-cartscartIdpayment-information#operation\\\/PostV1GuestcartsCartIdPaymentinformation\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;\\\/V1\\\/guest-carts\\\/{cartId}\\\/payment-information&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;Refer to our &lt;a href=\\&quot;\\\/pt\\\/plugins\\\/adobe-commerce\\\/headless-integration\\\/#place-order\\&quot;&gt;headless integration documentation&lt;\\\/a&gt; to learn more about placing an order with the REST API endpoints above.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n&lt;code-sample :title=\\&quot;&#039;Example request body for the \\\/payment-information endpoint&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;javascript\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;let paymentInformationPayload = {\\\\n   \\\\\\&quot;email\\\\\\&quot;:\\\\\\&quot;john.smith@email.com\\\\\\&quot;,\\\\n   \\\\\\&quot;paymentMethod\\\\\\&quot;:{\\\\n      \\\\\\&quot;method\\\\\\&quot;:\\\\\\&quot;adyen_applepay\\\\\\&quot;,\\\\n      \\\\\\&quot;additional_data\\\\\\&quot;:{\\\\n         \\\\\\&quot;brand_code\\\\\\&quot;:\\\\\\&quot;applepay\\\\\\&quot;,\\\\n         \\\\\\&quot;stateData\\\\\\&quot;:\\\\\\&quot;JSON.stringify(componentData)\\\\\\&quot; \\\\\\\/\\\\\\\/ componentData is the state.data from the payment method component.\\\\n      }\\\\n   }\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only for Apple Pay, resolve the payment method component with a success message. You can use the &lt;code&gt;.resolve()&lt;\\\/code&gt; function to do this. See &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-magento2-express-checkout\\\/blob\\\/d63b452992f4db1c36c2cb2c2c091513e73198b4\\\/view\\\/frontend\\\/web\\\/js\\\/applepay\\\/button.js#L532\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;an example&lt;\\\/a&gt; on our GitHub.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest6_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Update the cart details using the data you get in the payment method component event. There are different GraphQL mutations to update the billing address and shipping information.&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Order details&lt;\\\/th&gt;\\n&lt;th&gt;GraphQL mutation&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;Billing address&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-setBillingAddressOnCart\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;setBillingAddressOnCart&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;Shipping information&lt;\\\/td&gt;\\n&lt;td&gt;&lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql-api\\\/index.html#mutation-setShippingAddressesOnCart\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;setShippingAddressesOnCart&lt;\\\/code&gt;\\n&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Place the order with the &lt;code&gt;placeAdyenOrder&lt;\\\/code&gt; mutation.  This mutation is a combination of the &lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql\\\/schema\\\/cart\\\/mutations\\\/set-payment-method\\\/\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;setPaymentMethodOnCart&lt;\\\/code&gt;\\n&lt;\\\/a&gt; and &lt;a href=\\&quot;https:\\\/\\\/developer.adobe.com\\\/commerce\\\/webapi\\\/graphql\\\/schema\\\/cart\\\/mutations\\\/place-order\\\/\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;placeOrder&lt;\\\/code&gt;\\n&lt;\\\/a&gt; Adobe Commerce GraphQL mutations.&lt;\\\/p&gt;\\n&lt;div class=\\&quot;notices green\\&quot;&gt;\\n&lt;p&gt;Refer to our &lt;a href=\\&quot;\\\/pt\\\/plugins\\\/adobe-commerce\\\/headless-integration\\\/#place-order\\&quot;&gt;headless integration documentation&lt;\\\/a&gt; to learn more about placing an order with this GraphQL mutations.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;\\\/li&gt;\\n&lt;li&gt;\\n&lt;p&gt;Only for Apple Pay, resolve the payment method component with a success message. You can use the &lt;code&gt;.resolve()&lt;\\\/code&gt; function to do this. See &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-magento2-express-checkout\\\/blob\\\/d63b452992f4db1c36c2cb2c2c091513e73198b4\\\/view\\\/frontend\\\/web\\\/js\\\/applepay\\\/button.js#L532\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;an example&lt;\\\/a&gt; on our GitHub.&lt;\\\/p&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql6_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<\/li>\n<\/ol>\n<div class=\"notices green\">\n<p>If you <a href=\"#initialize-a-quote-manually\">initialized a quote manually<\/a> to mount the payment method component on the product detail page, and disabled the shopper's real cart, the plugin activates the disabled cart after the payment is completed.<\/p>\n<\/div>\n<h2>Get the payment outcome<\/h2>\n<p>After you place the order, use the same REST API and GraphQL endpoints you use to <a href=\"\/pt\/plugins\/adobe-commerce\/headless-integration#payment-status\">check the payment status<\/a> with your standard headless implementation.<\/p>\n<p>When the payment is completed, redirect shoppers to your payment success page.<\/p>\n<h3>Handle abandoned carts<\/h3>\n<p><a href=\"#initialize-a-quote\">If you initialized a quote manually<\/a> to initiate the express checkout flow on the product detail page, and the shopper abandons the payment page, cancel the quote manually. The payment method components throw an event to handle this case. For example, the Apple Pay component throws the <code>onError<\/code> event.<\/p>\n<p>In the payment method component's event, make an API request to cancel the quote.<\/p>\n<p>If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is <code>\/graphql<\/code>.<\/p>\n\n<div id=\"tabY1Z7E\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;h4&gt;Logged-in shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/cancel\\\/mine&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;h4&gt;Guest shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;\\n&lt;p&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/cancel\\\/guest&lt;\\\/code&gt;&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;maskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest7_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Use the &lt;code&gt;expressCancel&lt;\\\/code&gt; mutation to cancel the quote you initialized on the product detail page for logged-in users.&lt;\\\/p&gt;\\n&lt;p&gt;Create a data object to send in the mutation, that includes:&lt;\\\/p&gt;\\n&lt;ul&gt;\\n&lt;li&gt;&lt;code&gt;maskedQuoteId&lt;\\\/code&gt;: The quote initialized to mount the payment method component on the product detail page.\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql7_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n<\/li>\n<\/ul>\n<h2 id=\"update-paypal\">Updating PayPal orders<\/h2>\n<p>For PayPal express payments, you must update the order each time your shopper changes the shipping address or method to update the PayPal lightbox. In the Adyen Checkout API, this is done with the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/paypal\/updateOrder\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/paypal\/updateOrder<\/a> endpoint.<\/p>\n<p>During the express flow, you have to update the order when:<\/p>\n<ul>\n<li><a href=\"#shipping-address\">The shopper initially enters their shipping address in the PayPal lightbox<\/a>.<\/li>\n<li><a href=\"#shipping-methods\">The shopper selects one of the delivery methods that are available<\/a>.<\/li>\n<li>The shopper modifies either of these details.<\/li>\n<\/ul>\n<p>The PayPal component uses events, such as <code>onShippingAddressChange<\/code> or <code>onShippingOptionsChange<\/code>, to handle shipping address and method changes. In these events, make an API request to update the order.<\/p>\n<p>If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is <code>\/graphql<\/code>.<\/p>\n\n<div id=\"tabi0EZu\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;REST&quot;,&quot;content&quot;:&quot;\\n&lt;h4&gt;Logged-in shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/paypal-update-order\\\/mine&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The updated final payment amount.&lt;br&gt;&lt;br&gt;This amount is the item total plus the shipping costs of the selected &lt;code&gt;deliveryMethod&lt;\\\/code&gt;, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;paymentData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For the first request to this endpoint, this is the &lt;code&gt;paymentData&lt;\\\/code&gt; you receive when you made a request to &lt;a href=\\&quot;#show-the-paypal-lightbox\\&quot;&gt;show the PayPal lightbox&lt;\\\/a&gt;.  In subsequent requests, this is the updated &lt;code&gt;paymentData&lt;\\\/code&gt; you receive in the response to this endpoint.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The array that lists the delivery methods available for the delivery address, and their fees.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The cost of the delivery method, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.description&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The description for the delivery method.&lt;br&gt;&lt;br&gt;This field is required by PayPal; however, the plugin allows you to configure shipping methods without a &lt;strong&gt;Title&lt;\\\/strong&gt; or &lt;strong&gt;Label&lt;\\\/strong&gt;. We recommend building fallback logic to ensure a meaningful value is always provided, and to avoid silent checkout failures. In our frontend implementation, we use the following fallback order:&lt;ol&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Title&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Label&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Carrier Code (as generated by the plugin)&lt;\\\/li&gt;&lt;\\\/ol&gt;This ensures that the value is never empty, and uniquely identifies each shipping method for the shopper. &lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;The plugin automatically injects the Carrier Code into a blank &lt;code&gt;description&lt;\\\/code&gt; field.&lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.reference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Your reference for the delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.selected&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;, set to &lt;strong&gt;true&lt;\\\/strong&gt; for the delivery method that is selected. Only one delivery method can be selected at a time.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The type of delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;h4&gt;Guest shoppers&lt;\\\/h4&gt;\\n&lt;ul&gt;\\n&lt;li&gt;POST &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/paypal-update-order\\\/guest&lt;\\\/code&gt;&lt;\\\/li&gt;\\n&lt;\\\/ul&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The updated final payment amount.&lt;br&gt;&lt;br&gt;This amount is the item total plus the shipping costs of the selected &lt;code&gt;deliveryMethod&lt;\\\/code&gt;, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;paymentData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For the first request to this endpoint, this is the &lt;code&gt;paymentData&lt;\\\/code&gt; you receive when you made a request to &lt;a href=\\&quot;#show-the-paypal-lightbox\\&quot;&gt;show the PayPal lightbox&lt;\\\/a&gt;.  In subsequent requests, this is the updated &lt;code&gt;paymentData&lt;\\\/code&gt; you receive in the response to this endpoint.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The array that lists the delivery methods available for the delivery address, and their fees.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The cost of the delivery method, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.description&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The description for the delivery method.&lt;br&gt;&lt;br&gt;This field is required by PayPal; however, the plugin allows you to configure shipping methods without a &lt;strong&gt;Title&lt;\\\/strong&gt; or &lt;strong&gt;Label&lt;\\\/strong&gt;. We recommend building fallback logic to ensure a meaningful value is always provided, and to avoid silent checkout failures. In our frontend implementation, we use the following fallback order:&lt;ol&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Title&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Label&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Carrier Code (as generated by the plugin)&lt;\\\/li&gt;&lt;\\\/ol&gt;This ensures that the value is never empty, and uniquely identifies each shipping method for the shopper. &lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;The plugin automatically injects the Carrier Code into a blank &lt;code&gt;description&lt;\\\/code&gt; field.&lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.reference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Your reference for the delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.selected&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;, set to &lt;strong&gt;true&lt;\\\/strong&gt; for the delivery method that is selected. Only one delivery method can be selected at a time.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The type of delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;When you make a request to one of these endpoints, we make a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/paypal\\\/updateOrder\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/paypal\\\/updateOrder&lt;\\\/a&gt; request. You get an updated &lt;code&gt;paymentData&lt;\\\/code&gt; that you can use in your subsequent requests to update the PayPal order again.&lt;\\\/p&gt;\\n&lt;p&gt;Pass the updated object to the component:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-javascript\\&quot;&gt;component.updatePaymentData(response.paymentData);&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;rest&quot;,&quot;oldTabId&quot;:&quot;rest1_1&quot;,&quot;relation&quot;:&quot;rest&quot;},{&quot;title&quot;:&quot;GraphQL&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Use the &lt;code&gt;adyenExpressPaypalUpdateOrder&lt;\\\/code&gt; mutation to update the PayPal order.&lt;\\\/p&gt;\\n&lt;p&gt;Create a data object to send in the mutation, that includes the following:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th&gt;Parameter&lt;\\\/th&gt;\\n&lt;th&gt;Required&lt;\\\/th&gt;\\n&lt;th&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The updated final payment amount.&lt;br&gt;&lt;br&gt;This amount is the item total plus the shipping costs of the selected &lt;code&gt;deliveryMethod&lt;\\\/code&gt;, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;paymentData&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For the first request to this endpoint, this is the &lt;code&gt;paymentData&lt;\\\/code&gt; you receive when you made a request to &lt;a href=\\&quot;#show-the-paypal-lightbox\\&quot;&gt;show the PayPal lightbox&lt;\\\/a&gt;.  In subsequent requests, this is the updated &lt;code&gt;paymentData&lt;\\\/code&gt; you receive in the &lt;code&gt;\\\/V1\\\/adyen\\\/express\\\/paypal-update-order\\\/mine&lt;\\\/code&gt; response.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenCartId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The logged-in shopper&#039;s real cart ID.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;adyenMaskedQuoteId&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required if &lt;code&gt;adyenCartId&lt;\\\/code&gt; is not included&lt;\\\/td&gt;\\n&lt;td&gt;The quote initialized to mount the payment method component on the product detail page.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The array that lists the delivery methods available for the delivery address, and their fees.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.amount&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The cost of the delivery method, specified as an object:&lt;ul&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;currency&lt;\\\/code&gt; as a three-character &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#currency-codes?target=_blank\\&quot;&gt;ISO currency code&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;&lt;code&gt;value&lt;\\\/code&gt; in &lt;a href=\\&quot;\\\/pt\\\/development-resources\\\/currency-codes#minor-units?target=_blank\\&quot;&gt;minor units&lt;\\\/a&gt;.&lt;\\\/li&gt;&lt;\\\/ul&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.description&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Required only for &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The description for the delivery method.&lt;br&gt;&lt;br&gt;This field is required by PayPal; however, the plugin allows you to configure shipping methods without a &lt;strong&gt;Title&lt;\\\/strong&gt; or &lt;strong&gt;Label&lt;\\\/strong&gt;. We recommend building fallback logic to ensure a meaningful value is always provided, and to avoid silent checkout failures. In our frontend implementation, we use the following fallback order:&lt;ol&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Title&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Label&lt;\\\/li&gt;&lt;li markdown=\\&quot;1\\&quot;&gt;Shipping Method Carrier Code (as generated by the plugin)&lt;\\\/li&gt;&lt;\\\/ol&gt;This ensures that the value is never empty, and uniquely identifies each shipping method for the shopper. &lt;div class=\\&quot;sc-notice info\\&quot;&gt;&lt;div&gt;The plugin automatically injects the Carrier Code into a blank &lt;code&gt;description&lt;\\\/code&gt; field.&lt;\\\/div&gt;&lt;\\\/div&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.reference&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;Your reference for the delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.selected&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;For &lt;a href=\\&quot;\\\/pt\\\/payment-methods\\\/paypal\\\/web-component\\\/express-checkout\\\/?tab=how-advanced_2\\&quot;&gt;PayPal lightbox with delivery methods&lt;\\\/a&gt;, set to &lt;strong&gt;true&lt;\\\/strong&gt; for the delivery method that is selected. Only one delivery method can be selected at a time.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td&gt;&lt;code&gt;deliveryMethods.type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td&gt;&lt;\\\/td&gt;\\n&lt;td&gt;The type of delivery method.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;This mutation makes a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/Checkout\\\/latest\\\/post\\\/paypal\\\/updateOrder\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;\\\/paypal\\\/updateOrder&lt;\\\/a&gt; request. You get an updated &lt;code&gt;paymentData&lt;\\\/code&gt; that you can use in your subsequent requests to update the PayPal order again.&lt;\\\/p&gt;\\n&lt;p&gt;Pass the updated object to the component:&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-javascript\\&quot;&gt;component.updatePaymentData(response.paymentData);&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;graphql&quot;,&quot;oldTabId&quot;:&quot;graphql1_2&quot;,&quot;relation&quot;:&quot;graphql&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2>Testing<\/h2>\n<p>When you are done setting up your integration, test that the express checkout flow works as expected for the payment methods you support.<\/p>\n<ul>\n<li>For Apple Pay, use <a href=\"\/pt\/payment-methods\/apple-pay\/web-component#test-and-go-live\">Apple's test card numbers<\/a>.<\/li>\n<li>For Google Pay, use your <a href=\"\/pt\/payment-methods\/google-pay\/web-component#test-and-go-live\">Google Pay wallet<\/a>.<\/li>\n<li>For PayPal, use your <a href=\"\/pt\/payment-methods\/paypal\/web-component#test-your-integration\">PayPal Sandbox account<\/a>.<\/li>\n<\/ul>\n<h2>See also<\/h2>\n<ul>\n<li><a href=\"\/pt\/plugins\/adobe-commerce\">Adobe Commerce plugin<\/a><\/li>\n<li><a href=\"\/pt\/plugins\/adobe-commerce\/headless-integration\">Adobe Commerce headless integration<\/a><\/li>\n<li><a href=\"\/pt\/payment-methods\/express-checkout\">Express checkout<\/a><\/li>\n<\/ul>","url":"https:\/\/docs.adyen.com\/pt\/plugins\/adobe-commerce\/headless-integration\/express-checkout","articleFields":{"description":"Integrate express payment methods for your headless Adobe Commerce integration.","feedback_component":true,"last_edit_on":"05-01-2024 11:36","filters_component":false,"search_tags":["magento","magento 2","adobe","adobe commerce"],"parameters":{"logo_2":"![](\/docs\/plugins\/shopware-6\/github-icon.png?resize=25)"},"page_id":"fa966870-a103-4464-81e6-dc039ef06fc9","decision_tree":"[]","process":{"twig":true}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/plugins\/adobe-commerce\/headless-integration\/express-checkout","title":"Express checkout","content":"Our express checkout module lets you implement express checkout for your headless Adobe Commerce integration.\nThe module supports express payments with Apple Pay, Google Pay, and PayPal. You can offer the option to use express checkout by placing express payment method buttons in the product detail, cart, and mini-cart pages on your website. This lets your shopper complete their payment  without having to go to a separate checkout page.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have: A headless Adobe Commerce plugin integration.Web Components integrations for the express payment methods that you want to support.\n\n\nSetup steps\nBefore you begin: Install the Adobe Commerce express checkout module.Implement express checkout for the express payment methods that you offer.\n\n\n\nHeadless integration types\n\nLearn more&nbsp;Find the GraphQL schema definition and the REST API implementation for express checkout on our GitHub.\n\nYou can use one of the following web APIs to get Adyen functionalities in your Adobe Commerce headless implementation:\n\nREST: The most widely used web API. This method allows you to access all the functionalities provided by the Adyen plugin.\nGraphQL: \n    \n        Requires plugin v8.2.0 or later\n    \n\nThe Adyen plugin utilizes the \/graphql endpoint exposed by the Adobe Commerce back-end, and adds functionality that is related to the plugin. You can access all functionalities provided by the Adyen plugin with this method. For more information, checkout the Adobe Commerce GraphQL documentation.\n\nThe steps to follow to set up express payment methods are different for REST and GraphQL integrations. If you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is \/graphql, and there are different mutations that you need to use.\nHow it works\nWith a headless Adobe Commerce integration, you can use the Adyen Web Components to support express checkout. You use our Components to show the express payment methods to your shoppers, and make requests to the Adobe Commerce API to handle the payment flow.\nThe flow depends on where you show the option to use express checkout in your store:\n\n\n    \n        \n        \n    \n\n\n\nInitialize a quote\nAdobe Commerce requires a quote to be generated to complete a transaction and create an order.\nIf you show express payment methods on:\n\nCart or mini-cart pages: when a shopper adds an item to their shopping cart for the first time, Adobe commerce creates a quote. Proceed to get the shopper's address and available shipping methods.\nProduct detail page: initialize a quote manually.\n\nInitialize a quote manually\nTo initialize a quote on the product detail page, make an API request.\nIf you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is \/graphql.\n\n\n    \n        \n        \n    \n\n\nGet the shopper's address and available shipping methods\nAfter an Adobe Commerce quote is created for the shopper's order, start the express checkout flow by presenting the express payment method and collecting the shopper's details.\n\n\n    \n        \n        \n    \n\n\n\n\nUpdate the order with the selected shipping method\nUpdate the order in Adobe Commerce after your shopper selects one of the available shipping methods.\n\n\n    \n        \n        \n    \n\n\n\n\nHandle payment amount changes\nThe total payment amount may change depending on the shopper's selected shipping method. You must then update the payment method component and the Adobe Commerce quote with the final amount.\n\n\n    \n        \n        \n    \n\n\n\nComplete the payment\nTo complete the payment, the shopper's cart must be active. If you show express payment methods on:\n\nCart or mini-cart pages: the shopper's cart is already active. Proceed to place the order.\nProduct detail page: you must manually activate the cart for the quote you initialized manually.\n\nActivate the cart manually\nIf you show express payment methods on the product detail page, and initialized a quote manually, make an API request to activate the cart for the quote you initialized.\nIf you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is \/graphql.\n\n\n    \n        \n        \n    \n\n\nPlace the order\nWhen the shopper selects the express payment button, the payment method components trigger an event to complete the payment. For example, the Apple Pay Component triggers the \n  onAuthorized\n event. In this event, implement the steps to complete the payment.\n\n\n    \n        \n        \n    \n\n\n\n\n\nIf you initialized a quote manually to mount the payment method component on the product detail page, and disabled the shopper's real cart, the plugin activates the disabled cart after the payment is completed.\n\nGet the payment outcome\nAfter you place the order, use the same REST API and GraphQL endpoints you use to check the payment status with your standard headless implementation.\nWhen the payment is completed, redirect shoppers to your payment success page.\nHandle abandoned carts\nIf you initialized a quote manually to initiate the express checkout flow on the product detail page, and the shopper abandons the payment page, cancel the quote manually. The payment method components throw an event to handle this case. For example, the Apple Pay component throws the onError event.\nIn the payment method component's event, make an API request to cancel the quote.\nIf you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is \/graphql.\n\n\n    \n        \n        \n    \n\n\n\nUpdating PayPal orders\nFor PayPal express payments, you must update the order each time your shopper changes the shipping address or method to update the PayPal lightbox. In the Adyen Checkout API, this is done with the  \/paypal\/updateOrder endpoint.\nDuring the express flow, you have to update the order when:\n\nThe shopper initially enters their shipping address in the PayPal lightbox.\nThe shopper selects one of the delivery methods that are available.\nThe shopper modifies either of these details.\n\nThe PayPal component uses events, such as onShippingAddressChange or onShippingOptionsChange, to handle shipping address and method changes. In these events, make an API request to update the order.\nIf you are using REST, the endpoint differs per use case. If you are using GraphQL, the endpoint is \/graphql.\n\n\n    \n        \n        \n    \n\n\nTesting\nWhen you are done setting up your integration, test that the express checkout flow works as expected for the payment methods you support.\n\nFor Apple Pay, use Apple's test card numbers.\nFor Google Pay, use your Google Pay wallet.\nFor PayPal, use your PayPal Sandbox account.\n\nSee also\n\nAdobe Commerce plugin\nAdobe Commerce headless integration\nExpress checkout\n","type":"page","locale":"pt","boost":16,"hierarchy":{"lvl0":"Home","lvl1":"Plugins","lvl2":"Adobe Commerce","lvl3":"Headless integration","lvl4":"Express checkout"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/plugins","lvl2":"https:\/\/docs.adyen.com\/pt\/plugins\/adobe-commerce","lvl3":"https:\/\/docs.adyen.com\/pt\/plugins\/adobe-commerce\/headless-integration","lvl4":"\/pt\/plugins\/adobe-commerce\/headless-integration\/express-checkout"},"levels":5,"category":"Plugins","category_color":"green","tags":["magento","magento 2","adobe","adobe commerce"]}}
