Popular Posts

Payment Processing Flow

The following happens when a user chooses his payment method and places the order.
  •     Shopper adds payment instruction
  •     PIAdd command runs
  •     PIAdd command does the following 
    •  Persists the payment information in ORDPAYINFO. 
    •  Creates a payment instruction in EDPPAYINST.) 
    • Determine the Payment Method.
      E.g., payment method =  VISA
       
    • Definine the Payment Instruction
      E.g., Payment Instruction = VISA + Card Number + Expiry date + CVV
  •     Shopper submits the order
  •     Order Process command runs
  •     OrderProcess invokes PrimePayment Task command
  •     The PrimePayment command calls the  Payment Rules Engine.
  •     The Payment Rules Engine determines the Action that needs to be performed on the payment instruction/method and the business event.

    Payment Instruction (VISA + data) + Business Event (PrimePayment) = Event (Approve)
       
        1.  Determine the Payment Action Rule
           
            Payment Method (VISA) + Payment Configuration Rule (CreditCardOnline) = Payment Action (Early Approval)
           
            WC/xml/config/payments/edp/groups/default/PaymentMapping.xml
            <Mapping paymentMethod="VISA" paymentConfiguration="CreditCardOnline" paymentActionRule="Early Approval"/>
           
        2.  Determine the target state
       
            Payment Action Rule (Early Approval) + Business Event (PrimePayment) = Target State (APPROVED)
           
            WC/xml/config/payments/edp/groups/default/PaymentRules.xml
            <PaymentRule name="Early Approval">
                <PrimePaymentEvent targetState="APPROVED" />
                <ReservePaymentEvent targetState="APPROVED"/>
                <FinalizePaymentEvent targetState="DEPOSITED" />
            </PaymentRule>
       
        3.  Determine the actions
       
            Payment Configuration (CreditCardOnline) + Target State (APPROVED)  +  Current State (DNE) = Action(Approve)
       
            WC/xml/config/payments/edp/groups/default/CreditCardOnline/CorePaymentActions.xml

            <TargetApproved>
                <CurrentDNE>
                    <Action name="Approve" amount="requested" target="new"/>
                </CurrentDNE>
            </TargetApproved>
           
        4.  Create an event for the actions
       
            Payment Instruction (VISA + data) + Business Event (PrimePayment) = Event (Approve)
           
             The Action is wrapped into an Event, which is passed to the  Payment Plug-in Controller

  •     The Payment Plug-in Controller determines the Plug-in to be used   
        1.    It creates a FinancialTransaction
       
        A FinancialTransaction is used to track the progress of the Action as it is processed. It is populated with data associated with the requested Action and the corresponding payment instruction. 
           
            The FinancialTransaction object contains attributes:
            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            
       
        2.    Finds the appropriate Plug-in that services the request
       
            Payment Method (VISA) + Payment Configuration (CreditCardOnline) = Payment Action Rule (Early Approval)
             xml/config/payments/edp/groups/default/PaymentMapping.xml
            <Mapping paymentMethod="VISA" paymentConfiguration="CreditCardOnline" paymentActionRule="Early Approval"/>
           
           Payment Configuration (CreditCardOnline) = Payment System (MyPaymentPlugin)
           xml/config/payments/edp/groups/default/PaymentMethodConfigurations.xml
           <PaymentMethodConfiguration name="CreditCardOnline" paymentSystemName="MyPaymentSystem" .../>
               
           Payment System (MyPaymentSystem) = Plug-in (PaymentechPlugin) 

           xml/config/payments/ppc/plugins/PaymentSystemPluginMapping.xml
           <PaymentSystemName name="MyPaymentSystem" >
                    <Mapping paymentConfigurationId="default" pluginName="MyPaymentPlugin" >
       
        3.    Calls Plugin.Approve(...)
       
            Plugin.Approve(...) calls MyPaymenPlugin.Approve(...) passing along the Financial Transaction object that was created.       

  •     The Action is invoked against the Plug-in       
        Plugin.Approve(FinancialTransaction,...)        
  •     The Plug-in interacts with the backend payment service provider
        1.  It retrieves data from the FinancialTransaction to be processed
        2.  It calls backend Payment Service Provider (PSP) to perform the action
        3.  It populates FinancialTransaction with response data
       
        The plug-in implements API (com.ibm.commerce.payments.plugin.QueryablePlugin)
        This API has methods that map to the actions to be performed
            public FinancialTransaction approve(...
            public FinancialTransaction deposit(...
            public FinancialTransaction credit(...
            public FinancialTransaction
            approveAndDeposit(...
            public FinancialTransaction reverseApproval(...
            public FinancialTransaction reverseCredit(...
            public FinancialTransaction reverseDeposit(...
            ...
        The implementation of these methods communicates to the backend (PSP) using their backend specific APIs 

3 comments:


  1. There are many business owners who look to charge payments from customers' credit or debit cards. They need high risk merchant accounts to collect payments. First you need to identify that your business comes in a high risk industry or low risk industry, if you belong to a high risk industry then you need to apply for high risk merchant account instant approval

    ReplyDelete
  2. amazing blog is written by you, if you want to know Payment gateway providers also visit my website 5starprocessing.com

    ReplyDelete
  3. We have the payment solutions you want and need. Frictionless payments for any business type, next-day deposits, and unmatched customer service. A mobile payment application possesses the flexibility to be taken anywhere but also the elegance for any storefront. Operate your business payments easily with Sky Systemz. Accept payments using the Sky Systemz Web terminal from any Windows or Mac PC. Computers, tablets, and smartphones are the most sophisticated hardware on the market today. When combined with the most powerful software in the payment space, your business has the ultimate solution to thrive beyond the confinements of your business doors.

    ReplyDelete