libretech 4d77998b51 feat(checkout): verify the approved PayPal order and its capture against the order
verifyApprovedOrder accepts PayPal's order only if it is APPROVED, its
first purchase unit's custom_id is the order's uuid, and its amount is the
order total in EUR. verifyCompletedCapture accepts the order after the
capture only if it and its first capture are COMPLETED for the order
total in EUR, and returns the capture id. Both read PayPal's Orders v2
JSON in snake_case, as PayPalApi parses the response body.

Money is compared in integer cents: PayPal's "12.34" is parsed strictly,
the order total is Math.round(total * 100). For every total up to
3000.00 the amount the checkout sends (total.toFixed(2)) parses to the
cents the capture compares.

A rejection reason repeats only PayPal's statuses, currency codes and
amounts, never the payer's or the shipping data of the response.

Refs libretech/mp#71
2026-10-09 01:12:20 +02:00

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.

S
Description
libreshop/cms — Strapi-based content backend
Readme
316 KiB
0 Stars 2 Watchers 0 Forks
Languages
TypeScript 95%
Shell 4.4%
JavaScript 0.4%
Dockerfile 0.2%