PayPal payment provider implementation.
Uses PayPal REST API v2 for:
- Checkout sessions (Orders API)
- Saved payment methods (Vault API)
- Refunds
Configuration
Required settings in database:
billing_paypal_enabled- "true" to enablebilling_paypal_client_id- PayPal Client IDbilling_paypal_client_secret- PayPal Client Secretbilling_paypal_mode- "sandbox" or "live"billing_paypal_webhook_id- Webhook ID for signature verification
PayPal API Flow
- Get OAuth2 access token (cached)
- Create Order with intent: "CAPTURE"
- Redirect user to PayPal approval URL
- User approves payment on PayPal
- PayPal redirects to success_url with token
- Capture payment via webhook or on return
Webhook Events
CHECKOUT.ORDER.APPROVED- User approved the paymentPAYMENT.CAPTURE.COMPLETED- Payment captured successfullyPAYMENT.CAPTURE.DENIED- Payment capture failedPAYMENT.CAPTURE.REFUNDED- Refund completed