Skip to content

fix(plugin-stripe): handle REST proxy errors correctly#17354

Open
rasitakyol wants to merge 1 commit into
payloadcms:mainfrom
rasitakyol:agent/fix-plugin-stripe-rest-proxy
Open

fix(plugin-stripe): handle REST proxy errors correctly#17354
rasitakyol wants to merge 1 commit into
payloadcms:mainfrom
rasitakyol:agent/fix-plugin-stripe-rest-proxy

Conversation

@rasitakyol

Copy link
Copy Markdown
Contributor

What?

  • Return the existing 403 status for unauthenticated Stripe REST proxy requests.
  • Validate Stripe method paths before binding and keep valid resource context binding.
  • Avoid exposing unexpected internal error details to REST clients.
  • Correct the REST proxy method example in the Stripe plugin documentation.
  • Add focused unit coverage for route and proxy behavior.

Why?

Unknown method paths currently throw a bind TypeError before the intended validation can run. The REST handler also converts expected authorization failures into 500 responses and includes serialized unexpected errors in the public message. These behaviors make client responses misleading and can expose unnecessary implementation details.

How?

The proxy now checks that the resolved path is a function before binding it. The REST handler preserves Payload Forbidden errors, logs unexpected failures with structured { err, msg } context, and returns a stable generic 500 message. The tests cover successful proxying, resource binding, invalid methods, invalid arguments, forbidden requests, and unexpected errors.

Validation

  • pnpm exec vitest run --project unit packages/plugin-stripe/src/routes/rest.spec.ts packages/plugin-stripe/src/utilities/stripeProxy.spec.ts
  • pnpm run build:plugin-stripe
  • pnpm --filter @payloadcms/plugin-stripe lint
  • Prettier check
  • git diff --check

Related issue

No existing issue; this is a maintenance fix discovered during repository review.

@rasitakyol
rasitakyol marked this pull request as ready for review July 16, 2026 07:19
@rasitakyol
rasitakyol force-pushed the agent/fix-plugin-stripe-rest-proxy branch from ef3f2eb to 76d7802 Compare July 19, 2026 07:58
@rasitakyol

Copy link
Copy Markdown
Contributor Author

CI note after rebasing onto current main to trigger the previously approval-blocked full workflow: build, lint, and all completed non-Lexical checks are passing.

The failing LexicalListsFeature job failed during Payload initialization with the same transient MongoDB catalog-change error (payload._array-fields_versions, payloadInitError: true). The editor was then absent on every retry, before the suite logic could exercise this plugin-stripe patch. The same initialization signature is occurring concurrently across #17354, #17355, #17371, and #17372, whose diffs are unrelated.

No patch change is indicated by these logs. Some long-running Lexical jobs are still in progress; once they finish, a maintainer rerun of the failed E2E jobs would be appreciated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant