Authorization process

Payment authorization is a process through which the amount to be paid on a payment method is verified.

In case of credit cards, authorization specifically involves contacting the payment system and blocking the required amount of funds against the credit card. Payment types may or may not require this authorization step. This is configurable in Sterling™ Order Management System in the sellers payment rule. If an order requires payment processing, the order is not picked up for scheduling or other processing until it is authorized.

The payment collection time-triggered transaction analyzes an order to create authorization requests. The payment execution time-triggered transaction monitors requests created for authorization and provides user exits to carry out the authorization. The user exit can process the authorization request in any one of the following ways:

  • Perform synchronous processing to carry out the authorization immediately by interfacing to an accounts receivable database, and pass back the authorized amount.
  • Place a request to try again later if the interface to the payment system is inoperable.
  • Request asynchronous processing, which means that console never contacts the payment system for this order.

Depending on the response from the external payment system, different events can be raised to handle the response appropriately within Sterling Order Management System. For more details on the available events, see the payment processing APIs in the IBM Sterling® Order Management: Javadoc.

Once authorization is received, or the order is pre-authorized on the front end for the complete order amount, the payment collection transaction changes the payment status to AUTHORIZED.

A CHARGE record with an authorization of negative OPEN_AUTHORIZED_AMOUNT is considered as authorization consumed. If this CHARGE is failed and the charge transaction record has STATUS = 'ERROR', the system does not reuse this authorization.

The condition to mark a charge transaction record as ERROR is when YFSExtnPaymentCollectionInputStruct.requestAmount and YFSExtnPaymentCollectionOutputStruct.authorizationAmount are not matching and YFSExtnPaymentCollectionOutputStruct.holdOrderAndRaiseEvent is true.
Avoiding this ERROR status
If any issue happens at payment gateway and YFSExtnPaymentCollectionOutputStruct.authorizationAmount is not populated, throw an exception from user exit and let charge transaction record in OPEN state and user exit status as INVOKED. Then use YFSValidateInvokedCollectionUE to process this record later.