Revision history for WWW-PayPal

0.001     2026-04-15 19:41:41Z
    - Initial release
    - WWW::PayPal client with OAuth2 client_credentials token caching
      and sandbox/live switch
    - WWW::PayPal::Role::HTTP: JSON request wrapper with transparent
      bearer-token acquisition and refresh
    - WWW::PayPal::Role::OpenAPI: operationId dispatch against cached
      operation tables (pre-computed; no runtime spec parsing)
    - WWW::PayPal::API::Orders (Checkout / Orders v2):
        orders.create, orders.get, orders.patch, orders.confirm,
        orders.authorize, orders.capture
    - WWW::PayPal::API::Payments (Payments v2):
        captures.get, captures.refund, refunds.get,
        authorizations.get, authorizations.capture, authorizations.void
    - WWW::PayPal::Order entity with approve_url, payer_email,
      payer_name, payer_id, capture_id, fee_in_cent, total, currency
      (covers the amigaevent / ExpressCheckout replacement surface)
    - WWW::PayPal::Capture and WWW::PayPal::Refund entities
    - WWW::PayPal::API::Products (Catalogs v1):
        catalogs.products.create, .list, .get, .patch
    - WWW::PayPal::API::Plans (Billing Plans v1):
        billing.plans.create, .list, .get, .patch, .activate, .deactivate
        plus create_monthly(product_id, price, currency, trial_days)
        convenience constructor
    - WWW::PayPal::API::Subscriptions (Billing Subscriptions v1):
        billing.subscriptions.create, .get, .patch, .revise, .suspend,
        .activate, .cancel, .capture, .transactions
    - WWW::PayPal::Product, WWW::PayPal::Plan, WWW::PayPal::Subscription
      entities (subscription exposes approve_url, status, subscriber_email/
      _name, next_billing_time, last_payment_amount, plus suspend/activate/
      cancel lifecycle methods)
    - examples/buy_demo.pl: end-to-end Orders v2 Mojolicious::Lite demo
    - examples/subscribe_demo.pl: end-to-end Subscriptions demo (auto-creates
      product + monthly plan on first run, prints IDs for reuse)
