Skip to content

1.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 09:13
· 8 commits to master since this release

πŸš€ UPC 1.0.0

This release adds asynchronous webhook/3DS confirmation, synchronous hosted-fields payment
creation, and completes the 3DS-pending redirect flow β€” the first release with a real end-to-end
payment path, from creation through the bank's 3DS challenge to the final webhook confirmation.

πŸ’₯ Breaking Changes

No CMS plugin has integrated against UPC yet, so these carry no runtime blast radius today.

  • πŸ“¦ Models/ β†’ DataValues/ + Output/ β€” the category is gone; PaymentOutcome/
    OperationData moved to DataValues/ (durable state), Token→TokenOutput,
    AuthorizationRequest→AuthorizationRequestOutput, and the new HostedPaymentResult→
    HostedPaymentOutput moved to Output/ (call-result value objects)
  • ✍️ createHostedPayment() signature β€” replaced its original 11 positional parameters with
    a single validated HostedFieldDto

✨ Highlights

  • πŸ”” Webhook / 3DS confirmation (PRE-3588) β€” WebhookNotificationHelper verifies an inbound
    "Payment Operation" notification's Authorization header (constant-time comparison) and parses
    its body into an OperationData, mapping execCode to a PaymentOutcome via the new
    ExecCodeMapper; throws the new InvalidNotificationException on a missing/invalid signature,
    malformed body, or invalid field
  • πŸ’³ Hosted-fields payment creation (PRE-3587) β€” UnifiedApiHostedPaymentService:: createHostedPayment() creates/confirms a payment from an hfToken against the Unified API,
    distinguishing a direct success from a pending 3DS/SCA redirect; new Dto/ (HostedFieldDto,
    CommonFieldsDto, BrowserDto, CustomerDto) and Validators/ (HostedFieldDtoValidator,
    CommonFieldsDtoValidator) categories back the validated input
  • πŸ” Completing the 3DS-pending redirect (PRE-3551) β€” CommonFieldsDto gains successUrl/
    cancelUrl (nested under a redirect object, the merchant-return URLs after the bank's
    challenge); HostedPaymentOutput gains redirectHtml alongside redirectUrl, decoding the
    Unified API's default Base64-encoded redirect.html self-submitting challenge form
  • 🏬 Marketplace routing β€” submerchantExternalId added as a required CommonFieldsDto field

βœ… Quality

216 tests / 517 assertions, PHPStan level 8, PHP-CS-Fixer, and CI verifying PHP 7.1–8.2
compatibility β€” all clean on this release branch.

πŸ“‹ Requirements

  • PHP β‰₯7.4 to install/develop (build-tooling floor only β€” shipped source runs on PHP 7.1)
  • Runtime dependency: giggsey/libphonenumber-for-php

πŸ”— Full Changelog: 0.1.0...1.0.0