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.