ba110a11d82e4ed4c8b6a9a803d0a025cc191332
The order service adds the price of the order's payment method to the total, but the PayPal breakdown left it out, so an order with a surcharge was sent an amount its breakdown did not add up to, which PayPal rejects (D5). Since the breakdown is now checked against the total, such an order was answered 400. A payment price above 0 is now sent as handling, in whole cents, and item total, tax, shipping and handling add up to the amount to the cent. A payment method that costs nothing sends no handling. Every payment method and the pickup cost 0.00 today, and the shop cannot set a payment method (parseCustomerUpdate rejects the field), so this is robustness, not a live defect. The D5 test is a regular test, and a test checks the sum with a surcharge, also with a pickup without a price, for every whole-cent subtotal up to 300.00. Refs libretech/mp#71 Refs libretech/mp#67
libreshop/cms
Strapi-based content backend (catalogue, orders, customers).
Part of the libreshop toolkit. Image
published at git.librete.ch/libreshop/cms on every push to main
and on v* tags.
Source
This repo was extracted from mp/cms/ on 2026-04-29; mp was the
first concrete adapter consuming the toolkit. mp's compose.yml now
pulls git.librete.ch/libreshop/cms:<pin> instead of building locally.
Build locally
docker build -t libreshop/cms:dev .
Adapter contract
See docker-entrypoint.sh and Dockerfile for the runtime surface.
Adapters configure the component via env vars and bind-mounted volumes;
do not patch the running container or rely on internal paths.
Languages
TypeScript
95%
Shell
4.4%
JavaScript
0.4%
Dockerfile
0.2%