Files
fotospiel-app/docs/process/changes/2025-10-09-paypal-sdk-migration.md
2025-11-20 10:44:29 +01:00

2.2 KiB

Paddle SDK Migration to v1 Server SDK

Summary

Migrated from deprecated paypal/paypal-checkout-sdk to paypal/paypal-server-sdk ^1.0+ in PaddleController.php. The new SDK uses a Builder pattern for requests and dedicated Controllers for API calls, based on OAuth2 Client Credentials.

Changes

  • Composer: Removed paypal/paypal-checkout-sdk; retained/updated paypal/paypal-server-sdk.
  • Imports: Replaced old classes (PaddleHttpClient, OrdersCreateRequest, etc.) with new (PaypalServerSdkClientBuilder, OrderRequestBuilder, OrdersController, etc.).
  • Constructor: Updated to use PaypalServerSdkClientBuilder with ClientCredentialsAuthCredentialsBuilder and Environment (Sandbox/Production based on config/services.php).
  • createOrder: Now uses OrdersController->createOrder with OrderRequestBuilder for intent, purchase units (AmountWithBreakdownBuilder), custom_id, and application_context.
  • captureOrder: Now uses OrdersController->captureOrder; extracts custom_id from response->result->purchaseUnits for DB creation (PackagePurchase/TenantPackage).
  • createSubscription: Now uses SubscriptionsController->createSubscription with SubscriptionRequestBuilder for plan_id, subscriber (NameBuilder), custom_id, and application_context.
  • Tests: Updated tests/Feature/PurchaseTest.php to mock new SDK classes (e.g., OrdersController, SubscriptionsController) and responses; preserved test logic for flows, errors, idempotency.
  • Documentation: Updated docs/prp/08-billing.md to reflect new SDK usage, flow, and migration notes.

Testing

  • Unit/Feature Tests: All Paddle-related tests pass with mocks simulating new API responses (statusCode 201, result structure).
  • Integration: Verified with Sandbox keys; simulated orders/subscriptions create DB entries correctly; error handling intact.
  • No Breaking Changes: Existing webhook logic and completePurchase calls unaffected; custom_id metadata preserved.

Rationale

The old SDK is deprecated and not recommended by Paddle. The new v1 Server SDK aligns with modern standards, improves security (OAuth2), and supports future features. Migration maintains backward compatibility for frontend and DB logic.