Releases: clover/remote-pay-java
1.4.1
NOTE: Full support for version 1.4.1 of the SDK requires version 143 or higher of the Pay Display app.
NEW
- Modify ICloverConnector instantiation to be factory-based
- Add support for both development and production certificates in the example apps
- Added ability to retrieve certificates via resource load OR via network endpoint
- Add per transaction setting support for voids and refunds
- Added new API call to request a debug log from the device
FIXED
- Corrected an issue where a transaction setting for disabling a tip on screen for a sale or auth was being ignored
- Miscellaneous validation fixes
1.4.0
NOTE: Full support for version 1.4 of the SDK requires version 143 or higher of the Pay Display app.
NEW
- Added a new Print API
- Please migrate all print requests to the new API using the PrintRequest object:
- Print(PrintRequest request)
- The following type-specific printing functions are deprecated and will be removed in a future release:
- PrintText(List messages)
- PrintImage(Bitmap bitmap)
- PrintImageFromURL(string ImgURL)
- Added a new API for opening cash drawers
- Please migrate all cash drawer requests to the new API using the OpenCashDrawerRequest object:
- OpenCashDrawer(OpenCashDrawerRequest request)
- The following method for opening cash drawers with a reason string is deprecated and will be removed in a future release:
- OpenCashDrawer(String reason)
- Added methods for querying available printers:
- RetrievePrinters(RetrievePrintersRequest request)
- OnRetrievePrintersResponse(RetrievePrintersResponse response)
- Added methods for querying the status of a print job:
- RetrievePrintJobStatus(PrintJobStatusRequest request)
- OnPrintJobStatusResponse(PrintJobStatusResponse response)
- Please migrate all cash drawer requests to the new API using the OpenCashDrawerRequest object:
- Added support for printing large images through message fragmenting
- Please migrate all print requests to the new API using the PrintRequest object:
FIXED
- Suppress expected exceptions during planned connection close
- Correct resource cleanup
1.3.3
FIXED
- Fixed thread and memory leaks that could occur when repeatedly creating/disposing connectors
- Fixed a resource leak that would occur on connectivity loss and reconnection
- Removed local org-json project and replaced with retrieval from the Maven Central Repository
1.3.2
FIXED
- Fixed several synchronization issues with WebSocket heartbeats and reconnects
- Miscellaneous bug fixes
1.3.1
NEW
-
Initial capability.
-
Added support for Custom Activities.
-
ICloverConnector
- Added
startCustomActivity()
- Starts a Custom Activity on the Clover device.sendMessageToActivity()
- Sends messages to Custom Activities running on the Clover device.retrievePayment()
- Queries the status of a payment on the device by its External ID.retrieveDeviceStatus()
- Queries the status of the device.
- Added
-
ICloverConnectorListener
- Added
onCustomActivityResponse()
- Receives the callbacks fromstartCustomActivity()
.onMessageFromActivity()
- Receives the callbacks fromsendMessageToActivity()
.onRetrievePaymentResponse()
- Receives the callbacks fromretrievePayment()
.onRetrieveDeviceStatusResponse()
- Receives the callbacks fromretrieveDeviceStatus()
.
- Added
-
CustomActivity
- The APK must be approved and then installed via the Clover App Market.
- clover-cfp-sdk library
- Added
CloverCFPActivity
, which can be extended. - Added constants for retrieving activity payload CloverCFP interface.
- Working with Custom Activities
- The action of the activity, as defined in the AndroidManifest, should be passed in as part of the request.
- A single text payload can be passed in to the request and retrieved in the intent via
com.clover.remote.cfp.CFPActivity.EXTRA_PAYLOAD constant
.- Example:
com.clover.remote.terminal.remotecontrol.extra.EXTRA_PAYLOAD
- Example:
- The Custom Activity Response (
onCustomActivityResponse()
) contains a single text payload, populated from thecom.clover.remote.cfp.EXTRA_PAYLOAD
extra in the result Intent. - Block vs Non-Blocking Activities
- A blocking Custom Activity (
CustomActivityRequest.setNonBlocking
(boolean)) will either need to finish itself, or be stopped by aICloverConnector.resetDevice()
request. One use case would be if you don't want a Sale request to interrupt a Custom Activity that collects customer information. - A non-blocking Custom Activity will finish when a new request is made. One use case would be if you want a Sale request to interrupt a Custom Activity that displays ads.
- A blocking Custom Activity (
- Added
-
-
Added support for certain Per-Transaction Settings, which will override Merchant Settings. To facilitate this new functionality, the following options were added to the
SaleRequest
andTransactionRequest
classes.-
TransactionRequest
- Extended bySaleRequest
,AuthRequest
,PreAuthRequest
, andManualRefundRequest
signatureThreshold
(Long) - Enables you to override the merchant-level Signature Threshold, which sets a minimum amount for requiring a signature.signatureEntryLocation
(DataEntryLocation) - Enables you to override the merchant-level Signature Entry Location. Possible values:ON_SCREEN
- The signature will be taken on the device screen.ON_PAPER
- The signature will be taken on the paper receipt.NONE
- This setting will cause the device to skip the signature request for the specified transaction.
disableReceiptSelection
(Boolean) - Enables you to bypass the customer-facing receipt selection screen.disableDuplicateChecking
(Boolean) - Enables you to bypass any duplicate transaction logic and associated requests for confirmation.autoAcceptPaymentConfirmations
(Boolean) - Enables automatic acceptance of any payment confirmations that might apply to the given transaction (e.g., an offline payment confirmation). This override prevents the SDK from transmitting payment confirmation requests back to the calling program. The transaction continues processing as if the caller initiated aconfirmPayment()
request.autoAcceptSignature
(Boolean) - Enables automatic acceptance of a signature (on screen or on paper) for the given transaction, if applicable. This override prevents the SDK from transmitting signature confirmation requests back to the calling program. The transaction continues processing as if the caller initiated anacceptSignature()
request.
-
SaleRequest
(extendsTransactionRequest
)tipMode
(TipMode) - Specifies the location from which to accept the tip. Possible values:TIP_PROVIDED
- The tip will be included in the request.ON_SCREEN_BEFORE_PAYMENT
- Valid when requested through Clover Mini or Clover Mobile.NO_TIP
- A tip will not be requested for this payment.
-
-
Added the ability to query pending payments.
-
Added device status queries to determine the state of the device and the payments processed by the device.
IMPROVED
-
ResetDevice()
now calls back toonResetDeviceResponse
with the current status. -
Renamed, added, and removed a number of API operations and objects to establish better consistency across platforms.
- ICloverConnector (Operations)
- Added
printImageFromURL()
- Prints an image from the web on paper receipts through the Clover Mini's built-in printer.initializeConnection()
(REQUIRED) - Starts communication with the device.addCloverConnectorListener()
Adds a CloverConnector listener.removeCloverConnectorListener()
- Removes a CloverConnector listener.acceptPayment()
(REQUIRED) - Takes a payment object. This is a possible response to aConfirmPaymentRequest()
.rejectPayment()
(REQUIRED) - Takes a payment object and the challenge that was associated with the payment gateway's rejection. This is a possible response to aConfirmPaymentRequest()
.retrievePendingPayments()
- Retrieves a list of unprocessed payments that were taken offline and are pending submission to the server.
- Renamed
capturePreAuth()
- FormerlycaptureAuth()
.showDisplayOrder()
- FormerlydisplayOrder()
. This is now the only operation needed to display or change the order information shown on the Clover Mini.
*removeDisplayOrder()
- FormerlydisplayOrderDelete()
.
- Removed the following methods, which have been replaced by
showDisplayOrder()
.displayOrderLineItemAdded()
displayOrderLineItemRemoved()
displayOrderDiscountAdded()
displayOrderDiscountRemoved()
- Modified
SaleRequest()
(REQUIRED),AuthRequest()
(REQUIRED),PreAuthRequest()
(REQUIRED), andManualRefund()
(REQUIRED) all now requireExternalId
to be set.ExternalId
should now be unique per transaction. This will allow the Clover device to reject repeat transaction requests.
- Changed all device action API calls to return
void
. - CloverConnector now requires you to set the
ApplicationId
when configuring/installing your third-party application. You'll provide this information as part of the device configuration you pass in when you create the CloverConnector. - Changed the behavior of
RefundPaymentRequest()
. In the previous versions, a value of zero for the amount field would trigger a refund of the full payment amount. With version 1.0, passing zero into the amount field will trigger a validation failure. UseFullRefund:boolean
to specify a full refund amount. NOTE: In a partial refund scenario, this will attempt to refund the original (full) payment amount, rather than the remaining amount.
- Added
- ICloverConnectorListener (Notifications)
- Added
onPaymentConfirmation()
(REQUIRED) - Consists of a payment object and a list of challenges/void reasons encountered at the payment gateway.onDeviceError()
- A general callback when there is an error communicating with the device.onPrintManualRefundReceipt()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onPrintManualRefundDeclineReceipt()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onPrintPaymentReceipt()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onPrintPaymentDeclineReceipt()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onPrintPaymentMerchantCopyReceipt ()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onPrintRefundPaymentReceipt()
- IfdisablePrinting=true
on the request, this will be called to indicate that the POS can print this receipt.onRetrievePendingPaymentsResponse()
- Called with the list of payments taken on the device that aren't processed on the server yet.
- Renamed
onDeviceDisconnected()
- FormerlyonDisconnected()
.onDeviceConnected()
- FormerlyonConnected()
.onDeviceReady()
- FormerlyonReady()
.onTipAdjustAuthResponse
- FormerlyonAuthTipAdjustResponse()
.onCapturePreAuthResponse
- FormerlyonPreAuthCaptureResponse()
.onVerifySignatureRequest
- FormerlyonSignatureVerifyRequest()
.
- Removed
onTransactionState()
.onConfigErrorResponse()
- These are now processed as normal operation responses.onError()
- Now handled byonDeviceError()
or through normal operation responses.onDebug()
.
- Added
- Request/Response Objects
- Added
ConfirmPaymentRequest()
- Contains a Payment and a list of "challenges" the
Clover device encountered from the gateway during...
- Added
- ICloverConnector (Operations)