Modulo para Magento CE 2.0.x
Extencion para agregar la Billetera ClipClap como metodo de pago, (*1)
Technical feature
Configuracion del modulo
- El modulo se instala atraves de composer
- Se debe modificar el archivo composer.json
Gateway configuration
Let's look into configuration attributes:
-
debug
enables debug mode by default, e.g log for request/response
-
active
is payment active by default
-
model
Payment Method Facade
used for integration with Sales
and Checkout
modules
-
merchant_gateway_key
encrypted merchant credential
-
order_status
default order status
-
payment_action
default action of payment
-
title
default title for a payment method
-
currency
supported currency
-
can_authorize
whether payment method supports authorization
-
can_capture
whether payment method supports capture
-
can_void
whether payment method supports void
-
can_use_checkout
checkout availability
-
is_gateway
is an integration with gateway
-
sort_order
payment method order position on checkout/system configuration pages
-
debugReplaceKeys
request/response fields, which will be masked in log
-
paymentInfoKeys
transaction request/response fields displayed on payment information block
-
privateInfoKeys
paymentInfoKeys fields which should not be displayed in customer payment information block
Dependency Injection configuration
To get more details about dependency injection configuration in Magento 2, please see DI docs., (*2)
In a case of Payment Gateway, DI configuration is used to define pools of Gateway Commands
with related infrastructure and to configure Payment Method Facade
(used by Sales
and Checkout
modules to perform commands), (*3)
Payment Method Facade configuration:, (*4)
<!-- Payment Method Facade configuration -->
<virtualType name="ClipClapGatewayFacade" type="Magento\Payment\Model\Method\Adapter">
<arguments>
<argument name="code" xsi:type="const">\Magento\ClipClapGateway\Model\Ui\ConfigProvider::CODE</argument>
<argument name="formBlockType" xsi:type="string">Magento\Payment\Block\Form</argument>
<argument name="infoBlockType" xsi:type="string">Magento\ClipClapGateway\Block\Info</argument>
<argument name="valueHandlerPool" xsi:type="object">ClipClapGatewayValueHandlerPool</argument>
<argument name="commandPool" xsi:type="object">ClipClapGatewayCommandPool</argument>
</arguments>
</virtualType>
-
code
Payment Method code
-
formBlockType
Block class name, responsible for Payment Gateway Form rendering on a checkout.
Since Opepage Checkout uses knockout.js for rendering, this renderer is used only during Checkout process from Admin panel.
-
infoBlockType
Block class name, responsible for Transaction/Payment Information details rendering in Order block.
-
valueHandlerPool
Value handler pool used for queries to configuration
-
commandPool
Pool of Payment Gateway commands
Pools
! All Payment\Gateway
provided pools implementations use lazy loading for components, i.e configured with component type name instead of component object, (*5)
Value Handlers
There should be at least one Value Handler with default
key provided for ValueHandlerPool., (*6)
!-- Value handlers infrastructure -->
<virtualType name="ClipClapGatewayValueHandlerPool" type="Magento\Payment\Gateway\Config\ValueHandlerPool">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="default" xsi:type="string">ClipClapGatewayConfigValueHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="ClipClapGatewayConfigValueHandler" type="Magento\Payment\Gateway\Config\ConfigValueHandler">
<arguments>
<argument name="configInterface" xsi:type="object">ClipClapGatewayConfig</argument>
</arguments>
</virtualType>
Commands
All gateway commands should be added to CommandPool instance, (*7)
<!-- Commands infrastructure -->
<virtualType name="ClipClapGatewayCommandPool" type="Magento\Payment\Gateway\Command\CommandPool">
<arguments>
<argument name="commands" xsi:type="array">
<item name="authorize" xsi:type="string">ClipClapGatewayAuthorizeCommand</item>
<item name="capture" xsi:type="string">ClipClapGatewayCaptureCommand</item>
<item name="void" xsi:type="string">ClipClapGatewayVoidCommand</item>
</argument>
</arguments>
</virtualType>
Example of Authorization command configuration:, (*8)
<virtualType name="ClipClapGatewayAuthorizeCommand" type="Magento\Payment\Gateway\Command\GatewayCommand">
<arguments>
<argument name="requestBuilder" xsi:type="object">ClipClapGatewayAuthorizationRequest</argument>
<argument name="handler" xsi:type="object">ClipClapGatewayResponseHandlerComposite</argument>
<argument name="transferFactory" xsi:type="object">Magento\ClipClapGateway\Gateway\Http\TransferFactory</argument>
<argument name="client" xsi:type="object">Magento\ClipClapGateway\Gateway\Http\Client\ClientMock</argument>
</arguments>
</virtualType>
<virtualType name="ClipClapGatewayAuthorizationRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
<arguments>
<argument name="builders" xsi:type="array">
<item name="transaction" xsi:type="string">Magento\ClipClapGateway\Gateway\Request\AuthorizationRequest</item>
<item name="mockData" xsi:type="string">Magento\ClipClapGateway\Gateway\Request\MockDataRequest</item>
</argument>
</arguments>
</virtualType>
<type name="Magento\ClipClapGateway\Gateway\Request\AuthorizationRequest">
<arguments>
<argument name="config" xsi:type="object">ClipClapGatewayConfig</argument>
</arguments>
</type>
<virtualType name="ClipClapGatewayResponseHandlerComposite" type="Magento\Payment\Gateway\Response\HandlerChain">
<arguments>
<argument name="handlers" xsi:type="array">
<item name="txnid" xsi:type="string">Magento\ClipClapGateway\Gateway\Response\TxnIdHandler</item>
<item name="fraud" xsi:type="string">Magento\ClipClapGateway\Gateway\Response\FraudHandler</item>
</argument>
</arguments>
</virtualType>
-
ClipClapGatewayAuthorizeCommand
- instance of GatewayCommand provided by Payment\Gateway
configured with request builders, response handlers and transfer client
-
ClipClapGatewayAuthorizationRequest
- Composite of request parts used for Authorization
-
ClipClapGatewayResponseHandlerComposite
- Composite\List of response handlers.
Installation
This module is intended to be installed using composer. After including this component and enabling it, you can verify it is installed by going the backend at:
STORES -> Configuration -> ADVANCED/Advanced -> Disable Modules Output
Once there check that the module name shows up in the list to confirm that it was installed correctly., (*9)
Tests
Unit tests could be found in the Test/Unit directory., (*10)
Contributors
Magento Core team, (*11)
License
Open Source License, (*12)