Reference > Payments subsystem > Payments subsystem > Payments subsystem architecture
Payment plug-in controller
The Payment plug-in controller is a component of the Payments subsystem. It determines which plug-in to use (based on the payment method) and which plug-in API method to call (based on the action).
The Payment plug-in controller completes the following steps:
- Creates a financial transaction.
- A FinancialTransaction is used to track the progress of the Action as it is processed.
- It is populated with data associated to the Action and the Payment Instruction.
- The FinancialTransaction object will contain attributes such as:
state: new requested amount: 359.000 processed amount: 0.00000 reference number: ... response code: ... payment ID: 10001 ...
- The transaction data is stored in the PPCPAYTRAN table.
- Determine which plug-in to use based on the Payments configuration files:
- Use the PaymentMappings XML file to get the payment configuration based on the selected payment method.
<Mapping paymentMethod="VISA" paymentConfiguration="CreditCardOnline" paymentActionRule="Early Approval"/>
- Use the PaymentMethodConfigurations XML file to get the payment system name based on the payment configuration.
<PaymentMethodConfiguration name="CreditCardOnline" paymentSystemName="Paymentech" systemEditable="true" humanEditable="true" refundAllowed="true" minimumAmount="0" maximumAmount="Unbounded" priority="MEDIUM" partiallyConsumable="true"/>
- And finally, use the PaymetSystemPluginMapping XML file to get the plug-in name based on the payment system name.
<PaymentSystemName name="Paymentech" > <Mapping paymentConfigurationId="default" pluginName="PaymentechPlugin" > <Keyword name="cc_cvc" mask ="-" plain="0" removeAfterApproval ="true"/> <Keyword name="cc_nameoncard" mask ="*" plain="0" removeAfterApproval ="true"/> <Keyword name="account" mask ="*" plain="-5" searchable="true"/> </Mapping> </PaymentSystemName>Then the payment method configuration CreditCardOnline will be mapped to the payment system Paymentech in PaymentMethodConfigurations.xml, and the payment system Paymentech will be mapped to the payment plug-in PaymentechPlugin in PaymentSystemPluginMapping.xml.
- Calls Plugin.Approve(). In this case, PaymentechPlugin.Approve().
- Persist the up-to-date payment states with corresponding payment information in the payment related tables.
Related concepts
Payments subsystem architecture
Payment events and task commands