PAR-772: StoreIntegration Signature Redesign#54
Merged
mescalantea merged 15 commits intomasterfrom Apr 28, 2026
Merged
Conversation
…ationRequest, DeleteStoreIntegrationHttpRequest Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…erface Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ete repository tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…gnature payload to include storeUrl Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nService factory and BaseTestCase Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…C payload and rename test Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n three test files) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tionData entries Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…issing validateWebhookSignature override) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…st payload, defensive URL clone) Use HMAC::validateHMAC in validateWebhookSignature and hoist the storeId+storeUrl payload out of the per-connection loop so multi- deployment webhook validation does one store-info lookup, not N. buildWebhookUrl now returns a fresh URL so callers cannot accumulate storeId/signature queries on a cached integration URL instance. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ion only occurs if connection data exists
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is the goal?
Replace the random webhook signature with a deterministic HMAC-SHA256 derived from the ApiAccount password and store ID. Switch store integration deletion to identify by webhook URL instead of integrationId. This eliminates the need for the `StoreIntegration` database record, repository, and entity entirely — preventing duplicate API entries on disconnect/reconnect cycles.
References
How is it being implemented?
Opportunistic refactorings
Removed the `StoreIntegration` DB layer entirely (model, repository interface, DataAccess implementation, ORM entity, mock, and tests) since it is no longer needed.
Caveats
Does it affect (changes or update) any sensitive data?
No sensitive data affected. API passwords are only used transiently to compute the HMAC and are never stored by this code.
How is it tested?
`StoreIntegrationServiceTest` rewritten with HMAC assertions and no DB interactions. All 754 PHPUnit tests pass. `phpstan` (level 6) and `phpcs` clean.
How is it going to be deployed?
Requires a major version bump. Plugin maintainers must: