define an EFTPOS API to allow EFTPOS terminals to be used with OpenVPMS
change OpenVPMS payment and refund workflows to use EFTPOS if it has been configured
log transactions made via EFTPOS terminals, for reporting and auditing
The API will support:
Payments (with cash out)
Refunds
Integrated receipt printing
Note that this project will not include any implementation of the EFTPOS API, as:
the required 3rd party libraries don't have suitable licenses
we don't want to tie OpenVPMS to any one provider
Payments and Refunds
The EFTPOS API for payments and refunds integrated with the existing payment and refund editors.
Payments
When the Till has Terminals linked to it, the EFT payment type will include a Terminal field allowing the terminal to be selected:
Clicking the Apply or OK button will trigger the plugin for that terminal to complete the EFT payment. The plugin will be responsible for any user interaction, e.g. prompting if a signature is valid or not.
The success or failure of the transaction will be recorded in an EFTPOS Payment record. If it is successful, and:
OK was pressed, the Payment dialog will automatically close.
Apply was pressed, the user can continue editing the payment. This can be used in situations where the customer wants to split a payment (e.g. using both cash and card). The Till cannot be changed once an EFT payment has been made.
If it was unsuccessful (e.g. the card was declined), the Payment dialog will remain open and the user can:
edit the EFT payment to change amounts, or;
delete it and use a different payment type.
Refunds
When the Till has Terminals linked to it, the EFT payment type will include a Terminal field allowing the terminal to be selected.
Clicking the Apply or OK button will trigger the plugin for that terminal to complete the EFT refund. The plugin will be responsible for any user interaction.
The success or failure of the transaction will be recorded in an EFTPOS Refund record. If it is successful, and:
OK was pressed, the Refund dialog will automatically close.
Apply was pressed, the user can continue editing the refund. This can be used in situations where the customer wants to split a refund (e.g. using both cash and card). The Till cannot be changed once an EFT refund has been made.
If it is unsuccessful (e.g. the card was declined), the Refund dialog will remain open and the user can:
edit the EFT refund to change the amount, or;
delete it and use a different refund type.
Terminal Errors
Sometimes a terminal may not be available due to communication problems between the host running OpenVPMS and the terminal, but the terminal may still function manually.
To enable users to still perform EFT transactions, a No Terminal option will be provided in the list of terminals displayed to the user. When selected, the EFT payment or refund will not trigger the EFT plugin to perform the EFT transaction but simply record that an EFT transaction has been performed.
The corresponding EFTPOS Payment or EFTPOS Refund will have:
Status set to Manual Override
Terminal set to No Terminal
The transaction identifier, transaction reference, auth code and card type will be unset.
Transaction Recovery
If a terminal payment or refund is terminated prematurely e.g. by the user closing the browser, the user can attempt to recover it by editing the Payment or Refund again. This will attempt to resume the transaction. If this fails, the EFTPOS provider will cancel the transaction.
Reversals
If a payment or refund contains an EFT record done via a Terminal, these will not be able to be reversed using Customers - Account - Reverse. A corresponding refund/payment must be entered instead.
Transaction Log
OpenVPMS will record the status of each transaction initiated via an EFTPOS terminal using EFTPOS Payment and Refund records. These can be used for the purposes of reporting and auditing, and will include transactions that were initiated but failed due to error, were declined, or cancelled. The following details will be recorded:
date/time – the date/time the transaction was submitted
transaction identifier - the provider generated transaction identifier
transaction reference
auth code
card type e.g. "EFTPOS", "Visa", "MasterCard", "American Express", "Diners Club", "JCB" or "UnionPay". As these are provider specific, and may change over time, these will be stored as free-form text
customer. The customer the transaction applies to, or the OTC pseudo-customer for over the counter transactions
amount – the amount the transaction was for
cashout - the cashout amount
status – the transaction status
receipts – any receipts generated for the transaction
terminal – the terminal used
location – the practice location
till – the till
A new EFTPOS reporting workspace will be provided in Reporting that can be used to query transactions by:
type i.e. Payment or Refund
date/time
transaction identifier
customer
terminal
Integrated Receipt Printing
Integrated receipt printing allows the EFTPOS terminal receipt to be included on the customer receipt. This is to support EFTPOS terminals that are not connected to a printer.
To support this:
The EFT Item will be extended to allow the EFTPOS terminal receipt to be attached, as plain text
The Receipt template will be updated to include the EFTPOS terminal receipt, if present
The Check-Out workflow will be changed to include an option to print the receipt, as well as the customer invoice
Configuration
EFTPOS terminal integration is enabled by:
attaching one or more EFTPOS terminal configurations to the relevant Till. The configuration will be supplied by the EFTPOS provider.
deploying the provider implementation of the POS API to the OSGi container
Exclusions
This project will not support:
incorporating surcharges into payments or refunds.
automatic reversal of EFT payments If a Payment containing an EFT transaction needs to be reversed, a Refund must be entered manually
automatic reversal of EFT refunds If a Refund containing an EFT transaction needs to be reversed, a Payment must be entered manually
EFTPOS integration using the Credit Card type for Payments or Refunds i.e. the EFT type must be used for both debit and credit cards.
From http://www.openvpms.org/project/eftpos-integration
This project will:
define an EFTPOS API to allow EFTPOS terminals to be used with OpenVPMS
change OpenVPMS payment and refund workflows to use EFTPOS if it has been configured
log transactions made via EFTPOS terminals, for reporting and auditing
The API will support:
Payments (with cash out)
Refunds
Integrated receipt printing
Note that this project will not include any implementation of the EFTPOS API, as:
the required 3rd party libraries don't have suitable licenses
we don't want to tie OpenVPMS to any one provider
Payments and Refunds
The EFTPOS API for payments and refunds integrated with the existing payment and refund editors.
Payments
When the Till has Terminals linked to it, the EFT payment type will include a Terminal field allowing the terminal to be selected:
Clicking the Apply or OK button will trigger the plugin for that terminal to complete the EFT payment. The plugin will be responsible for any user interaction, e.g. prompting if a signature is valid or not.
The success or failure of the transaction will be recorded in an EFTPOS Payment record.
If it is successful, and:
OK was pressed, the Payment dialog will automatically close.
Apply was pressed, the user can continue editing the payment. This can be used in situations where the customer wants to split a payment (e.g. using both cash and card).
The Till cannot be changed once an EFT payment has been made.
If it was unsuccessful (e.g. the card was declined), the Payment dialog will remain open and the user can:
edit the EFT payment to change amounts, or;
delete it and use a different payment type.
Refunds
When the Till has Terminals linked to it, the EFT payment type will include a Terminal field allowing the terminal to be selected.
Clicking the Apply or OK button will trigger the plugin for that terminal to complete the EFT refund. The plugin will be responsible for any user interaction.
The success or failure of the transaction will be recorded in an EFTPOS Refund record.
If it is successful, and:
OK was pressed, the Refund dialog will automatically close.
Apply was pressed, the user can continue editing the refund. This can be used in situations where the customer wants to split a refund (e.g. using both cash and card).
The Till cannot be changed once an EFT refund has been made.
If it is unsuccessful (e.g. the card was declined), the Refund dialog will remain open and the user can:
edit the EFT refund to change the amount, or;
delete it and use a different refund type.
Terminal Errors
Sometimes a terminal may not be available due to communication problems between the host running OpenVPMS and the terminal, but the terminal may still function manually.
To enable users to still perform EFT transactions, a No Terminal option will be provided in the list of terminals displayed to the user. When selected, the EFT payment or refund will not trigger the EFT plugin to perform the EFT transaction but simply record that an EFT transaction has been performed.
The corresponding EFTPOS Payment or EFTPOS Refund will have:
Status set to Manual Override
Terminal set to No Terminal
The transaction identifier, transaction reference, auth code and card type will be unset.
Transaction Recovery
If a terminal payment or refund is terminated prematurely e.g. by the user closing the browser, the user can attempt to recover it by editing the Payment or Refund again. This will attempt to resume the transaction.
If this fails, the EFTPOS provider will cancel the transaction.
Reversals
If a payment or refund contains an EFT record done via a Terminal, these will not be able to be reversed using Customers - Account - Reverse. A corresponding refund/payment must be entered instead.
Transaction Log
OpenVPMS will record the status of each transaction initiated via an EFTPOS terminal using EFTPOS Payment and Refund records.
These can be used for the purposes of reporting and auditing, and will include transactions that were initiated but failed due to error, were declined, or cancelled.
The following details will be recorded:
date/time – the date/time the transaction was submitted
transaction identifier - the provider generated transaction identifier
transaction reference
auth code
card type e.g. "EFTPOS", "Visa", "MasterCard", "American Express", "Diners Club", "JCB" or "UnionPay". As these are provider specific, and may change over time, these will be stored as free-form text
customer. The customer the transaction applies to, or the OTC pseudo-customer for over the counter transactions
amount – the amount the transaction was for
cashout - the cashout amount
status – the transaction status
receipts – any receipts generated for the transaction
terminal – the terminal used
location – the practice location
till – the till
A new EFTPOS reporting workspace will be provided in Reporting that can be used to query transactions by:
type i.e. Payment or Refund
date/time
transaction identifier
customer
terminal
Integrated Receipt Printing
Integrated receipt printing allows the EFTPOS terminal receipt to be included on the customer receipt. This is to support EFTPOS terminals that are not connected to a printer.
To support this:
The EFT Item will be extended to allow the EFTPOS terminal receipt to be attached, as plain text
The Receipt template will be updated to include the EFTPOS terminal receipt, if present
The Check-Out workflow will be changed to include an option to print the receipt, as well as the customer invoice
Configuration
EFTPOS terminal integration is enabled by:
attaching one or more EFTPOS terminal configurations to the relevant Till.
The configuration will be supplied by the EFTPOS provider.
deploying the provider implementation of the POS API to the OSGi container
Exclusions
This project will not support:
incorporating surcharges into payments or refunds.
automatic reversal of EFT payments
If a Payment containing an EFT transaction needs to be reversed, a Refund must be entered manually
automatic reversal of EFT refunds
If a Refund containing an EFT transaction needs to be reversed, a Payment must be entered manually
EFTPOS integration using the Credit Card type for Payments or Refunds
i.e. the EFT type must be used for both debit and credit cards.