Payment Gateway Microservice in Golang
EU SCA law will be on duty after 14th September 2019
- 13/08/2019 - For UK cards the SCA implementation deadline is March 2021
- SCA ready with Stripe Payment Intents
- Off-session intents
- Separation of auth and capture
- New intent
- Confirm intent
- Capture/Delete intent
- No database infrastructure needed
- Stripe API keys configuration per currency
cp config.json.dist config.json
vi config.json # Add your config values
# API doc
swag init
# Enable pre-commit hooks (Git 2.54+ config-based hooks; no copy into .git/hooks)
git config --local include.path ../.github/hooks/gitconfig
# Verify registration (list only; does not execute hooks):
git hook list --show-scope pre-commit
# Run the configured pre-commit commands to confirm they work:
git hook run pre-commit
go run main.go -config=config.jsonExample of a checkout web page
- User to insert card information with Stripe Elements
- Create an intent with JS SDK
- Confirm the intent
- Does the intent requires 3D Secure (intent status and next_action param)
- No, Point 5)
- Yes, Stripe Elements will open the a 3D Secure popup
- Do you after checkout domain logic
- Any error during your checkout process?
- Yes, cancel the intent
- No, capture the intent
All Stripe calls go through a per-currency client built by
appconfig.GetStripeClientByCurrency (the stripe-go stripe.Client API), so
the secret key is bound to the client instead of shared global state. The
deprecated global key (stripe.Key) and the legacy resource packages
(stripe-go/v82/paymentintent, stripe-go/v82/customer) must not be used:
the pre-commit hook and CI reject them.
go test ./... -failfast -tags=unit
go test ./... -failfast -tags=stripe -config=ABS_PATH/config.json- Swagger /swagger/index.html