a10677b7cd407b61bb80ce05082ab60a85a0d3b6
The CMS answers a capture of an order already paid with this PayPal order
with { success: true, alreadyCaptured: true } instead of the order. Step 3
took that answer for a capture without authorisation and showed a payment
error. It now reloads the paid order (keeping the shown one if the reload
fails) and continues as after a first capture: confirmation, the
checkout-payment-completed event, and the redirect to the order's result
page. capturePayment is typed as Order | AlreadyCaptured, and the pure
isAlreadyCaptured (utils/captureResponse.ts) tells them apart.
Refs libretech/mp#71
libreshop/shop
Vue/Nuxt-style storefront base.
Part of the libreshop toolkit. Image
published at git.librete.ch/libreshop/shop on every push to main
and on v* tags.
Source
This repo was extracted from mp/shop/ on 2026-04-29; mp was the
first concrete adapter consuming the toolkit. mp's compose.yml now
pulls git.librete.ch/libreshop/shop:<pin> instead of building locally.
Build locally
docker build -t libreshop/shop: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.
Description
libreshop/shop — Vue/Nuxt-style storefront base
8.5 MiB
0 Stars
2 Watchers
0 Forks
Languages
Vue
56.4%
TypeScript
42.8%
JavaScript
0.4%
Dockerfile
0.3%