So, just when I thought I had this figured out...
I had selected Authorize.NET as our gateway to allow people to charge credit cards. They have a nice .NET library to connect to them and that makes it easier.
But their architecture made some of our objectives harder. For example, I want to use globally unique ID's for transactions customer identifications and so on. Primarily, this allows the user's system to create an identification number without asking our server if it's unique. They just know it is and our server can use whatever they create.
But Authorize.NET only allows 20 characters for that information. And that makes multiple trips to the server much more likely. That or dealing with two different systems generating the exact same id number for two totally different things and then suffering the fallout when it hits the fan.
Oh and their pricing is $12 per month per merchant and $0.10 per transaction. I thought that was manageable, but barely.
Hanley had suggested that maybe we should have a free version and that would definitely be easier if we didn't have to have a billing relationship or sell the monthly cost to prospective users. So I checked into Stripe.
Turns out they are legit.
And much of their architectural decisions match ours, there are .NET libraries, but they aren't supported by the company. It's unfortunate, too, because all of their sample code is in Ruby, Go, Node, Python, PHP. I suppose Microsoft is still the antichrist for some people.
And their pricing is no monthly fee and no onboarding fees, just sign up and start using it. Perfect for a freemium model.