I want to build a simple e-commerce website for my hobby. It needs to be very simple, so I want to build it myself...

>What if I want to process my own payments
You would have to use crypto payments. Payment processing is a nightmare to deal with. That's why even mid sized startups end up using stripe to avoid the hassle.

Go is not the right stack for this kind of websites. I would either use Django or asp.net. They allow you to build things fast and you get a codebase that is easily maintainable and extensible. Go's verbosity and lack of packages will get in your way. Between Go and PHP i would choose PHP.

Checkout “Building Modern Applications with Go (Golang)” by Trevor Sawler on Udemy. He even goes over the SIGNIFICANT improvements going from PHP to Go

It's easy to integrate a payment gateway to your Application retards. It's easy to make a SQL database with catalogs, Categorie, products, transaction logs, etc...

What part of building an ecommerce website do you find hard?

>What if I want to process my own payments
It's not that simple my dude. Best you can probably hope for is to hook into a 3rd party merchant (like PayPal). Otherwise you're going to have to get Visa and Mastercard involved, and that's going to be a world of regulatory pain.

making sure you do it right all the time
money is one of those things you really don't want to get wrong

Just integrate Stripe or your regional payment processor to your website.

Bro. A database and integrating stripe is the LEAST of your concerns when making an ecommerce site LMAO

If you really are a software engineer who is used to work on backends there's no reason why you would get it wrong. It's like handling authentication. You're not building a fireship dude. There's a known set of conventions -a few dozen- which you abide by. So Yeah doing Google auth is easier but you could as well do it on your own if you're moderately competent.

Then tell me about the hard parts. Invoice generation? Fault tolerant transaction logging? All this is not hard. You should just be aware of these concerns and record them in your specification prior to writing your codebase.