EFTPOS Integration

Donate to this project

Development Project Status: Under Discussion

Total cost estimate (ex-Tax): 
$9600
Due date for completion of this stage: 
19/12/2014
Release: 
Future
Project funding: 

You can either donate money to this project by entering the amount above and clicking the 'Add to cart' button, or you can pledge an amount by clicking here to email your commitment. If you make a pledge, then when we have 100% funding commitments, you will be notified by email and you can then make your actual donation. Note that development will not commence until all funds are received.

Project description: 

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
  • Surcharges
  • 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
  • is dependent on the completion of the Plugin Support project

 

 

Payments and Refunds

The EFTPOS API for payments and refunds integrated with the existing payment and refund editors.

When the current Till has one or more Terminals attached, the EFT and Credit Card Items will be replaced by a single EFT/Credit Card Item. One a payment or refund is processed via a terminal, a corresponding EFT or Credit Card item will be added, based on the type of card used.

Payments

Adding an EFT/Credit Card will display a dialog that prompts for the following fields:

  • Amount
  • Cashout
  • a list of the Terminals associated with the Till, allowing the terminal to be selected
  • a Pay button

Clicking the Pay button will trigger the selected terminal to accept payment.
When a payment is successfully processed, the user interface will:

  • add an EFT payment item, if a debit card was used
  • add a Credit Card payment item, if a credit card was used, recording the type of card used, and any surcharge
  • prevent editing or deletion of the payment item
  • prevent deletion or cancellation of the payment
  • prevent changing of the Till

Refunds

Adding an EFT/Credit Card will display a dialog that prompts for the following fields:

  • Amount
  • a list of the Terminals associated with the Till, allowing the terminal to be selected
  • a Refund button

Clicking the Refund button will trigger the selected terminal to perform a refund.
When a refund is successfully processed, the user interface will:

  • add an EFT refund item, if a debit card was used
  • add a Credit Card refund item, if a credit card was used, recording the type of card used, and any surcharge
  • prevent editing or deletion of the refund item
  • prevent deletion or cancellation of the refund
  • prevent changing of the Till 

Surcharges

EFTPOS providers can apply surcharges to amounts. As these are applied after invoice finalisation, they cannot appear on the customer invoice.

To record the surcharge, and correctly determine the refund amount when a surcharged payment is refunded, any surcharge will be stored on the Credit Card item as a new field.

Payment Reversal

When performing reversals of payments, the amount submitted to the EFTPOS terminal will be the payment amount plus any surcharge.

TODO

Transaction Log

OpenVPMS will record the status of each transaction initiated via an EFTPOS terminal.
This 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
  • surcharge - the surcharge amount
  • type (payment/refund)
  • status – the transaction status
  • receipts – any receipts generated for the transaction
  • terminal – the terminal used
  • user - the logged in user that initiated the transaction
  • location – the practice location
  • till – the till

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

Relationship to JavaPOS/UnifiedPOS

The POS API will be simpler to use than the JavaPOS/UnifiedPOS specification. It may be implemented using JavaPOS, XML-POS, or using a 3rd party library.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: EFTPOS Integration

we would definitely be interested in this.

question - would it automatically record the type of card used? i.e. visa/amex/mastercard? If so, bonus.

Thanks,

Adrian

Re: EFTPOS Integration

Yes.

Just to be clear, note that there are two parts to get POS support into OpenVPMS:

  • we define a API for POS
  • POS providers or integrators implement the API and deploy to OpenVPMS

 

 

Syndicate content