Assets 2

3.0 Release Change Highlights

A new Loyalty API
General bug fixes and quality improvements

Loyalty API

Clover now supports the exchange of customer loyalty information between a Clover device and a point of sale. This communication channel provides the ability to recognize customers using unique identifiers. An identifier could be the customer’s name, phone number, or email address; their loyalty card number stored with a barcode or stripe; or an Apple Pass or Google SmartTap NFC payload broadcast by the customer’s phone.

Both the point-of-sale software and custom activities on the Clover device can access the data to perform database lookups and then customize the customer experience using the data.

@mike-brooking mike-brooking released this Nov 14, 2018

Assets 2

Minor update to resolve an issue with the maven published artifact.

@mike-brooking mike-brooking released this Oct 2, 2018

Assets 2

Clover Mini version 2 support for the Clover Connector Android SDK 1.4 version family

Update the SDK with Mini 2 device support (transparent to the API consumer)
Improve USB reconnect logic on device reboot

@ericn-clover ericn-clover released this Sep 4, 2018 · 5 commits to master since this release

Assets 2

FIXED

  • Resolves an issue when running on Station 2018 which prevented Ethernet over USB Tethering to correctly tether through an attached mini.

@ericn-clover ericn-clover released this Apr 18, 2018 · 7 commits to master since this release

Assets 2

NOTE: Full support for version 1.4.1 of the SDK requires version 159 or higher of the Pay Display app.

NEW

  • Add support for both development and production certificates in the example apps
  • Added ability to retrieve certificates via resource load OR via network endpoint
  • Added new API call to request a debug log from the device
  • Add per transaction setting support for voids and refunds

FIXED

  • Corrected an issue where a transaction setting for disabling a tip on screen for a sale or auth was being ignored
  • Fixed problem with External Payment Id being lost when connection lost
  • Fixed small problem with Closeout response
  • Updated the Example app to work with the Station 2018 mode

@clover-bret clover-bret released this Oct 27, 2017 · 11 commits to master since this release

Assets 2

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)

    • Added support for printing large images through message fragmenting


FIXED

  • Suppress expected exceptions during planned connection close
  • Correct resource cleanup

@clover-bret clover-bret released this Sep 13, 2017 · 19 commits to master since this release

Assets 2

NEW

  • Added support for QR code scanning.
  • 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.
  • 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.
    • ICloverConnectorListener

      • Added:
        • onCustomActivityResponse() - Receives the callbacks from startCustomActivity().
        • onMessageFromActivity() - Receives the callbacks from sendMessageToActivity().
        • onRetrievePaymentResponse() - Receives the callbacks from retrievePayment().
        • onRetrieveDeviceStatusResponse() - Receives the callbacks from retrieveDeviceStatus().
    • 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
          • The Custom Activity Response (onCustomActivityResponse()) contains a single text payload, populated from the com.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 a ICloverConnector.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.
    • ResetDevice now calls back to onResetDeviceResponse with the current status

FIXED

  • Fixed several synchronization issues with Web Socket heartbeats and reconnects
  • Miscellaneous bug fixes

@targethead targethead released this Apr 20, 2017

Assets 2

IMPROVED

  • This minor release contains additional hardening of the Connector validation code
1.2

@targethead targethead released this Apr 20, 2017

Assets 2

NEW

  • 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 and TransactionRequest classes.

    • TransactionRequest - Extended by SaleRequest, AuthRequest, PreAuthRequest, and ManualRefundRequest

      • 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 a confirmPayment() 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 an acceptSignature() request.
    • SaleRequest (extends TransactionRequest)

      • 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.

IMPROVED

  • ResetDevice() now calls back to onResetDeviceResponse 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 a ConfirmPaymentRequest().
        • rejectPayment() (REQUIRED) - Takes a payment object and the challenge that was associated with the payment gateway's rejection. This is a possible response to a ConfirmPaymentRequest().
        • retrievePendingPayments() - Retrieves a list of unprocessed payments that were taken offline and are pending submission to the server.
      • Renamed
        • capturePreAuth() - Formerly captureAuth().
        • showDisplayOrder() - Formerly displayOrder(). This is now the only operation needed to display or change the order information shown on the Clover Mini.
          * removeDisplayOrder() - Formerly displayOrderDelete().
      • Removed the following methods, which have been replaced by showDisplayOrder().
        • displayOrderLineItemAdded().
        • displayOrderLineItemRemoved().
        • displayOrderDiscountAdded().
        • displayOrderDiscountRemoved().
      • Modified
        • SaleRequest() (REQUIRED), AuthRequest() (REQUIRED), PreAuthRequest() (REQUIRED), and ManualRefund() (REQUIRED) all now require ExternalId 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. Use FullRefund: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.
    • ICloverConnectorListener (Notifications)
      • Added
        • onPaymentConfirmation() (REQUIRED) - Consists of a payment object and a list of challenges/void reasons.
        • onDeviceError() - A general callback when there is an error communicating with the device.
        • onPrintManualRefundReceipt() - If disablePrinting=true on the request, this will be called to indicate that the POS can print this receipt.
        • onPrintManualRefundDeclineReceipt() - If disablePrinting=true on the request, this will be called to indicate that the POS can print this receipt.
        • onPrintPaymentReceipt() - If disablePrinting=true on the request, this will be called to indicate that the POS can print this receipt.
        • onPrintPaymentDeclineReceipt() - If disablePrinting=true on the request, this will be called to indicate that the POS can print this receipt.
        • onPrintPaymentMerchantCopyReceipt ()- If disablePrinting=true on the request, this will be called to indicate that the POS can print this receipt.
        • onPrintRefundPaymentReceipt() - If disablePrinting=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() - Formerly onDisconnected().
        • onDeviceConnected() - Formerly onConnected().
        • onDeviceReady() - Formerly onReady().
        • onTipAdjustAuthResponse - Formerly onAuthTipAdjustResponse().
        • onCapturePreAuthResponse - Formerly onPreAuthCaptureResponse().
        • onVerifySignatureRequest - Formerly onSignatureVerifyRequest().
      • Removed
        • onTransactionState().
        • onConfigErrorResponse() - These are now processed as normal operation responses.
        • onError() - Now handled by onDeviceError() or through normal operation responses.
        • onDebug().
    • Request/Response Objects
      • Added:
        • ConfirmPaymentRequest() - Contains a Payment and a list of "challenges" the
          Clover device encountered from the gateway during payment operations, if there are questions for the merchant on their willingness to accept any risk associated with that payment's challenge.
        • RetrievePendingPaymentsResponse() - Contains a list of PendingPaymentEntry objects, which have the paymentId and amount for each payment that has yet to be sent to the server for processing.
        • PrintManualRefundReceiptMessage() - Contains the Credit object to be printed.
        • PrintManualRefundDeclineReceiptMessage() - Contains the declined Credit object to be printed.
        • PrintPaymentReceiptMessage() - Contains the Order and Payment to be printed.
        • PrintPaymentDeclineReceiptMessage() - Contains the declined Payment and the reason for the decline to be printed.
        • PrintPaymentMerchantCopyReceiptMessage() - Contains the payment to be printed.
        • PrintRefundPaymentReceiptMessage() - Contains the Payment, Refund, and Order.
      • Renamed
        • VerifySignatureRequest() - Formerly SignatureVerifyRequest().
        • CapturePreAuthRequest() - Formerly CaptureAuthRequest().
        • VoidPaymentRequest() - Formerly VoidTransactionRequest().
        • CloseoutRequest() - Formerly separate field-level parameters.
        • TipAdjustAuthResponse() - Formerly AuthTipAdjustResponse().
      • Removed
        • ConfigErrorResponse() - These are now processed as normal operations.
      • Modified
        • All response messages now return the following:​
          • Success (Boolean).
          • Result (enum) [SUCCESS|FAIL|CANCEL|ERROR|UNSUPPORTED].
            • FAIL - Failed to process with the values/properties supplied.
            • CANCEL - Canceled, but a retry could work.
            • ERROR - An unexpected exception occurred.
            • UNSUPPORTED - The merchant configuration won't allow the request.
          • Reason (String) - Optional information about result value, if not SUCCESS.
          • Message (String) - Optional details about the result value, if not SUCCESS.
        • SaleResponse, AuthResponse and PreAuthResponse have three new flags (e.g., the payment gateway may force an AuthRequest() to a SaleRequest()).
          • IsSale (Boolean) - true if the payment is closed.
          • IsAuth (Boolean) - true if the payment can be tip-adjusted before closeout.
          • IsPreAuth (Boolean) - true if the payment needs to be "captured" before closeout will close it.
  • Added DefaultCloverConnectorListener, which automatically accepts a signature if a verifySignature() request is received.

  • 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.1, passing zero into the amount field will trigger a validation failure. Set fullRefund (Boolean) to true to specify a full refund. NOTE: In a partial refund scenario, this will attempt to refund the original (full) payment amount, rather than the remaining amount.

  • CloverConnector now requires you to set the ApplicationId when configuring your
    third-party application. You will provide this information as part of the device configuration that is passed in when creating the the CloverConnector. The applicationId string parameter that's passed in when instantiating the DefaultCloverDevice should be set using the format :.

    • Example: com.clover.ExamplePOS:1.2
  • Modified Remote Pay so that the prompts for taking orders offline and flagging duplicate orders only appear in merchant-facing mode.

  • PreAuthRequest() no longer prompts for signature, signature verification, or receipt options on the customer-facing device.

FIXED

  • Fixed voidPayment() so that it verifies connection status and checks for a void request acknowledgement from the Clover device prior to issuing a successful response.