EFTPOS API

Description

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.

Environment

None

Activity

Show:

Tim Anderson February 24, 2021 at 12:11 PM

Removed surcharges for this phase.

Fixed

Details

Assignee

Reporter

Time tracking

125h logged

Components

Fix versions

Priority

Who's Looking?

Open Who's Looking?

Created May 21, 2017 at 2:28 AM
Updated October 30, 2021 at 1:29 AM
Resolved February 24, 2021 at 12:10 PM
Who's Looking?