Working with Payment System
Reservations
Reservation represents money blocked on user's money account – this money stays on the money account, but cannot be used by any user, process or for another reservation.
The purpose of reservations is to block a reasonable amount of money before a transaction happens, so there is lower risk of account with not enough money to settle transaction. If such a situation happens anyway, a debt is created.
When are Reservations created?
A reservation is created when Broker (Payment System) receives request from Vendor (e.g. YSoft SafeQ) to block specified amount of money on specified account.
When do Reservations disappear?
Reservations disappear in the following 2 cases:
The transaction is settled
The transaction was not finished and reservation cancelled
In certain cases reservation is not cancelled by receiving settlement call . In such cases, administrator has following possibilities to unblock the reserved amount of money and make it available for other processes.
Manual reservation cancellation
In YSoft Payment System Administration web interface, administrator can go to Subjects -> open user's account and list through existing reservations. Clicking on Cancel button, reservation will be cancelled.
Automatic reservation cancellation
In YSoft Payment System Administration web interface, administrator can define value for Expiration of reservations as the maximum age of any reservation. When this age is exceeded, the reservation is cancelled automatically. Default value is 168 hours (7 days).
Overdrawn transactions
Defines the overdrawn option for print, copy or scan operations. Overdrawing of transactions can be set into the 3 overdrawing modes:
Deny overdrawing
Allow if enough credit on account
Allow and register debt if necessary
These settings can be set in the administration part of Payment System Administration interface -> Configure -> YSoft Payment System -> Overdrawn transactions.
Deny overdrawing
Transaction settlements higher than the total sum of reservations are not allowed.
Use case:
Situation: Customer account balance is 30 and minimum balance of the account is set to -15. Customer also doesn't have any registered debt or reservation.
reservation is created for:
50 > FAIL, the reservation cannot be created (actual account balance - minimum account balance = 30 - (-15) = 45 => 50 > 45 => FAIL)
35 > OK, actual account balance is -5
continue with reservation for 35
settlement is settled for:
32 > OK
the amount is subtracted from the reservation (35 - 32)
the rest of the subtraction (3) is added to the actual account balance
new account balance is -2
36 > FAIL - settlement is greater than the reservation (36 > 35)
53 > FAIL - settlement is greater than the reservation (53 > 35)
Allow if enough credit on account
Transaction settlements higher than the sum of reservations are allowed only in case the user's current balance minus minimum account balance is higher than current settlement.
Use case:
Prerequisites => Customer account balance is 30 and minimum balance of the account is set to -15. Customer also does not have any registered debt or reservation.
reservation is created for:
50 > FAIL, the reservation cannot be created (actual account balance - minimum account balance = 30 - (-15) = 45 => 50 > 45 => FAIL)
35 > OK, actual account balance is -5
continue with reservation for 35
settlement is settled for:
32 > OK
the amount is subtracted from the reservation (35 - 32)
the rest of the subtraction (3) is added to the actual account balance
new account balance is -2
36 > OK
settlement is greater than the reservation and less than possible (reservation + actual account balance - minimum balance => 35 + (-5) - (-15) = 45 ) => 35 < 36 < 45
settlement is possible to create
new account balance => actual account balance + reservation - settlement = -5 + 35 - 36 = -6
53 > FAIL - settlement is greater than => reservation + actual account balance - minimum balance => 35 + (-5) - (-15) = 45 => 35 < 53 > 45
Allow and register debt if necessary
Transaction settlements are always allowed. Debt is registered in case the settlement is higher than user's current balance minus minimum account balance.
Use case:
Prerequisites => Customer account balance is 30 and minimum balance of the account is set to -15. Customer also does not have any registered debt or reservation.
reservation is created for:
50 > FAIL, the reservation cannot be created (actual account balance - minimum account balance = 30 - (-15) = 45 => 50 > 45 => FAIL)
35 > OK, actual account balance is -5
continue with reservation for 35
settlement is settled for:
32 > OK
the amount is subtracted from the reservation (35 - 32)
the rest of the subtraction (3) is added to the actual account balance
new account balance is -2
36 > OK
settlement is greater than the reservation and less than possible balance (reservation + actual account balance - minimum balance => 35 + (-5) - (-15) = 45 ) => 35 < 36 < 45
settlement is possible to create
new account balance => actual account balance + reservation - settlement = -5 + 35 - 36 = -6
53 > OK- settlement is greater than => reservation + actual account balance - minimum balance => 35 + (-5) - (-15) = 45 => 35 < 53 > 45
new debt is created => settlement - reservation = 53 - 35 = 18
system automatically withdrew (actual account balance - minimum account balance) based on existing debt => (actual account balance - minimum account balance) = -5 - (-15) = 10
debt is updated to - (debt - amount from step ii.) = 18 - 10 = 8
Debt tracking
When a transaction settlement is made for an amount higher than the amount of reservation and there is not enough money on the user's account to cover the settlement, a debt is registered to user. The amount registered as debt represents amount that was not able to be settled in other way - through settlement of reservation, remaining money on account or allowed minimal balance. The registered amount equals settlement amount - reservation amount.
Debt is partially settled anytime money is deposited to the account or made available on account.
The exception is in case YSoft SafeQ Payment System is used in connection with external payment system, when YSoft SafeQ Payment System does not hold actual user balance, but it works as a proxy for external payment system. Debt settlement in this case does not happen immediately, but in following interval: 5 seconds, 1 minute, 1 hour, 12 hours, 1 day, and then on daily basis. This is to prevent external payment system from denial of service.
In case there is a debt on the account, the account balance is typically 0 (or equal to minimal balance) and there is a debt record visible in the YSoft SafeQ Payment System interface in the user's account overview.
Session timeout
For security reasons, YSoft SafeQ Payment System will automatically log out users logged into Administration, Cash Desk or YSoft Wallet web after 30 minutes of inactivity or in other words no communication with server. User will see dialog "Your session is about to expire" 5 minutes before reaching this limit. This dialog includes two buttons:
"Reload page" button will effectively close this dialog, reset the counter, refresh the page and close all unsubmitted forms (e.g. new periodic recharge in Administration)
"Logout" button will log out current user. It has the same effect as automatic log out.
This means that if you leave unsubmitted form inactive for at least 25 minutes, you will lose filled information, because of timeout dialog, from which you cannot return to the form! Moving mouse or filling the form still counts as inactivity, unless it triggers communication with server.
Cash Desk session timeout with enabled Remember me
If the 'Remember me' functionality for Cash Desk is turned on then the session dialog also appears but it does not log out a user but instead of that a user's page is reloaded.
Transaction timeout
YSoft SafeQ Payment System has a default timeout of 5 seconds for all transaction based operations. Examples would be a transaction reservation or settlement request.
In case you experience occasional timeout error during execution of such transaction based operations, it is possible that your system infrastructure is not able to finish these operations within 5 seconds. Especially vulnerable are systems connected to an external payment provider.
As a workaround this limit can be changed in the environment-configuration.properties through option database.transactionTimeout. For more information see Advanced Configuration of YSoft SafeQ Payment System section Connection Pool.