merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

README (3718B)


      1 About
      2 =====
      3 
      4 This is the GNU Taler merchant backend. It provides the logic that should run
      5 at every GNU Taler merchant.  The GNU Taler merchant is a RESTful backend that
      6 can be used to setup orders and process payments.  This component allows
      7 merchants to receive payments without invading the customers' privacy. Of
      8 course, this applies mostly for digital goods, as the merchant does not need
      9 to know the customer's physical address.
     10 
     11 A general-purpose merchant back-office single-page (HTML/JavaScript)
     12 application is also included (alas, the source code for it is in another Git
     13 repository).
     14 
     15 Wallets can retrieve all active unit definitions without authentication using
     16 GET /units relative to the merchant instance base URL (for example,
     17 /instances/shop/units). The response contains a "units" array with labels,
     18 translations, and precision, including built-in units. The existing private
     19 unit endpoints remain authenticated and include inactive units.
     20 
     21 This merchant backend must be combined with a merchant frontend, such as
     22 an e-commerce application.  You can find a WooCommerce plugin, a snack
     23 machine integration (taler-mdb) and various demonstrator front-ends at
     24 https://git.taler.net/.
     25 
     26 
     27 Upgrading to v0.16
     28 ==================
     29 
     30 Upgrading a taler-merchant-httpd < 0.15 to >= 0.16 requires stopping the
     31 existing service and running taler-merchant-dbinit to upgrade the database
     32 schema.  The migration will be done in one LARGE transaction that can take
     33 several minutes.  If the existing database has non-trivial amounts of data,
     34 that transaction is likely to run into a PostgreSQL error "out of shared
     35 memory" with the default PostgreSQL database settings.  It is thus recommended
     36 to set
     37 
     38 max_locks_per_transaction = 512
     39 max_pred_locks_per_transaction = 512
     40 
     41 (and restart the database) if this problem is encountered.
     42 The values can afterwards be lowered again for production.
     43 
     44 
     45 Joining GNU
     46 ===========
     47 
     48 This is a GNU program, developed by the GNU Project and part of the
     49 GNU Operating System. If you are the author of an awesome program and
     50 want to join us in writing Free Software, please consider making it an
     51 official GNU program and become a GNU maintainer.  You can find
     52 instructions on how to do so at http://www.gnu.org/help/evaluation.
     53 We are looking forward to hacking with you!
     54 
     55 
     56 Dependencies:
     57 =============
     58 
     59 Build tools for compiling Taler merchant from source:
     60 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     61 
     62 - gcc or clang
     63 - autoconf           >= 2.69        (building from git)
     64 - automake           >= 1.11.1      (building from git)
     65 - recutils           >= 1.0         (building from git)
     66 - libtool            >= 2.2
     67 - makeinfo           >= 4.8
     68 - make[*3]
     69 - pkgconf or pkg-config
     70 - sphinx
     71 - sphinx-rtd-theme
     72 - sphinx-multiversion
     73 
     74 
     75 Direct dependencies
     76 ~~~~~~~~~~~~~~~~~~~
     77 
     78 These are the direct dependencies for running a Taler exchange:
     79 
     80 - GNU Taler exchange >= 0.16.0
     81 - PostgreSQL         >= 15.0
     82 - libqrencode
     83 
     84 
     85 Project structure
     86 =================
     87 
     88 src/backend/
     89    contains the "backend", a C piece of software which implements crypto routines
     90    and communication with the 'exchange'
     91 
     92 src/backenddb/
     93    contains the database interactions (for now only PostgreSQL)
     94 
     95 src/lib/
     96    contains a C API to talk to the REST API of merchant backend
     97 
     98 src/util/
     99    common utility functions
    100 
    101 src/bank/
    102    utility functions to talk to the Taler bank revenue API to
    103    reconcile transactions
    104 
    105 src/merchant-tools/
    106    contains helper programs to setup or manipulate the merchant backend
    107 
    108 src/testing/
    109    contains test cases for the merchant backend
    110 
    111 doc/
    112    contains documentation files, like TeXinfo
    113 
    114 contrib/
    115    contains the single-page-app (Web interface) as a submodule,
    116    as well as CI/CD logic.