From d10b95e58acba886dd44944ae8433c715dcd13e9 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 21 Feb 2020 11:02:13 -0300 Subject: Add section for taler-merchant-pos-terminal --- taler-merchant-pos-terminal.rst | 138 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 taler-merchant-pos-terminal.rst (limited to 'taler-merchant-pos-terminal.rst') diff --git a/taler-merchant-pos-terminal.rst b/taler-merchant-pos-terminal.rst new file mode 100644 index 00000000..5107d9da --- /dev/null +++ b/taler-merchant-pos-terminal.rst @@ -0,0 +1,138 @@ +.. + This file is part of GNU TALER. + Copyright (C) 2014-2018 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 2.1, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along with + TALER; see the file COPYING. If not, see + + @author Torsten Grote + +GNU Taler Merchant POS Manual +############################# + +The GNU Taler merchant POS (point of sale) terminal allows sellers to + +* process customers' orders by adding or removing products +* calculate the amount owed by the customer +* let the customer make a Taler payment via QR code or NFC + +Android App +=========== + +.. note:: + The Android app is currently optimized for tablet devices, not phones. + +At first start, the Android app asks you for a configuration URL +and a user name as well as a password for HTTP basic authentication. + +At every start of the app, +it uses the saved configuration data +to fetch the current configuration (defined below) +and populates the currency, the products and their categories. + +The Tabled UI is separated into three columns: + +* Right: Product categories that the user can select to show different products +* Middle: Products available in the selected category and their prices +* Left: The current order, the ordered products, their quantity and prices + as well as the total amount. + +At the bottom of the main UI there is a row of buttons: + +* Restart: Clears the current order and turns into an Undo button which restores the order. +* -1/+1: Available when ordered items are selected + and allows you to increment/decrement their quantity. +* Reconfigure: Allows you to change the app configuration settings (URL and username/password) + and to forget the password (for locking the app). +* History: Shows the payment history. +* Complete: Finalize an order and prompt the customer to pay. + +Building from source +-------------------- + +Import in and build with Android Studio or run on the command line: + +.. code-block:: sh + + $ git clone https://git.taler.net/merchant-terminal-android.git + $ cd merchant-terminal-android + $ ./gradlew assembleRelease + +APIs and Data Formats +===================== + +The GNU Taler merchant POS configuration is a single JSON file with the following structure. + + + .. ts:def:: MerchantConfiguration + + interface MerchantConfiguration { + // Configuration for how to connect to the backend instance. + config: BackendConfiguration; + + // The available product categories + categories: MerchantCategory[]; + + // Products offered by the merchant (similar to `Product`). + products: MerchantProduct[]; + + // Map from labels to locations + locations: { [label: string]: [location: Location], ... }; + } + +The elements of the JSON file are defined as follows: + + .. ts:def:: BackendConfiguration + + interface BackendConfiguration { + // The URL to the Taler Merchant Backend + base_url: string; + + // The name of backend instance to be used (see `Backend Options `) + instance: string; + + // The API key used for authentication + api_key: string; + } + + .. ts:def:: MerchantCategory + + interface MerchantCategory { + // A unique numeric ID of the category + id: number; + + // The name of the category. This will be shown to users and used in the order summary. + name: string; + } + + + .. ts:def:: MerchantProduct + + interface MerchantProduct { + // A merchant-internal unique identifier for the product + product_id: string; + + // Human-readable product description + // that will be shown to the user and used in contract terms + description: string; + + // The price of the product + price: Amount; + + // A list of category IDs this product belongs to. + // Typically, a product only belongs to one category, but more than one is supported. + categories: number[]; + + // Where to deliver this product. This may be an URL for online delivery + // (i.e. 'http://example.com/download' or 'mailto:customer@example.com'), + // or a location label defined inside the configuration's 'locations'. + delivery_location: string; + } -- cgit v1.2.3