merchant

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

README (3356B)


      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 This merchant backend must be combined with a merchant frontend, such as
     16 an e-commerce application.  You can find a WooCommerce plugin, a snack
     17 machine integration (taler-mdb) and various demonstrator front-ends at
     18 https://git.taler.net/.
     19 
     20 
     21 Upgrading to v0.16
     22 ==================
     23 
     24 Upgrading a taler-merchant-httpd < 0.15 to >= 0.16 requires stopping the
     25 existing service and running taler-merchant-dbinit to upgrade the database
     26 schema.  The migration will be done in one LARGE transaction that can take
     27 several minutes.  If the existing database has non-trivial amounts of data,
     28 that transaction is likely to run into a PostgreSQL error "out of shared
     29 memory" with the default PostgreSQL database settings.  It is thus recommended
     30 to set
     31 
     32 max_locks_per_transaction = 512
     33 max_pred_locks_per_transaction = 512
     34 
     35 (and restart the database) if this problem is encountered.
     36 The values can afterwards be lowered again for production.
     37 
     38 
     39 Joining GNU
     40 ===========
     41 
     42 This is a GNU program, developed by the GNU Project and part of the
     43 GNU Operating System. If you are the author of an awesome program and
     44 want to join us in writing Free Software, please consider making it an
     45 official GNU program and become a GNU maintainer.  You can find
     46 instructions on how to do so at http://www.gnu.org/help/evaluation.
     47 We are looking forward to hacking with you!
     48 
     49 
     50 Dependencies:
     51 =============
     52 
     53 Build tools for compiling Taler merchant from source:
     54 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     55 
     56 - gcc or clang
     57 - autoconf           >= 2.69        (building from git)
     58 - automake           >= 1.11.1      (building from git)
     59 - recutils           >= 1.0         (building from git)
     60 - libtool            >= 2.2
     61 - makeinfo           >= 4.8
     62 - make[*3]
     63 - pkgconf or pkg-config
     64 - sphinx
     65 - sphinx-rtd-theme
     66 - sphinx-multiversion
     67 
     68 
     69 Direct dependencies
     70 ~~~~~~~~~~~~~~~~~~~
     71 
     72 These are the direct dependencies for running a Taler exchange:
     73 
     74 - GNU Taler exchange >= 0.16.0
     75 - PostgreSQL         >= 15.0
     76 - libqrencode
     77 
     78 
     79 Project structure
     80 =================
     81 
     82 src/backend/
     83    contains the "backend", a C piece of software which implements crypto routines
     84    and communication with the 'exchange'
     85 
     86 src/backenddb/
     87    contains the database interactions (for now only PostgreSQL)
     88 
     89 src/lib/
     90    contains a C API to talk to the REST API of merchant backend
     91 
     92 src/util/
     93    common utility functions
     94 
     95 src/bank/
     96    utility functions to talk to the Taler bank revenue API to
     97    reconcile transactions
     98 
     99 src/merchant-tools/
    100    contains helper programs to setup or manipulate the merchant backend
    101 
    102 src/testing/
    103    contains test cases for the merchant backend
    104 
    105 doc/
    106    contains documentation files, like TeXinfo
    107 
    108 contrib/
    109    contains the single-page-app (Web interface) as a submodule,
    110    as well as CI/CD logic.