mollie/mollie-api-php
Mollie API client for PHP: accept iDEAL, Apple Pay, credit card, SEPA, PayPal, Klarna and more with a clean, well-tested library. Create payments, handle refunds, subscriptions, customers, and webhooks through a simple, intuitive API.
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.13.1...v3.13.2
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().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.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.$payment->refunds(), $subscription->payments(), etc.) still
require an authenticator — they fire real HTTP requests.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.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.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().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.Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.7.0...v3.8.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.6.0...v3.7.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.5.0...v3.6.0
MockEvent to easily test event handlingStr utility classclassBasename to UtilityWebhookEntity to serve as Container for Resource data received through webhooks (-> can be transformed into BaseResource)WebhookEventMapperFull Changelog: https://github.com/mollie/mollie-api-php/compare/v3.4.0...v3.5.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.3...v3.4.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.3.0...v3.3.1
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.5...v3.2.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.4...v3.1.5
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.3...v3.1.3
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.1...v3.1.2
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.6...v3.1.0
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.5...v3.0.6
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.4...v3.0.5
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.3...v3.0.4
MockResponse serializable$metadata handling to upgrade guideFull Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.2...v3.0.3
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.1...v3.0.2
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.0...v3.1.1
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.0.5...v1.0.0-test
Full Changelog: https://github.com/mollie/mollie-api-php/compare/v3.1.3...v3.1.4
How can I help you explore Laravel packages today?