# Smart Terminal Apps - FAQs

# Do you have a sample of an Android App?

Our sample of an Android App (opens new window) is currently available on GitHub. The application demonstrates invoking a payment fragment and displaying information on the second screen.

For any additional capabilities exposed in our SDK, please visit our Smart Terminal Apps section.

# What permissions do I need to declare in Android manifest to consume Poynt Services?

All Poynt Services are access controlled by android permissions defined in the Poynt Services Permission group (co.poynt.services.permissions). Below are the permissions that you must add to your Android Manifest file before consuming any of the Poynt Services:

  • Transaction Service: poynt.permission.TRANSACTION_SERVICE
  • Order Service: poynt.permission.ORDER_SERVICE
  • Second Screen Service: poynt.permission.SECOND_SCREEN_SERVICE
  • Receipt Printing Service: poynt.permission.RECEIPT_PRINTING_SERVICE
  • Product Catalog Service: poynt.permission.PRODUCT_SERVICE
  • Customer Service: poynt.permission.CUSTOMER_SERVICE
  • Business Service: poynt.permission.BUSINESS_SERVICE
  • Email Service: poynt.permission.EMAIL_SERVICE
  • Cash Register Service: poynt.permission.CASH_REGISTER_SERVICE

# How do I use Poynt Content Providers?

Poynt Content Providers provide a storage for various business related data including the orders and transactions, through the standard Android Content Provider interfaces. Below you'll find the data contracts (columns, and helper classes) that you can use to query data from the Poynt Content Providers. These content providers can be used to load data into various standard Android widgets directly from the data source.

Poynt OS SDK provides access to the data contracts:

  • Orders: co.poyntcontentproviders.orders.orders
  • Transactions: co.poyntcontentproviders.orders.transactions
  • Products: co.poyntcontentproviders.products.products
  • Business: co.poyntandroid.providers.BusinessContract
  • Customer: co.poyntandroid.providers.CustomerContract
  • Activity: co.poyntandroid.providers.ActivityContract

All the Poynt ContentProviders require explicit permissions to be acquired via the applications' Android Manifest during the app installation process. Below are the permissions defined in the Poynt's data permissions group (`co.poynt.permissions) that you must add to your AndroidManifest file in order to use the data:

  • Activities:
    • co.poynt.activities.ACCESS_DATA
    • co.poynt.activities.WRITE_DATA
  • Orders:
    • co.poynt.orders.ACCESS_ORDERS
    • co.poynt.orders.WRITE_ORDERS
  • Business:
    • co.poynt.business.ACCESS_BUSINESS
    • co.poynt.business.WRITE_BUSINESS
  • Customer:
    • co.poynt.customers.ACCESS_CUSTOMER
    • co.poynt.customers.WRITE_CUSTOMER
  • Products/Catalogs:
    • co.poynt.products.ACCESS_PRODUCTS
    • co.poynt.products.WRITE_PRODUCTS

# How can I install my app on the device? Which USB port do I use to connect to the computer with ADB?

You can sideload an APK using adb install <myapp.apk> or via Android Studio. The terminal needs to be connected to your computer using the micro USB port located on the right side of the merchant facing screen (below the volume keys). Note that USB ports on the dock can only be used to connect peripherals like a printer or scanner.

# Can I see the second screen on the emulator?

In the emulator go to Device settings > Developer Options > Simulate Secondary Displays and select 720x480 mdpi option. Please keep in mind that you can't interact with the second display using the emulator.

# How can I get the currency code for which the merchant/terminal is configured for?

Currency.getInstance(resources.getConfiguration().locale);. Alternatively you can look up account currency in Business.Store.currency using getBusiness API.

# How can I programmatically get device serial number?

You should use PoyntDeviceMetaDataProvider from PoyntSdk library.

build.gradle

dependencies {
    implementation "co.poynt.android.sdk:poynt-sdk:${libs.versions.poyntSDK.get()}"
}

Your Koin/Dagger/Hilt module

public class KoinOrDaggerModule {

    @Singleton
    internal fun providePoyntEnvConfigurationProvider(): PoyntEnvConfigurationProvider {
        return PoyntEnvConfigurationProviderImpl()
    }

    @Singleton
    internal fun poyntDeviceMetaDataProvider(
        context: Context,
        env: PoyntEnvConfigurationProvider?
    ): PoyntDeviceMetaDataProvider {
        val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager

        return PoyntDeviceMetaDataProvider(
            context,
            wifiManager?.connectionInfo,
            env)
    }

}

Usage

internal class DeviceSerialProvider(
    private val deviceMetaDataProvider: PoyntDeviceMetaDataProvider
) {
    fun get(): String {
        return deviceMetaDataProvider.poyntDeviceMetaData?.deviceSerial
    }
}

# How can my app tell if it's running on a Poynt 5 terminal?

You can use android.os.Build class to determine the type of terminal: if("Poynt-P5".equals(Build.MODEL)){ /* running on Poynt5 */}

# What endpoints does the Poynt terminal connects to? Can I get th list of IPs to whitelist on my network?

We host our services on AWS and cannot guarantee static IPs. The terminal needs to be able to connect to the following endpoints:

  • https://fouroneone.poynt.net
  • https://mothership.poynt.net
  • https://mothership-eu.poynt.net
  • https://services.poynt.net
  • https://services-eu.poynt.net
  • https://billing.poynt.net
  • https://billing-eu.poynt.net
  • https://ding2rj4jlgsl.cloudfront.net
  • wss://pcm.poynt.net
  • wss://pcm-eu.poynt.net
  • http://connectivitycheck.gstatic.com
  • http://clients3.google.com
  • https://s3-us-west-1.amazonaws.com
  • https://vt.poynt.net

# How can I project both screens of the Poynt Smart Terminal onto my desktop/laptop screen?

You can use the following utility (opens new window).

# How can I wipe the developer terminal locally (i.e. directly from the device)?

Go to Settings > Developer Preferences (unlock Dev Prefs if needed) and tap 10 times on WARNING. Please note, this won't unlink the terminal from the business account. If you need to do that, you will have to initiate wipe from the Developer Center.

# How can I use adb on a Poynt Smart Terminal V2 when it's docked?

USB debugging does not work on V2 when it is docked. However you can use ADB over Wi-fi. Please refer to Connect to a Device over Wi-Fi (opens new window).

# I can't use Gradle. How do I download Poynt dependencies for my project?

PoyntOS SDK and API model can be downloaded from the following locations:

  • SDK: https://nexus.poynt.com/content/repositories/releases/co/poynt/android/sdk/poynt-sdk/{version}/poynt-sdk-{version}.aar. For example, the URL to download SDK v1.2.33 is https://nexus.poynt.com/content/repositories/releases/co/poynt/android/sdk/poynt-sdk/1.2.33/poynt-sdk-1.2.33.aar
  • API model: https://nexus.poynt.com/content/repositories/releases/co/poynt/api/android-api-model/{version}/android-api-model-{version}.jar

# Can we use the Direct Card API interface to read payment cards?

No. Payment cards are encrypted by the secure module in the card reader, no application has access to the card data in clear text.

# Is there a Direct Card API code sample ready to use?

Yes, you can refer to this code sample (opens new window) for more information

Last Updated: 9/4/2024, 11:34:04 AM