Overview

Poynt Smart Terminal has a customer facing screen (a.k.a. second screen) that allows developers to build apps that can interface with both merchants and consumers. We at Poynt frequently get questions from developers if they can fully customize the UI on the second screen. As Poynt Smart Terminal is a PCI PTS certified device it allows customers to enter their payment card PIN directly on the second screen. Therefore we are required by PCI to have a strict control over the second screen.

While direct access is not allowed PoyntOS SDK provides a variety of templates for the second screen via IPoyntSecondScreenService and IPoyntSecondScreenService v2.

To see various configuration options for these screens please refer to SecondScreenServiceActivity and SecondScreenService2Activity of PoyntSamples.

IPoyntSecondScreenService

showWelcome

This template simply changes the second screen to the default background image. You may want to use this API to reset the second screen to its default state once your application goes to the background or after customer provides some input like phone number and a confirmation message has been displayed. While showWelcome allows for optional parameters to display an action button, our recommendation is to use a more robust displayMessage API described later in this guide.

capturePhone

Allows application to collect phone number from the customer. The labels can be updated to one of the following:

Once the customer taps on either of the buttons the client application receives a callback. Please refer to IPoyntSecondScreenPhoneEntryListener for details.

captureEmailAddress

The client application can collect email input from the customer. Application can optionally pre-fill the email address field and change the action button label to CONFIRM or one of the other values mentioned above.

collectTextEntry

API to collect simple text input, e.g. discount code.

captureCode

captureCode API displays a scanner screen and uses the customer facing camera to scan a bar code or QR code.

showItem

This API takes an list of OrderItem objects to display the cart contents and running total.

showCheckIn

The application can pass a background image, button image and button label to customize the screen.

IPoyntSecondScreenService V2

captureTip

If a merchant is configured to do tip adjust Payment Fragment by default includes the tip screen in the payment flow. If the application wants to have greater control over the payment experience it can suppress the tip screen as part of the Payment Fragment flow by setting Payment.disableTip(true) and call captureTip API to collect the tip amount before the transaction, for example. The text prompt on the template and the tip amounts/percentages are configurable.

captureSignature

captureSignature returns a bitmap of customer’s autograph. Both text prompts and the label on the right button are configurable by the client app.

captureReceiptChoice

This API allows presenting up to 4 receipt choices:

If the email or phone number are passed as parameters, they will be displayed as part of the button label and enable one tap receipt selection for email and phone options. The text prompt and the footer text are configurable.

displayMessage

This template can be used to display general confirmation messages to the customer. The message is centered on the screen and can be styled using RGB font color and simple HTML tags (e.g. H1, P). The background image is also customizable. The message text is optional so this API can be used as a building block to enable rotating ad images.

captureAgreement

This API can be called by passing either text content, HTML or a URL. The labels of the buttons are configurable.

scanCode

Similar for captureCode API. The text prompt and button labels are configurable.

showCartConfirmation

While similar to showItem API this template has action buttons to allow for additional functionality like allowing customer to confirm the cart contents or to add tip. Text prompt (“CONFIRM” in the screenshot) and button labels are configurable.