A local playground for @sumup/vendure-plugin. It runs:
postgresfor Vendure- a Vendure server with Admin UI
- a minimal storefront that creates a real SumUp checkout through the Shop API
The Vendure app builds this plugin from the local source tree and links it into the example app without publishing to npm.
cd examples/docker
cp example.env .env
# edit .env and set SUMUP_API_KEY and SUMUP_MERCHANT_CODE
docker compose up --buildWhen ready:
- Storefront: http://localhost:8080
- Vendure Shop API for the storefront: http://127.0.0.1:3000
- Vendure Admin API: http://localhost:3000/admin-api
- Vendure Admin UI: http://localhost:3000/admin
- Superadmin login:
superadmin/supersecretby default
If you change credentials, ports, currency, or public URLs after the first boot, reset the example before starting again:
docker compose down -vOn first boot the example app seeds:
- a
sumupPayment Method backed by the plugin - a default shipping method
- a demo product variant
- a small shared
config.jsonconsumed by the storefront
The example also syncs the default Vendure channel currency to VENDURE_CURRENCY_CODE
on first boot. This must match the currency accepted by your SumUp merchant account.
The storefront:
- creates an active order
- adds the seeded demo variant
- sets customer + address details
- selects the seeded shipping method
- transitions the order to
ArrangingPaymentwhen required - calls
addPaymentToOrderwith thesumuppayment method - redirects to
payments[].metadata.public.hostedCheckoutUrl
Set SUMUP_CHECKOUT_MODE=widget in .env and rebuild. The storefront will show the checkoutId returned by the plugin instead of a hosted redirect URL.
The plugin expects SumUp to call:
http://localhost:3000/payments/sumup/webhook
That URL is not publicly reachable from SumUp. To test webhook delivery, expose the backend with a tunnel and set VENDURE_PUBLIC_URL in .env to the public URL before rebuilding.
- Keep
VENDURE_PUBLIC_URLon127.0.0.1if you want the storefront and Admin UI to use separate auth cookies in the browser. - If port
8080is already in use, changeSTOREFRONT_PORTandSTOREFRONT_URLtogether.