S Spwig Marketplace
PayPal Checkout
Payment Provider

PayPal Checkout

by Spwig ✓ Verified · v1.3.0
0 installs
Free

Install directly from your Spwig admin → Don't have Spwig yet?

Screenshots

About this component

Accept payments globally with PayPal. Supports PayPal wallet, credit/debit cards, Venmo, Pay Later, and 25+ currencies across 200+ markets.

Versions

v1.3.0
2026-08-02

- Subscriptions: added provider-agnostic reusable-payment-method setup. Declares the reusable_setup capability and implements begin_setup(), which creates a PayPal Vault v3 setup token so the storefront can save a reusable PayPal method WITHOUT charging.
- Checkout handler: added an initializeSetup(bundle, container, onToken, onError) entry that renders the PayPal Vault buttons (createVaultSetupToken / onApprove) and returns the approved setup token, which the generic finalize step exchanges for a permanent vault payment token.

v1.2.0
2026-08-01

- SECURITY: authorize() no longer returns the PayPal order id as if it were an authorization id. An intent=AUTHORIZE order is now authorized (POST /v2/checkout/orders/{id}/authorize) once approved, and the real authorization id is used for capture/void; capture()/void() resolve an approved-order id to the authorization id automatically.
- SECURITY: Subscription one-time charge treats only COMPLETED as success (APPROVED is not captured), preventing revenue being recorded for uncaptured orders; the subscription webhook verifier now fails CLOSED when webhook_id is missing and enforces transmission-time freshness.
- SECURITY: Idempotency keys (PayPal-Request-Id) on order/checkout/subscription creation, capture and refund are derived from an explicit per-attempt/request id (never a random UUID or order_id alone), so lost-response retries de-dup while retries with a new card and distinct partial captures/refunds are not collapsed. Refunds require an explicit refund id to be idempotent.
- SECURITY: Webhook verification enforces transmission-time freshness (5-minute window) to defuse replay.
- Refunds no longer default a missing status to COMPLETED; an incomplete response is reported as failed rather than a completed refund with a null id.
- Zero-decimal currency amounts (JPY/HUF/TWD/KRW) are rounded (ROUND_HALF_UP), not truncated, fixing ~1-unit undercharges.
- Subscription cancellation reports cancel_at_period_end=False because PayPal's cancel endpoint always cancels immediately.
- cancel_payment_intent() reports the operation as unsupported instead of falsely reporting a still-active/capturable order as cancelled.

v1.1.3
2026-03-31

- Added **kwargs to create_payment_intent_for_checkout for forward-compatible parameter passing from orchestration service

v1.1.2
2026-03-10

- Fixed webhook URL in setup instructions (was /payment-providers/webhook/{slug}/, corrected to /webhooks/payments/{slug}/)

v1.0.0
2026-02-09

- Initial release with full PayPal Orders API v2 integration
- Support for PayPal wallet, Venmo, and PayPal Credit
- Credit and debit card processing (Visa, Mastercard, Amex, Discover, JCB)
- Buy Now Pay Later with Pay in 4 and Pay Monthly
- Full and partial refund capabilities
- Webhook integration with server-side signature verification
- Multi-currency support across 25+ currencies
- Authorize and capture payment flows

Ready to install PayPal Checkout?

Install from your Spwig admin → Marketplace tab. Don't have a Spwig install yet? The commerce platform is free and open source.

Get Spwig → Browse more