#3 works insofar as it allows the order to continue in a pending state. It does paint the order into a corner as there's no native way to manually change the payment state to "paid." It sets the payment status as "authorized" in the order. Attempting to "capture" the funds throws an error. This does make a case for either webhooks, as you described, or another way to just let the user set the status to "paid."
ixlr8 β created an issue.
You need to go one directory up from the doc root of Drupal. So let's say you have drupal installed in a folder in your doc root, say /var/username/web/drupal, you'd also want to create a /var/username/web/private folder. Either Apache or Nginx would be pointed to web/drupal for it's docroot, and you're outside of that. It's a security measure so those files aren't publicly available.
I was determined to just say F it, and maintain my site on Drupal 7/ ubercart because I was so pissed off about this. However, I've gotten to the point where upgrading is becoming an inevitability. I run my site, along with several others on an Aegir, and there's a very fine line I have to walk with very specific PHP/ drush/ composer versions in order to get Drupal 7, 9 and 10 to work. It took a bunch of alterations to Aegir 3 (D7 based) to get D9 and D10 to work. Drupal 11 was simply out of the question. When Aegir 5 eventually comes out, which will be based on Drupal 11, all support for Drupal 7 will be lost, as the difference in php version requirements is too vast and they're just not compatible. So I'm being forced to upgrade.
Rather than trying to import my products, which I feel will be a logistical nightmare, I'm just going to have to bite the bullet and manually recreate them, then hopefully import my customer accounts and previous orders. I've been toying with Commerce 3, and the variation creating process seems to be a bit simpler where they can be added in line. I'm still not happy about it, but the process doesn't fill me with rage like it did a year ago. The conditional attributes seems to just work themselves out as it won't show attributes that don't have a variation associated with it. You basically just don't have to deal with that. You just create all your variations and the choices you're allowed to pick seem to automatically adjust around your selections, which, granted, is nice.
That said, it's still a ton of extra work to create any products, and it does leave a huge margin for human error. It's real easy to miss a variation when you're trying to go through every iteration of possible product. If this was just one or two variations, this wouldn't be a big deal, but for complex variations it becomes exponentially more complicated.
I'm also running into issues with theming the products, as product photos are associated with the variation, and not the product type or individual product, so when it renders the attributes, that's where the photo goes, and you can't easily disassociate it from how the variation is rendered and place it arbitrarily when you theme the product. Maybe that's because I'm using Commerce 3 and there's just something buggy about it, but I feel like I should have more granular control over the fields of both product type and variation, in the same form.
How have you fared thus far since we last spoke?
I've figured out the issue with why this theme doesn't add classes to anything inside the content area. Apparently, the files to theme fields, and also the associated CSS files just don't exist in the theme. How has nobody noticed this? It's a pretty glaring mistake that there's no default theme files for fields.
I ended up copying a couple of theme and files from one of the default themes, and added them into the theme.
Yeah, but some of my products have like 36 variations. It's ridiculous to have to sit there for half an hour for one product going through every possible combination and it leaves open a huge margin for human error.
Name one thing Commerce can do that Ubercart couldn't in regards to variations and attributes.
To do the calculations, or to "add another" to the entire row? The add another to the row is kind of the more important part.