| Current Path : /srv/web/sites/trentinoplant.it/httpdocs/vendor/paypal/module-braintree-core/etc/ |
| Current File : /srv/web/sites/trentinoplant.it/httpdocs/vendor/paypal/module-braintree-core/etc/di.xml |
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="PayPal\Braintree\Api\Data\TransactionDetailDataInterface"
type="PayPal\Braintree\Model\TransactionDetail" />
<type name="PayPal\Braintree\Model\ResourceModel\TransactionDetail">
<arguments>
<argument name="connectionName" xsi:type="string">sales</argument>
</arguments>
</type>
<virtualType name="OmsTableNameArrayIterator" type="Magento\Framework\ForeignKey\Migration\TableNameArrayIterator">
<arguments>
<argument name="tableNames" xsi:type="array">
<item name="braintree_transaction_details" xsi:type="string">braintree_transaction_details</item>
</argument>
</arguments>
</virtualType>
<!-- Payment Method Facade configuration -->
<virtualType name="BraintreeFacade" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">PayPal\Braintree\Model\Ui\ConfigProvider::CODE</argument>
<argument name="formBlockType" xsi:type="string">PayPal\Braintree\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">PayPal\Braintree\Block\Info</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalFacade" type="BraintreeFacade">
<arguments>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_CODE</argument>
<argument name="infoBlockType" xsi:type="string">BraintreePayPalInfo</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreePayPalValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreePayPalValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreePayPalCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalCreditFacade" type="BraintreePayPalFacade">
<arguments>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_CREDIT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalPayLaterFacade" type="BraintreePayPalFacade">
<arguments>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_PAYLATER_CODE</argument>
</arguments>
</virtualType>
<!-- Configuration for Vault payments -->
<virtualType name="BraintreeVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\ConfigProvider::CC_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeCreditCardVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreeVaultPaymentConfig</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreeFacade</argument>
<argument name="code" xsi:type="const">PayPal\Braintree\Model\Ui\ConfigProvider::CC_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreePayPalVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreePayPalVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreePayPalVaultPaymentConfig</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreePayPalVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreePayPalFacade</argument>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_VAULT_CODE</argument>
</arguments>
</virtualType>
<!-- END Configuration for Vault payments -->
<!-- Configuration reader -->
<type name="PayPal\Braintree\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Ui\ConfigProvider::CODE</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Config\Vault\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Ui\Vault\ConfigProvider::CODE</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Config\PayPalCredit\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_CREDIT_CODE</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Config\PayPalPayLater\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_PAYLATER_CODE</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Config\PayPal\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_CODE</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Config\PayPalVault\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ui\PayPal\ConfigProvider::PAYPAL_VAULT_CODE</argument>
</arguments>
</type>
<!-- Logger, initialized with BraintreeConfig -->
<virtualType name="BraintreeLoggerForTransactionSale" type="Magento\Payment\Model\Method\Logger">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Gateway\Config\Config</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Gateway\Http\Client\TransactionSale">
<arguments>
<argument name="customLogger" xsi:type="object">BraintreeLoggerForTransactionSale</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Http\Client\TransactionSubmitForSettlement">
<arguments>
<argument name="customLogger" xsi:type="object">BraintreeLoggerForTransactionSale</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Http\Client\TransactionRefund">
<arguments>
<argument name="customLogger" xsi:type="object">BraintreeLoggerForTransactionSale</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Gateway\Http\Client\TransactionVoid">
<arguments>
<argument name="customLogger" xsi:type="object">BraintreeLoggerForTransactionSale</argument>
</arguments>
</type>
<!-- END Logger, initialized with BraintreeConfig -->
<!-- Commands infrastructure -->
<virtualType name="BraintreeCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeSaleCommand</item>
<item name="capture" xsi:type="string">BraintreeCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreeVaultAuthorizeCommand</item>
<item name="vault_sale" xsi:type="string">BraintreeVaultSaleCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
<item name="deny_payment" xsi:type="string">BraintreeVoidCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreePayPalAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreePayPalSaleCommand</item>
<item name="capture" xsi:type="string">BraintreePayPalCaptureStrategyCommand</item>
<item name="partial_capture" xsi:type="string">BraintreePartialCaptureCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreePayPalVaultAuthorizeCommand</item>
<item name="vault_sale" xsi:type="string">BraintreePayPalVaultSaleCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreePayPalCommandPool</argument>
</arguments>
</virtualType>
<!-- END Commands infrastructure -->
<!-- Command managers section for Vault -->
<virtualType name="BraintreeCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreePayPalCommandPool</argument>
</arguments>
</virtualType>
<type name="Magento\Payment\Gateway\Command\CommandManagerPool">
<arguments>
<argument name="executors" xsi:type="array">
<item name="braintree" xsi:type="string">BraintreeCommandManager</item>
<item name="braintree_paypal" xsi:type="string">BraintreePayPalCommandManager</item>
<item name="braintree_googlepay" xsi:type="string">BraintreeGooglePayCommandManager</item>
<item name="braintree_applepay" xsi:type="string">BraintreeApplePayCommandManager</item>
<item name="braintree_venmo" xsi:type="string">BraintreeVenmoCommandManager</item>
<item name="braintree_ach_direct_debit" xsi:type="string">BraintreeAchCommandManager</item>
</argument>
</arguments>
</type>
<!-- END command managers section for Vault -->
<!-- Braintree commands -->
<virtualType name="BraintreeAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source" xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultDataBuilder</item>
<item name="3dsecure" xsi:type="string">PayPal\Braintree\Gateway\Request\ThreeDSecureDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\PayPal\DeviceDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Authorization&Capture command -->
<virtualType name="BraintreeSaleCommand" type="BraintreeAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Capture commands -->
<virtualType name="BraintreeCaptureCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeCaptureRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSubmitForSettlement</argument>
<argument name="handler" xsi:type="object">PayPal\Braintree\Gateway\Response\TransactionIdHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePartialCaptureCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeCaptureRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSubmitForPartialSettlement</argument>
<argument name="handler" xsi:type="object">PayPal\Braintree\Gateway\Response\TransactionIdHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeCaptureRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="capture" xsi:type="string">PayPal\Braintree\Gateway\Request\CaptureDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Vault Authorization command -->
<virtualType name="BraintreeVaultAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVaultAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeVaultResponseHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="cvv" xsi:type="string">PayPal\Braintree\Gateway\Request\CvvDataBuilder</item>
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source" xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="3dsecurevault" xsi:type="string">PayPal\Braintree\Gateway\Request\ThreeDSecureVaultDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\PayPal\DeviceDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Vault Authorization&Capture command -->
<virtualType name="BraintreeVaultSaleCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Vault Capture (Sale actually) command -->
<virtualType name="BraintreeVaultCaptureCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVaultCaptureRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">PayPal\Braintree\Gateway\Response\TransactionIdHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultCaptureRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="vault_capture" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultCaptureDataBuilder</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- END Braintree commands -->
<!-- PayPal commands -->
<virtualType name="BraintreePayPalAuthorizeCommand" type="BraintreeAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreePayPalAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreePayPalResponseHandler</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source" xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\PayPal\VaultDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\PayPal\DeviceDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- PayPal Authorization&Capture command -->
<virtualType name="BraintreePayPalSaleCommand" type="BraintreePayPalAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreePayPalSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreePayPalAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- PayPal Vault Authorization command -->
<virtualType name="BraintreePayPalVaultAuthorizeCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreePayPalVaultAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreePayPalVaultResponseHandler</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source" xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Vault Authorization&Capture command -->
<virtualType name="BraintreePayPalVaultSaleCommand" type="BraintreePayPalVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreePayPalVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreePayPalVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- END PayPal commands -->
<!-- Value handlers infrastructure -->
<virtualType name="BraintreeValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeConfigValueHandler</item>
<item name="can_void" xsi:type="string">PayPal\Braintree\Gateway\Config\CanVoidHandler</item>
<item name="can_cancel" xsi:type="string">PayPal\Braintree\Gateway\Config\CanVoidHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">PayPal\Braintree\Gateway\Config\Config</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="card_details" xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
<item name="vault_details" xsi:type="string">PayPal\Braintree\Gateway\Response\VaultDetailsHandler</item>
<item name="3d_secure" xsi:type="string">PayPal\Braintree\Gateway\Response\ThreeDSecureDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="card_details" xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
<item name="3d_secure" xsi:type="string">PayPal\Braintree\Gateway\Response\ThreeDSecureDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<!-- END Value handlers infrastructure -->
<!-- PayPal value handlers infrastructure -->
<virtualType name="BraintreePayPalValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreePayPalConfigValueHandler</item>
<item name="can_void" xsi:type="string">PayPal\Braintree\Gateway\Config\CanVoidHandler</item>
<item name="can_cancel" xsi:type="string">PayPal\Braintree\Gateway\Config\CanVoidHandler</item>
<item name="can_capture" xsi:type="string">PayPal\Braintree\Gateway\Config\CanVoidHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">PayPal\Braintree\Gateway\Config\PayPal\Config</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="paypal_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PayPalDetailsHandler</item>
<item name="vault_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PayPal\VaultDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="paypal_details" xsi:type="string">PayPal\Braintree\Gateway\Response\PayPalDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<!-- END PayPal value handlers infrastructure -->
<!-- Void Command -->
<virtualType name="BraintreeVoidCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionVoid</argument>
<argument name="requestBuilder" xsi:type="object">PayPal\Braintree\Gateway\Request\VoidDataBuilder</argument>
<argument name="handler" xsi:type="object">PayPal\Braintree\Gateway\Response\VoidHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\GeneralResponseValidator</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
</arguments>
</virtualType>
<!-- Refund Command -->
<virtualType name="BraintreeRefundCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionRefund</argument>
<argument name="requestBuilder" xsi:type="object">PayPal\Braintree\Gateway\Request\RefundDataBuilder</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\GeneralResponseValidator</argument>
<argument name="handler" xsi:type="object">PayPal\Braintree\Gateway\Response\RefundHandler</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
</arguments>
</virtualType>
<!-- Braintree validators infrastructure -->
<virtualType name="BraintreeCountryValidator" type="Magento\Payment\Gateway\Validator\CountryValidator">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Gateway\Config\Config</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreeCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- Braintree validators infrastructure -->
<!-- Braintree PayPal validators -->
<virtualType name="BraintreePayPalCountryValidator" type="Magento\Payment\Gateway\Validator\CountryValidator">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Gateway\Config\PayPal\Config</argument>
</arguments>
</virtualType>
<virtualType name="BraintreePayPalValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreePayPalCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- END Braintree PayPal validators -->
<type name="PayPal\Braintree\Block\Info">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Gateway\Config\Config</argument>
</arguments>
</type>
<virtualType name="BraintreePayPalInfo" type="PayPal\Braintree\Block\Info">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Gateway\Config\PayPal\Config</argument>
</arguments>
</virtualType>
<!-- Settlement Report Section -->
<virtualType name="BraintreeTransactionsCollectionFactoryForReporting" type="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="braintree_report_data_source" xsi:type="string">PayPal\Braintree\Model\Report\TransactionsCollection</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeTransactionsReporting" type="Magento\Framework\View\Element\UiComponent\DataProvider\Reporting">
<arguments>
<argument name="collectionFactory" xsi:type="object">BraintreeTransactionsCollectionFactoryForReporting</argument>
<argument name="filterPool" xsi:type="object">PayPal\Braintree\Ui\Component\Report\DataProvider\FilterPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeTransactionsDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
<arguments>
<argument name="reporting" xsi:type="object">BraintreeTransactionsReporting</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Model\Report\ConditionAppliers\AppliersPool">
<arguments>
<argument name="appliers" xsi:type="array">
<item name="Braintree\TextNode" xsi:type="object">PayPal\Braintree\Model\Report\ConditionAppliers\Text</item>
<item name="Braintree\RangeNode" xsi:type="object">PayPal\Braintree\Model\Report\ConditionAppliers\Range</item>
<item name="Braintree\MultipleValueNode" xsi:type="object">PayPal\Braintree\Model\Report\ConditionAppliers\MultipleValue</item>
</argument>
</arguments>
</type>
<!-- END Settlement Report Section -->
<type name="Magento\Config\Model\Config\Export\ExcludeList">
<arguments>
<argument name="configs" xsi:type="array">
<item name="payment/braintree/merchant_id" xsi:type="string">1</item>
<item name="payment/braintree/public_key" xsi:type="string">1</item>
<item name="payment/braintree/private_key" xsi:type="string">1</item>
<item name="payment/braintree/merchant_account_id" xsi:type="string">1</item>
<item name="payment/braintree_paypal/merchant_name_override" xsi:type="string">1</item>
</argument>
</arguments>
</type>
<!-- Payment Method: Apple Pay -->
<virtualType name="BraintreeApplePay" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\ApplePay\Ui\ConfigProvider::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeApplePayValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeApplePayValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeApplePayCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">PayPal\Braintree\Block\ApplePay\Info</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Model\ApplePay\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\ApplePay\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</type>
<!-- valueHandlerPool -->
<virtualType name="BraintreeApplePayValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeApplePayConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeApplePayConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\ApplePay\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</virtualType>
<!-- validatorPool -->
<virtualType name="BraintreeApplePayValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreeCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- commandPool -->
<virtualType name="BraintreeApplePayCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeApplePayAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeApplePaySaleCommand</item>
<item name="capture" xsi:type="string">BraintreeApplePayCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreeApplePayVaultAuthorizeCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="vault_sale" xsi:type="string">BraintreeApplePayVaultSaleCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePaySaleCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeApplePayAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
<argument name="requestBuilder" xsi:type="object">BraintreeApplePaySaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeApplePayAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeApplePayAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<!-- Value handlers infrastructure -->
<virtualType name="BraintreeApplePayAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Model\ApplePay\PaymentDetailsHandler</item>
<item name="card_details" xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
<item name="vault_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\ApplePay\VaultDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="card_details" xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePaySaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeApplePayAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeApplePayCommandPool</argument>
</arguments>
</virtualType>
<!-- ApplePay Vault -->
<virtualType name="BraintreeApplePayVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\ApplePay\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeApplePayVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeApplePayVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreeApplePayVaultPaymentConfig</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeApplePayVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreeApplePay</argument>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\ApplePay\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultAuthorizeCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeApplePayVaultAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreeApplePayVaultResponseHandler</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source"
xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields"
xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="device_data"
xsi:type="string">PayPal\Braintree\Gateway\Request\PayPal\DeviceDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeApplePayCommandPool</argument>
</arguments>
</virtualType>
<!-- Vault Authorization & Capture command -->
<virtualType name="BraintreeApplePayVaultSaleCommand" type="BraintreeApplePayVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeApplePayVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeApplePayVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeApplePayVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- END Apple Pay payment method -->
<!-- Payment Method: Google Pay -->
<virtualType name="BraintreeGooglePay" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\GooglePay\Ui\ConfigProvider::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeGooglePayValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeGooglePayValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeGooglePayCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">PayPal\Braintree\Block\GooglePay\Info</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Model\GooglePay\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\GooglePay\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</type>
<!-- valueHandlerPool -->
<virtualType name="BraintreeGooglePayValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeGooglePayConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeGooglePayConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\GooglePay\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</virtualType>
<!-- validatorPool -->
<virtualType name="BraintreeGooglePayValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<!--<item name="country" xsi:type="string">BraintreeCountryValidator</item>-->
</argument>
</arguments>
</virtualType>
<!-- commandPool -->
<virtualType name="BraintreeGooglePayCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeGooglePayAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeGooglePaySaleCommand</item>
<item name="capture" xsi:type="string">BraintreeGooglePayCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreeGooglePayVaultAuthorizeCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="vault_sale" xsi:type="string">BraintreeGooglePayVaultSaleCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePaySaleCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="transferFactory"
xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeGooglePayAuthorizationHandler</argument>
<argument name="validator"
xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
<argument name="requestBuilder" xsi:type="object">BraintreeGooglePaySaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeGooglePayAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeGooglePayAuthorizationHandler</argument>
<argument name="validator"
xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Model\GooglePay\PaymentDetailsHandler</item>
<item name="card_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
<item name="vault_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\GooglePay\VaultDetailsHandler</item>
<item name="3d_secure"
xsi:type="string">PayPal\Braintree\Gateway\Response\ThreeDSecureDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultDataBuilder</item>
<item name="3dsecure"
xsi:type="string">PayPal\Braintree\Gateway\Request\GooglePay\ThreeDSecureDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePaySaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeGooglePayAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayCaptureStrategyCommand"
type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeGooglePayCommandPool</argument>
</arguments>
</virtualType>
<!-- GooglePay Vault -->
<virtualType name="BraintreeGooglePayVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\GooglePay\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeGooglePayVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeGooglePayVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreeGooglePayVaultPaymentConfig</argument>
<argument name="valueHandlerPool"
xsi:type="object">BraintreeGooglePayVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreeGooglePay</argument>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\GooglePay\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="card_details" xsi:type="string">PayPal\Braintree\Gateway\Response\CardDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultAuthorizeCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeGooglePayVaultAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreeGooglePayVaultResponseHandler</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source"
xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields"
xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="device_data"
xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeGooglePayCommandPool</argument>
</arguments>
</virtualType>
<!-- Vault Authorization & Capture command -->
<virtualType name="BraintreeGooglePayVaultSaleCommand" type="BraintreeGooglePayVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeGooglePayVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeGooglePayVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeGooglePayVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Payment Method: Google Pay - END -->
<!-- Payment Method: Venmo -->
<virtualType name="BraintreeVenmo" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">PayPal\Braintree\Model\Venmo\Ui\ConfigProvider::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeVenmoValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeVenmoValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeVenmoCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">PayPal\Braintree\Block\Info</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Model\Venmo\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Venmo\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</type>
<!-- Venmo Vault -->
<virtualType name="BraintreeVenmoVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreeVenmoVaultPaymentConfig</argument>
<argument name="valueHandlerPool"
xsi:type="object">BraintreeVenmoVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreeVenmo</argument>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Venmo\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Venmo\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeVenmoVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeVenmoVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeVenmoCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultAuthorizeCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVenmoVaultAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreeVenmoVaultResponseHandler</argument>
</arguments>
</virtualType>
<!-- Vault Authorization & Capture command -->
<virtualType name="BraintreeVenmoVaultSaleCommand" type="BraintreeVenmoVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVenmoVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source"
xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields"
xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="device_data"
xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeGooglePayVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- valueHandlerPool -->
<virtualType name="BraintreeVenmoValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeVenmoConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeVenmoConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Venmo\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</virtualType>
<!-- validatorPool -->
<virtualType name="BraintreeVenmoValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreeCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- commandPool -->
<virtualType name="BraintreeVenmoCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeVenmoAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeVenmoSaleCommand</item>
<item name="capture" xsi:type="string">BraintreeVenmoCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreeVenmoVaultAuthorizeCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="vault_sale" xsi:type="string">BraintreeVenmoVaultSaleCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeVenmoAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeVenmoAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoSaleCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeVenmoAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
<argument name="requestBuilder" xsi:type="object">BraintreeVenmoSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeVenmoCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="device_data" xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Model\Venmo\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="vault_details" xsi:type="string">PayPal\Braintree\Gateway\Response\Venmo\VaultDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeVenmoSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeVenmoAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Payment Method: ACH Direct Debit -->
<virtualType name="BraintreeAch" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">PayPal\Braintree\Model\Ach\Ui\ConfigProvider::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeAchValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeAchValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeAchCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">PayPal\Braintree\Block\Info</argument>
</arguments>
</virtualType>
<type name="PayPal\Braintree\Model\Ach\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Ach\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</type>
<!-- valueHandlerPool -->
<virtualType name="BraintreeAchValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeAchConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeAchConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Ach\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</virtualType>
<!-- validatorPool -->
<virtualType name="BraintreeAchValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreeCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- commandPool -->
<virtualType name="BraintreeAchCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeAchAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeAchSaleCommand</item>
<item name="capture" xsi:type="string">BraintreeAchCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
<item name="vault_authorize" xsi:type="string">BraintreeAchVaultAuthorizeCommand</item>
<item name="vault_capture" xsi:type="string">BraintreeVaultCaptureCommand</item>
<item name="vault_sale" xsi:type="string">BraintreeAchVaultSaleCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeAchAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeAchAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchSaleCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeAchAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
<argument name="requestBuilder" xsi:type="object">BraintreeAchSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeAchCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="ach" xsi:type="string">PayPal\Braintree\Gateway\Request\AchDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
<item name="vault" xsi:type="string">PayPal\Braintree\Gateway\Request\VaultDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Model\Ach\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="vault_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\Ach\VaultDetailsHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeAchAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Payment Method: ACH Direct Debit Vault -->
<virtualType name="BraintreeAchVaultFacade" type="Magento\Vault\Model\Method\Vault">
<arguments>
<argument name="config" xsi:type="object">BraintreeAchVaultPaymentConfig</argument>
<argument name="valueHandlerPool"
xsi:type="object">BraintreeAchVaultPaymentValueHandlerPool</argument>
<argument name="vaultProvider" xsi:type="object">BraintreeAch</argument>
<argument name="code"
xsi:type="const">PayPal\Braintree\Model\Ach\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultPaymentConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode"
xsi:type="const">PayPal\Braintree\Model\Ach\Ui\ConfigProvider::METHOD_VAULT_CODE</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultPaymentValueHandlerPool" type="VaultPaymentValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeAchVaultPaymentValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultPaymentValueHandler" type="VaultPaymentDefaultValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeAchVaultPaymentConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchCommandManager" type="Magento\Payment\Gateway\Command\CommandManager">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeAchCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultAuthorizeCommand" type="BraintreeVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeAchVaultAuthorizeRequest</argument>
<argument name="handler" xsi:type="object">BraintreeAchVaultResponseHandler</argument>
</arguments>
</virtualType>
<!-- Vault Authorization & Capture command -->
<virtualType name="BraintreeAchVaultSaleCommand" type="BraintreeAchVaultAuthorizeCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeAchVaultSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="fraud" xsi:type="string">PayPal\Braintree\Gateway\Request\FraudDataBuilder</item>
<item name="source"
xsi:type="string">PayPal\Braintree\Gateway\Request\TransactionSourceDataBuilder</item>
<item name="customFields"
xsi:type="string">PayPal\Braintree\Gateway\Request\CustomFieldsDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="device_data"
xsi:type="string">PayPal\Braintree\Gateway\Request\DeviceDataBuilder</item>
<item name="dynamic_descriptor"
xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing"
xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultResponseHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details"
xsi:type="string">PayPal\Braintree\Gateway\Response\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
<item name="risk_data" xsi:type="string">PayPal\Braintree\Gateway\Response\RiskDataHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeAchVaultSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeAchVaultAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Payment Method: Local Payments -->
<!-- Virtual Model -->
<virtualType name="BraintreeLpmInfo" type="PayPal\Braintree\Block\Info">
<arguments>
<argument name="config" xsi:type="object">PayPal\Braintree\Model\Lpm\Config</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpm" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">PayPal\Braintree\Model\Lpm\Ui\ConfigProvider::METHOD_CODE</argument>
<argument name="valueHandlerPool" xsi:type="object">BraintreeLpmValueHandlerPool</argument>
<argument name="validatorPool" xsi:type="object">BraintreeLpmValidatorPool</argument>
<argument name="commandPool" xsi:type="object">BraintreeLpmCommandPool</argument>
<argument name="formBlockType" xsi:type="object">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">BraintreeLpmInfo</argument>
</arguments>
</virtualType>
<!-- Config -->
<type name="PayPal\Braintree\Model\Lpm\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Lpm\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</type>
<!-- valueHandlerPool -->
<virtualType name="BraintreeLpmValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">BraintreeLpmConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">BraintreeLpmConfig</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmConfig" type="Magento\Payment\Gateway\Config\Config">
<arguments>
<argument name="methodCode" xsi:type="const">PayPal\Braintree\Model\Lpm\Ui\ConfigProvider::METHOD_CODE</argument>
</arguments>
</virtualType>
<!-- validatorPool -->
<virtualType name="BraintreeLpmValidatorPool" type="Magento\Payment\Gateway\Validator\ValidatorPool">
<arguments>
<argument name="validators" xsi:type="array">
<item name="country" xsi:type="string">BraintreeCountryValidator</item>
</argument>
</arguments>
</virtualType>
<!-- commandPool -->
<virtualType name="BraintreeLpmCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeLpmAuthorizeCommand</item>
<item name="sale" xsi:type="string">BraintreeLpmSaleCommand</item>
<item name="capture" xsi:type="string">BraintreeLpmCaptureStrategyCommand</item>
<item name="settlement" xsi:type="string">BraintreeCaptureCommand</item>
<item name="void" xsi:type="string">BraintreeVoidCommand</item>
<item name="refund" xsi:type="string">BraintreeRefundCommand</item>
<item name="cancel" xsi:type="string">BraintreeVoidCommand</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmAuthorizeCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">BraintreeLpmAuthorizeRequest</argument>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeLpmAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmSaleCommand" type="PayPal\Braintree\Gateway\Command\GatewayCommand">
<arguments>
<argument name="transferFactory" xsi:type="object">PayPal\Braintree\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">PayPal\Braintree\Gateway\Http\Client\TransactionSale</argument>
<argument name="handler" xsi:type="object">BraintreeLpmAuthorizationHandler</argument>
<argument name="validator" xsi:type="object">PayPal\Braintree\Gateway\Validator\ResponseValidator</argument>
<argument name="requestBuilder" xsi:type="object">BraintreeLpmSaleRequest</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmCaptureStrategyCommand" type="PayPal\Braintree\Gateway\Command\CaptureStrategyCommand">
<arguments>
<argument name="commandPool" xsi:type="object">BraintreeLpmCommandPool</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="customer" xsi:type="string">PayPal\Braintree\Gateway\Request\CustomerDataBuilder</item>
<item name="payment" xsi:type="string">PayPal\Braintree\Gateway\Request\PaymentDataBuilder</item>
<item name="channel" xsi:type="string">PayPal\Braintree\Gateway\Request\ChannelDataBuilder</item>
<item name="address" xsi:type="string">PayPal\Braintree\Gateway\Request\AddressDataBuilder</item>
<item name="dynamic_descriptor" xsi:type="string">PayPal\Braintree\Gateway\Request\DescriptorDataBuilder</item>
<item name="level_2_3_processing" xsi:type="string">PayPal\Braintree\Gateway\Request\Level23ProcessingDataBuilder</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmAuthorizationHandler" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="payment_details" xsi:type="string">PayPal\Braintree\Model\Lpm\PaymentDetailsHandler</item>
<item name="txn_id" xsi:type="string">PayPal\Braintree\Gateway\Response\TransactionIdHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="BraintreeLpmSaleRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="authorize" xsi:type="string">BraintreeLpmAuthorizeRequest</item>
<item name="settlement" xsi:type="string">PayPal\Braintree\Gateway\Request\SettlementDataBuilder</item>
</argument>
</arguments>
</virtualType>
<!-- Preferences -->
<preference for="PayPal\Braintree\Api\AuthInterface" type="PayPal\Braintree\Model\ApplePay\Auth" />
<preference for="PayPal\Braintree\Api\Data\AuthDataInterface" type="PayPal\Braintree\Model\ApplePay\Auth\Data" />
<preference for="PayPal\Braintree\Api\Data\CreditPriceDataInterface" type="PayPal\Braintree\Model\CreditPrice" />
<preference for="PayPal\Braintree\Api\CreditPriceRepositoryInterface"
type="PayPal\Braintree\Model\ResourceModel\CreditPriceRepository" />
<preference for="PayPal\Braintree\Api\Data\PaymentInterface" type="PayPal\Braintree\Model\Payment" />
<preference for="PayPal\Braintree\Api\CustomerAddPaymentToVaultInterface"
type="PayPal\Braintree\Model\Vault\CustomerAddPaymentToVault" />
<preference for="Magento\Payment\Gateway\Data\Order\OrderAdapter"
type="PayPal\Braintree\Gateway\Data\Order\OrderAdapter"/>
<preference for="PayPal\Braintree\Gateway\Data\AddressAdapterInterface"
type="PayPal\Braintree\Gateway\Data\Order\AddressAdapter"/>
<preference for="PayPal\Braintree\Gateway\DataResolver\Customer\GetCustomerIdByPaymentTokenInterface"
type="PayPal\Braintree\Gateway\DataResolver\Customer\GetCustomerIdByPaymentToken"/>
<preference for="PayPal\Braintree\Model\Adapter\PaymentMethod\PaymentTokenAdapterFactoryInterface"
type="PayPal\Braintree\Model\Adapter\PaymentMethod\PaymentTokenAdapterFactory" />
<preference for="PayPal\Braintree\Model\Validator\AddressValidatorInterface"
type="PayPal\Braintree\Model\Validator\AddressValidator" />
<preference for="PayPal\Braintree\Model\Validator\PaymentValidatorInterface"
type="PayPal\Braintree\Model\Validator\PaymentValidator" />
<preference for="PayPal\Braintree\Model\Vault\AddPaymentToVaultInterface"
type="PayPal\Braintree\Model\Vault\AddPaymentToVault" />
<preference for="PayPal\Braintree\Model\Vault\IsAddPaymentToVaultEnabledInterface"
type="PayPal\Braintree\Model\Vault\IsAddPaymentToVaultEnabled" />
<preference for="PayPal\Braintree\Model\Vault\PaymentToken\GeneratePublicHashInterface"
type="PayPal\Braintree\Model\Vault\PaymentToken\GeneratePublicHash" />
<preference for="PayPal\Braintree\Model\Vault\PaymentToken\SaveInterface"
type="PayPal\Braintree\Model\Vault\PaymentToken\Save" />
<type name="Magento\Framework\View\Asset\Minification">
<plugin name="braintreeExcludeFromMinification" type="PayPal\Braintree\Plugin\ExcludeFromMinification"/>
</type>
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="braintreeMigrate" xsi:type="object">PayPal\Braintree\Console\VaultMigrate</item>
</argument>
</arguments>
</type>
<type name="PayPal\Braintree\Console\VaultMigrate">
<arguments>
<argument name="braintreeAdapter" xsi:type="object">PayPal\Braintree\Model\Adapter\BraintreeAdapter\Proxy</argument>
<argument name="customerRepository" xsi:type="object">Magento\Customer\Api\CustomerRepositoryInterface\Proxy</argument>
</arguments>
</type>
<type name="Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderPool">
<arguments>
<argument name="services" xsi:type="array">
<item name="braintree" xsi:type="string">PayPal\Braintree\Model\Multishipping\PlaceOrder</item>
<item name="braintree_paypal" xsi:type="string">PayPal\Braintree\Model\Multishipping\PlaceOrder</item>
</argument>
</arguments>
</type>
<type name="Magento\Checkout\Block\Cart\Sidebar">
<plugin name="addAgreementsToMinicartConfig" type="PayPal\Braintree\Plugin\AddAgreementsToMinicartConfig"/>
</type>
<type name="Magento\Checkout\CustomerData\AbstractItem">
<plugin name="braintreeAddFlagForVirtualProducts" type="PayPal\Braintree\Plugin\AddFlagForVirtualProducts"/>
</type>
<type name="Magento\Quote\Api\CartManagementInterface">
<plugin name="order_cancellation" type="PayPal\Braintree\Plugin\OrderCancellation"/>
</type>
<!-- WebApi Validation -->
<preference for="PayPal\Braintree\Model\Recaptcha\IsCaptchaApplicableForRequestInterface"
type="PayPal\Braintree\Model\Recaptcha\IsCaptchaApplicableForRequest" />
<type name="Magento\ReCaptchaWebapiApi\Model\CompositeWebapiValidationConfigProvider">
<arguments>
<argument name="providers" xsi:type="array">
<item name="braintree_recaptcha_config_provider"
xsi:type="object">PayPal\Braintree\Model\Recaptcha\WebapiConfigProvider</item>
</argument>
</arguments>
</type>
</config>