Jump to content

Recommended Posts

Posted (edited)

I'd like to showcase the demo shop for my ProcessWire shop system.

The demo lets you explore both the frontend and the administration backend. Feel free to log in, place test orders, and try out the available features. The shop automatically resets to its default state every six hours, so you can't accidentally break anything.

If you'd like to receive the email notifications using your real email address, please make sure to delete your order immediately after testing, as your email address will be visible in the backend.

Because this shop system is primarily developed for the German market, the demo shop and the documentation are currently available in German only.

The "Stammdaten" section and the payment methods cannot be edited in the demo to prevent misuse.

Demo:
https://demoshop.mholte.de/

I'd be happy to hear your feedback, suggestions, and bug reports.

Edited by eutervogel
  • Like 6
  • Thanks 3
Posted

There was an issue with email delivery because the six-hour reset also reverted the sender address in the "Stammdaten" section back to the placeholder.

I've fixed it, so emails are being sent correctly again.

Posted

Hi @eutervogel!

I am extremely surprised and impressed. This shop "module" basically came out of nowhere and solves a huge "black hole" in the ProcessWire community: A functional, up-to date and all-in-one shop solution.

I made a shop with Padloper (Version 1) years ago which was one of my first PW projects ever. And in my main job I am working for one of germanys biggest e-commerce shops.

Coming that way I now what immense work setting up, developing and not least maintaining an online shop is nowadays.

You have tons or regularities that you have to take care of and each year something is added. For example: Last year all bigger online shops had to be be overworked due to the German Accessibility Improvement Act now the latest "addition" was the integration of the "electronic cancellation button". 

If you offer a shop solution for a client based on an existing system or "custom made" - you have to be in constant awareness of the legal changes and act immediately. 

Then you have to design the landing page, category pages, product pages, the checkout pages, search pages and the whole customer backend.

Not to mention many many e-mail templates.

Because of that the last shop that I set up for a client was actually a Shopify solution. That still was a ton of work, especially if you consider the countless hours for reading the developer docs and becoming familiar with the Shopify CLI and the whole template/development system (and so on!). 

So it's nice to see that there is a PW alternative now. I like the fact that everything is integrated and the documentation seems to be extremely well planned. I can remember that there was another shop module for PW around that looked promising but offered little to no documentation at all. What a bummer.

  • Like 2
Posted (edited)

Thank you so much for your kind and thoughtful feedback! It really means a lot, especially coming from someone with your experience in both ProcessWire and professional e-commerce.

The main reason I started developing this shop system was exactly because I felt there was a gap in the ProcessWire ecosystem. I also spent some time looking at PWCommerce, but as you said, the documentation made it very difficult to work with. I also ran into issues with commercial rounding quite early on, and even after quite a bit of tinkering I couldn't really get it to a point where I'd feel comfortable using it for the German market.

You're absolutely right about the long term challenge. Building the shop is one thing, but keeping it up to date with changing legal requirements, security updates and everything else that comes with e commerce is probably the biggest task. That's definitely something I'm aware of, and I'll do my best to keep the project actively maintained.

Development is still moving forward. I actually added customer accounts to the demo shop just a few minutes ago, so it's slowly growing feature by feature.

Thanks again for taking the time to write such detailed feedback. Comments like yours are really motivating and reassure me that building this for the ProcessWire community was the right decision.

Edited by eutervogel
  • Like 1
Posted

Hi @eutervogel!

I just wanted to tell you that I spent quite some time in the demo shop, testing everything out, and I am pretty impressed with the work you've done!

Of course I lack the experience of Stefanowitsch in this matter, but I ckecked out all the other shop solutions for PW and all of them are not suited for EU use. 

This is something I could work with and/or suggest to a client. In the past I had to refuse all requests for a shop...

If you are short of testers? I am more than willing to help!

Bernd

  • Like 1
Posted

A small update on PWGermanShop:

I've just finished adding support for digital products and license management.

Current features include:

  • Selling physical and digital products together
  • Automatic license key generation after successful payment
  • License key delivery by email
  • Customer license overview in the frontend ("My Account")
  • Device activation tracking with configurable activation limits
  • License validation API for your applications
  • Backend tools for managing and revoking licenses

I've also added a demo product so you can try the complete workflow yourself:

https://demoshop.mholte.de/shop/focusframe-timer/

After completing a purchase, you'll receive a license key that actually unlocks the demo application, so it's not just a mock-up.

Documentation for the licensing module:

https://mholte.de/docs/PWGermanShop/#/betreiber/lizenzen?id=lizenzschlüssel-germanshoplicenses

Please note:

  • There is currently a bug when using the "Auf Rechnung" payment method. The license generation and email delivery are not triggered, so for testing please use another payment method (for example "Vorkasse" and click "Zahlung erhalten" in the orders overview, that will trigger the flow).
  • Once you've finished testing, please delete your order. Otherwise, your order details, including your email address, may remain visible in the demo shop's backend until the next automatic reset (up to about 6 hours).

I'd really appreciate any feedback, especially if you're planning to sell software, plugins, digital downloads, or other licensed products with PWGermanShop.

  • Thanks 1
Posted

Great stuff. Just two questions before I get around to testing

Can we configure the license key format or is it random?

Are subsequent licenses aware of the previous keys to avoid collision 

Posted
Quote

Can we configure the license key format, or is it random?

Both — the payload is random, the prefix is configurable, and the overall structure is fixed:

Format: PREFIX-XXXX-XXXX-XXXX-XXXX — a prefix plus a 16-character payload in dash-separated groups of four.

Prefix: configurable per product via the gs_license_key_prefix field (2–16 uppercase letters/digits, no dashes). If left empty it falls back to the module default PGSHOP.

Payload: 16 characters drawn from random_bytes() over a confusion-resistant alphabet (ABCDEFGHJKMNPQRSTVWXYZ2345 — no 0/O/I/1/L/U, so hand-typed keys don't get misread), with rejection sampling to avoid modulo bias. That's ~75 bits of entropy.

The block layout, separator and alphabet are fixed in code, only the prefix is a per-product knob. If you need a genuinely different scheme, the generator sits behind a LicenseKeyGenerator interface (RandomBytesLicenseKeyGenerator is the default impl) — you can drop in your own without touching the issuance logic.

Quote

Are subsequent licenses aware of previous keys to avoid collisions?

Yes, guaranteed at the database level, not by in-memory bookkeeping:

gs_license_keys.license_key carries a UNIQUE index.

Issuance inserts the key; if MySQL returns a duplicate-entry error, the service generates a fresh key and retries up to 5 times (LicenseIssuanceService::persistNewKey).

This is deliberately a race-safe atomic insert + retry, not a check-then-insert (which would have a TOCTOU gap). At ~75 bits of entropy a real collision is astronomically unlikely, but the guard is there and correct even under concurrent checkouts.

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...