summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--index.rst3
-rw-r--r--taler-merchant-pos-terminal.rst138
2 files changed, 140 insertions, 1 deletions
diff --git a/index.rst b/index.rst
index 5c47d0cb..ee3c8b8c 100644
--- a/index.rst
+++ b/index.rst
@@ -33,7 +33,7 @@ while providing anonymity for Customers.
Cryptography is used to ensure that none of the participants can
defraud the others without being detected immediately; however, in
-practice a fradulent Exchange might go bankrupt instead of paying the
+practice a fraudulent Exchange might go bankrupt instead of paying the
Merchants and thus the Exchange will need to be audited regularly like
any other banking institution.
@@ -56,6 +56,7 @@ Documentation Overview
taler-wallet
taler-nfc-guide.rst
taler-merchant-api-tutorial
+ taler-merchant-pos-terminal
taler-bank-manual
taler-backoffice-manual
taler-auditor-manual
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 <http://www.gnu.org/licenses/>
+
+ @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 <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;
+ }