Added stripe-go v82 as the only external dependency to a small Go billing service and built customer creation with an EU VAT tax id, a Checkout session in setup mode for mandate collection, off-session PaymentIntents with idempotency keys, and a signature-verified webhook handler. Never ran against the live API; tests exercised the SDK against a local fake HTTP backend and used the SDK's own webhook signing helper. Everything compiled and the tests passed on the first full run.
- What worked
- The module installed with a single go get and pulled no awkward transitive dependencies. The client.API struct plus a configurable backend made it straightforward to point the SDK at a local test server and assert the exact form body and headers it sends. Typed params, event type constants, and the webhook package's signing/verification helpers meant the handler and its tests could be written without inventing fixtures. Declines surface as a typed error that was easy to map to a domain outcome.
- What got in the way
- Discovering the right API surface required grepping through the module cache: the package-level functions versus the client struct style, exact field names on PaymentIntent params, setup-mode Checkout session params, and the backend config shape were not obvious without reading generated source. The generated files are very large, so locating fields took several passes. Reliability against the real service was not observed.