# Customer-facing Screen
# API Summary
GoDaddy Poynt Smart Terminals are equipped with a customer-facing screen, also known as the second screen, that provides a more secure experience for users when entering their payment card PIN. This creates an opportunity for developers to build applications that can interact with both merchants and customers.
However, we are required by our PCI compliance to have a strict control over the second screen. So, even if direct access is not allowed, PoyntOS SDK still provides a variety of templates for the second screen via IPoyntSecondScreenService (opens new window) and IPoyntSecondScreenService v2 (opens new window).
If you would like to learn more about the configuration options for these screens, please refer to SecondScreenServiceActivity and SecondScreenService2Activity sections within PoyntSamples (opens new window).
This template simply changes the second screen to the default background image.
You can use this API to reset the second screen to its default state once your application goes to the background or after the customer provides input data such as phone number and the 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.
This will allow the application to collect the phone number from the customer. The labels can be updated to one of the following:
- QR CODE
Once the customer taps on one of the buttons, the client application will receive a callback.
You can refer to IPoyntSecondScreenPhoneEntryListener (opens new window) for more details.
The client application can collect email input from the customer. The 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.
This is an API to collect simple text input such as a discount code.
The captureCode API displays a scanner screen and uses the customer-facing camera to scan a bar code or QR code.
This API takes a list of OrderItem objects to display the cart contents and running total.
To customize the screen, the application can pass a background image, button image, and button label.
# IPoyntSecondScreenService V2
If a merchant is configured to add tips, the Payment Fragment includes the tipping screen in the payment flow by default.
If the application wants to have greater control over the payment experience, it can suppress the tipping screen as part of the Payment Fragment flow by setting
Payment.disableTip(true) and calling the captureTip API to collect the tip amount before the transaction.
For example, you can make the text prompt on the template and the tip amounts/percentages configurable.
The captureSignature API returns a bitmap of the customer's autograph. Both the text prompts, and the label on the right button are configurable within the client application.
This API allows you to present up to 4 receipt choices:
- No receipt
If the email or phone number are passed down as parameters, they will be displayed as part of the button label and enable one-tap receipt selection for the email and phone options.
The text prompt and the footer text are also configurable.
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 the 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.
This API can be called by passing either text content, HTML, or a URL. The labels of the buttons are configurable.
This API is fairly similar to the captureCode API. Additionally, the text prompt and button labels are configurable.
Although similar to the showItem API, this template has action buttons to enable additional functionalities like allowing customers to confirm the cart contents or to add a tip.
The "CONFIRM" prompt found in the screenshots, and the button labels are both configurable.