Skip to content

Latest commit

 

History

History
358 lines (235 loc) · 17.2 KB

File metadata and controls

358 lines (235 loc) · 17.2 KB

Changelog

Starting with v3, all notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

  • Mollie\Api\Contracts\ResourceOrigin marker interface describing where a hydrated resource came from. Http\Response now implements it.
  • BaseResource::getOrigin() / setOrigin() accessors on every hydrated resource and collection. HTTP-hydrated resources set origin to the Response automatically; no migration needed for existing user code.
  • Mollie\Api\Webhooks\WebhookSnapshotOrigin exposes the event id, signature, and received-at timestamp of the webhook that produced a hydrated resource. Accessible via $resource->getOrigin().
  • Mollie\Api\Webhooks\SnapshotHydrator feeds a webhook snapshot through the main ResourceHydrator after a one-line json_decode(json_encode()) normalization so nested values arrive as stdClass (matching the HTTP path byte-for-byte).
  • BaseEvent::asResource(Connector) hydrates the embedded entity into a fully-typed SDK resource and automatically threads the rich origin (event id, signature, received-at).
  • WebhookEventMapper::processPayload() gains an optional ?string $signature parameter that is threaded through to the resulting event and carried onto hydrated resources via WebhookSnapshotOrigin.
  • ResourceCollection::withOrigin() factory as the origin-aware sibling of withResponse().

Changed

  • BC-implied: IsResponseAware::getResponse() return type narrowed from Response to ?Response. HTTP-hydrated resources continue to return a non-null Response, matching pre-refactor behavior. Webhook-hydrated resources return null. User code that chains $resource->getResponse()->successful() or similar without a null check will NPE on webhook-origin resources — audit your webhook handlers before upgrading. HTTP-only consumers see no change.
  • BC-implied: HasResponse::getPendingRequest() return type narrowed from PendingRequest to ?PendingRequest. Same rationale.
  • WebhookEntity::asResource() gains an optional ?WebhookSnapshotOrigin second parameter. Callers using the single-arg form ($event->entity()->asResource($mollie)) continue to work and receive a fallback origin with null signature. Mapper-driven flow ($event->asResource($mollie)) passes the rich origin automatically.
  • Hydrating a webhook payload no longer requires a valid API key on the connector. Signed snapshots are self-sufficient, so a signing-secret-only webhook worker can read the snapshot without any key. Follow-up calls ($payment->refunds(), $subscription->payments(), etc.) still require an authenticator — they fire real HTTP requests.
  • Follow-up methods on hydrated resources (Payment::refunds/captures/chargebacks, Profile::chargebacks/methods/payments/refunds, Subscription::payments) now fall back to their endpoint collection when the embedded webhook snapshot does not carry the corresponding _links.{name}.href. Previously these methods returned an empty collection in that case, which was a silent behavioural difference between HTTP-origin and webhook-origin resources. With this change the SDK routes through the connector using the resource's id (same pattern PaymentLink::payments() already used), so you get a live child collection on both origins. Relative _links.{name}.href values in webhook payloads are resolved against the client's base URL via Url::join, no special handling required on the caller's side.

For contributors

  • WebhookEventMapper::createWebhookEntityFromPayload() switched from array_pop($_embedded) to key-agnostic iteration that picks the first candidate carrying id and resource fields. Mollie keys the embedded entity under _embedded.entity; the new iteration resolves that correctly and is resilient to any future schema tweak (additional _embedded sub-blocks, renamed key) without silently breaking webhook handling.

Removed

  • WebhookEntity::buildSyntheticResponse() and its dependencies on PendingRequest, DynamicGetRequest, Nyholm\Psr7\Request, and Nyholm\Psr7\Response. Webhook hydration goes through SnapshotHydrator.
  • protected Response $response property on the HasResponse trait. Storage is now ?ResourceOrigin $origin; the getResponse() accessor narrows back to ?Response for callers. Third-party subclasses that read $this->response directly must migrate to $this->getResponse() or $this->getOrigin().

Fixed

  • docs/webhooks.md previously stated that $event->entity() returns null for simple payloads. It actually throws. Updated to correctly describe reading the nullable $event->entity property or fetching the resource via $event->entityId.

v3.13.2 - 2026-08-24

What's Changed

  • Update signature-verification.md by @fjbender in #902
  • Do not drop request fields whose value is 0, "0" or 0.0 by @winklemad in #907

New Contributors

  • @winklemad made their first contribution in #907

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.13.1...v3.13.2

v3.9.0 - 2026-02-09

What's Changed

  • Fix: Don't call deprecated setAccessible() by @derrabus in #852
  • Fix documented Capability::$requirements structure by @derrabus in #853
  • feat(auth): add setToken helper for api keys by @Naoray in #859
  • Chore/enhance sdk with docs and convenience methods by @Naoray in #855
  • Fix/wrong payment details attribute by @Naoray in #854
  • Remove incorrect null return type from ClientLink::getRedirectUrl() by @Naoray in #865
  • Remove incorrect null return type from ClientLink::getRedirectUrl() by @NormanAlbert91 in #862

New Contributors

  • @derrabus made their first contribution in #852
  • @NormanAlbert91 made their first contribution in #862

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.8.0...v3.9.0

v3.8.0 - 2026-01-06

What's Changed

  • feat: add metadata to connect balance transfer by @Naoray in #848
  • Fix cURL deprecation notice for PHP 8.5 and higher by @RobinvanderVliet in #847
  • fix: make TransferParty data accessible for debugging by @Naoray in #849
  • Sandervanhooft fix/inclusion qr mismatch by @Naoray in #851

New Contributors

  • @RobinvanderVliet made their first contribution in #847

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.7.0...v3.8.0

v3.7.0 - 2025-12-01

What's Changed

  • Add GOOGLEPAY and SWISH payment methods by @samdejongobc in #844
  • Add fromArray to Money by @Naoray in #846

New Contributors

  • @samdejongobc made their first contribution in #844

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.6.0...v3.7.0

v3.6.0 - 2025-11-05

What's Changed

  • Feat/add balance transfer webhook events by @sandervanhooft in #842
  • Fixed webhook docs typo and explained next-gen webhook focus by @sandervanhooft in #841

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.5.0...v3.6.0

v3.5.0 - 2025-10-28

Added

  • Feat/add retry logic by @Naoray in #826
  • Feat/add fake retain requests option by @Naoray in #830
  • feat: add isEInvoice param and add support for testmode in all sales-… by @Naoray in #832
  • feat: add customerId and mandateId to create sales invoice request by @Naoray in #834
  • Feat/add balance transfer endpoint by @Naoray in #831
  • Feat/add webhook mapping and events by @Naoray in #829
    • global Config that serves as a lookup map to easily map resources to their respective collection keys
    • MockEvent to easily test event handling
    • Str utility class
    • classBasename to Utility
    • WebhookEntity to serve as Container for Resource data received through webhooks (-> can be transformed into BaseResource)
    • Webhook Events that are instanced via the WebhookEventMapper

Changed

  • Feat/make sequence mock responses consume callables by @Naoray in #833

Fixed

  • Change include to embed just like in GetPaginatedChargebacksRequest.php #837 by @Naoray in #838
  • Allow description on CreatePaymentRefundRequest to be empty by @Naoray in #839

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.4.0...v3.5.0

v3.4.0 - 2025-08-13

What's Changed

  • Feat/add new payment route endpoints by @Naoray in #825

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.3...v3.4.0

v3.3.3 - 2025-08-12

What's Changed

  • Fix/823 inconsistencies on payment link request by @Naoray in #824

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.2...v3.3.3

v3.3.2 - 2025-07-25

What's Changed

  • Fix/819 signature date invalid by @Naoray in #820

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.1...v3.3.2

v3.3.1 - 2025-07-25

What's Changed

  • fix: signature validator handling null signatures by @Naoray in #822

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.0...v3.3.1

v3.3.0 - 2025-07-25

What's Changed

  • Feat/expose webhook signature header by @Naoray in #821
  • Feat/expose webhook signature creation by @Naoray

v3.2.0 - 2025-07-23

What's Changed

  • Feat/add create webhook endpoint by @Naoray in #812
  • Feat/webhook signature verification by @Naoray in #813

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.5...v3.2.0

v3.1.5 - 2025-07-10

What's Changed

  • Fix: allow array of payment methods when creating a payment by @jockri in #811
  • Sandervanhooft fix/recipe classes by @Naoray in #815
  • Fix class references on recipes by @sandervanhooft in #814
  • Fix payment links expiresAt by @sandervanhooft in #817
  • Change "include" into "embed" on GetPaginatedChargebacksRequest by @sandervanhooft in #818

New Contributors

  • @jockri made their first contribution in #811

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.4...v3.1.5

v3.1.4 - 2025-06-11

What's Changed

  • Fix 400 Bad Request on DELETE when store array is empty by @cswiers in #810

New Contributors

  • @cswiers made their first contribution in #810

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.3...v3.1.4

v3.1.3 - 2025-06-11

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.3...v3.1.3

v3.1.2 - 2025-06-10

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.1...v3.1.2

v3.1.1 - 2025-06-10

What's Changed

  • Fix/include resources by @Naoray in #808

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.0...v3.1.1

v3.1.0 - 2025-06-05

What's Changed

  • Main by @Naoray in #804
  • feat: add status reason to payment resource by @Naoray in #806

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.6...v3.1.0

v3.0.6 - 2025-06-02

What's Changed

  • Amend capturable recipe by @fjbender in #796
  • fix: exchange wrong request name by @Naoray in #797
  • Removes nullability from delete() method, as it cannot return null by @Sjustein in #802
  • fix: use payload instead of query params for testmode by @Naoray in #803

New Contributors

  • @Sjustein made their first contribution in #802

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.5...v3.0.6

v1.0.0-test - 2025-06-02

What's Changed

  • Amend capturable recipe by @fjbender in #796
  • fix: exchange wrong request name by @Naoray in #797
  • Removes nullability from delete() method, as it cannot return null by @Sjustein in #802
  • fix: use payload instead of query params for testmode by @Naoray in #803

New Contributors

  • @Sjustein made their first contribution in #802

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.5...v1.0.0-test

v3.0.5 - 2025-04-27

What's Changed

  • Fix/791 data types may mess up property order by @Naoray in #794

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.4...v3.0.5

v3.0.4 - 2025-04-25

What's Changed

  • Chore/allow psr message v1 by @Naoray in #793
  • Fix/789 remove overhault to resource calls by @Naoray in #792

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.3...v3.0.4

v3.0.3 - 2025-04-23

What's Changed

  • Fixed docs links by @sandervanhooft in #787
  • Feat/small improvements by @Naoray in #788
    • make MockResponse serializable
    • add changed $metadata handling to upgrade guide

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.2...v3.0.3

v3.0.2 - 2025-04-17

What's Changed

  • handle nullable 422 exception field by @sandervanhooft in #786

Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.1...v3.0.2