Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## 1.x #20 +/- ##
=========================================
Coverage 99.03% 99.03%
Complexity 192 192
=========================================
Files 26 26
Lines 517 517
=========================================
Hits 512 512
Misses 5 5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
15 tasks
loevgaard
force-pushed
the
dx/docs
branch
2 times, most recently
from
August 17, 2026 10:59
82dfb13 to
253e902
Compare
…ack best practices, recipes; docblock polish
- Installation: what php-http/discovery's Composer plugin does (auto-installs
a PSR-18/17 implementation), what to do when it's disabled, and that a
missing implementation only fails at runtime (NotFoundException).
- Table of contents.
- "Concepts — five things to know about Quickpay": the two keys / no sandbox,
amounts in minor units, a payment as a ledger of operations (states,
accepted, qp_status_code families), async operations, and that the
continue_url redirect is not proof of payment.
- Link flow: the continue_url warning as a call-out (promoted from the e2e
README).
- "Handling callbacks robustly": body = whole payment, retries (24×) →
idempotency on operation ids, respond fast, per-payment ordering, 403/400
semantics, accountId/body — sourced from Quickpay's callback docs.
- Recipes: "Checkout, end to end" (find-or-create → link → callback →
capture) and "Wiring in Symfony" (services.yaml with env keys + cache).
- Link docblock: createLink() returns only {url}; the full link lives on the
payment. PaymentsEndpoint: the async-202 explanation lives once on the
class, the four operation methods point to it.
Refs #10 (findings 11–14).
…sting your integration' recipe pointing at the PSR-18 seam
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.
Part of #10 (findings 11–14). Docs only (README + two docblocks); no behaviour change.
What
composer requireinto a fresh project showed the old text was misleading: with thephp-http/discoveryplugin allowed, Composer auto-installssymfony/http-client+nyholm/psr7; with it disabled, the install succeeds silently andnew Client()throws php-http'sNotFoundExceptionat runtime. The section now says all of that.state,accepted,balance, theqp_status_codefamilies, linked to Quickpay's errors appendix); async operations; and thecontinue_urlredirect is not proof of payment. State semantics checked against Quickpay's own payments guide (create →initial; authorized via link →accepted: true,state: new) and live data.continueUrlwarning as a call-out (promoted fromexamples/e2e/README.md, where it was hiding).Operation::$id, respond fast, per-payment ordering only, why403/400(not2xx/5xx) on rejects,accountId/body. Sourced from Quickpay's callback docs.services.yamlwith env keys + a Valinor cache).Link:createLink()returns only{url}(verified in the spec:PaymentLinkUrl), the full link lives on the payment;PaymentsEndpoint: the async-202 explanation now lives once on the class and the four operation methods point to it instead of repeating it.