Skip to content

dev-v0.4.20 - #91

Merged
roncodes merged 15 commits into
mainfrom
dev-v0.4.20
Aug 31, 2026
Merged

dev-v0.4.20#91
roncodes merged 15 commits into
mainfrom
dev-v0.4.20

Conversation

@roncodes

Copy link
Copy Markdown
Member

Release branch for v0.4.20.

@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (b4d9f4b) to head (863944b).

Additional details and impacted files
@@             Coverage Diff             @@
##                main       #91   +/-   ##
===========================================
  Coverage     100.00%   100.00%           
- Complexity      1742      1775   +33     
===========================================
  Files            135       135           
  Lines           7699      7785   +86     
===========================================
+ Hits            7699      7785   +86     
Flag Coverage Δ
backend 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Apply review findings from the callback URL fix:

- Single-source the capture callback URL in QPay::callbackUrl(), honoring
  the configurable storefront route prefix instead of hardcoding it in two
  files, and document the constructor default as a last resort that cannot
  carry a checkout id.
- Set the per-checkout callback once via setCallback() instead of threading
  it through optional trailing invoice arguments, so every invoice path on
  the instance uses it and future call sites cannot silently omit it.
- Drop the duplicated callback fallback blocks in createSimpleInvoice and
  createEbarimtInvoice; createQPayInvoice already applies the identical
  fallback for both.
- Remove a stray leading quote from the paymentCancel/paymentRefund
  callback_url literals.
- Cache the QPay access token across requests (keyed by base URI and
  username, until shortly before expiry) instead of re-authenticating on
  every checkout and callback.
- Batch-fetch cart products once for invoice line building and let the
  classification/tax-code helpers accept a preloaded product, removing up
  to two duplicate product queries per cart item.
Bugfix: Patch QPay service callback URL, and ensure callbackUrl is pr…
Covers the Cache::put path in setAuthToken (the one statement the QPay
callback refactor left unexercised): a token response carrying expires_in
is cached, and a second instance with the same credentials reuses it
without re-authenticating. Restores the 100% backend coverage baseline.
Fix concurrent Storefront checkout capture
Fix cash pickup checkout without delivery quote
Authorize Storefront customer profile updates
Verify Stripe payment before Storefront order capture
Restores the 100% backend coverage baseline after the atomic-capture,
customer-authorization, and stripe-verification fixes landed:

- Locked capture re-entry: unknown token rejection and reuse of an
  already-completed order.
- Stripe verification guards: gateway without a configured secret key and
  a blank currency on an otherwise-succeeded payment intent.
- The verified provider details merge: a succeeded intent's id/status
  overwrite client-supplied transactionDetails before multi-store capture.
- Lock-denied capture returning the order the winning request created.
- The real authenticatedCustomerForRequest seam resolving (null) from a
  request without a Customer-Token header.
@roncodes
roncodes merged commit 57c63ef into main Aug 31, 2026
13 of 15 checks passed
@roncodes
roncodes deleted the dev-v0.4.20 branch August 31, 2026 09:31
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