Paypal Integration

by wshobson46891e7e60daNo licenseListed Oct 8, 2026Updated Oct 8, 2026

Integrate PayPal payment processing with support for express checkout, subscriptions, and refund management. Use when implementing PayPal payments, processing online transactions, or building e-commerce checkout flows.

AI-generated overview

Guides developers through integrating PayPal payments, including express checkout, subscriptions, IPN webhooks, and refunds.

What it does
This skill provides guidance and code examples for integrating PayPal into applications. It covers PayPal Checkout, Subscriptions, and Payouts, client-side JavaScript SDK buttons and server-side REST API flows, IPN notification handling, and refund and dispute workflows. It also includes testing guidance using sandbox credentials and test accounts.
When to use it
Use it when adding PayPal as a payment option, building express checkout flows, setting up recurring billing or subscriptions, processing refunds and disputes, or handling PayPal IPN webhooks. It is also relevant for international payment support and marketplace payouts.
Requirements
Requires PayPal API credentials (client ID and secret) and network access to PayPal services. Examples reference the paypalrestsdk Python package and the PayPal JavaScript SDK. The skill ships no scripts; it is instructions only, with additional patterns in references/details.md.

PayPal Integration

Master PayPal payment integration including Express Checkout, IPN handling, recurring billing, and refund workflows.

When to Use This Skill

  • Integrating PayPal as a payment option
  • Implementing express checkout flows
  • Setting up recurring billing with PayPal
  • Processing refunds and payment disputes
  • Handling PayPal webhooks (IPN)
  • Supporting international payments
  • Implementing PayPal subscriptions

Core Concepts

1. Payment Products

PayPal Checkout

  • One-time payments
  • Express checkout experience
  • Guest and PayPal account payments

PayPal Subscriptions

  • Recurring billing
  • Subscription plans
  • Automatic renewals

PayPal Payouts

  • Send money to multiple recipients
  • Marketplace and platform payments

2. Integration Methods

Client-Side (JavaScript SDK)

  • Smart Payment Buttons
  • Hosted payment flow
  • Minimal backend code

Server-Side (REST API)

  • Full control over payment flow
  • Custom checkout UI
  • Advanced features

3. IPN (Instant Payment Notification)

  • Webhook-like payment notifications
  • Asynchronous payment updates
  • Verification required

Quick Start

javascript
// Frontend - PayPal Smart Buttons<div id="paypal-button-container"></div>
<script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID&currency=USD"></script><script>  paypal.Buttons({    createOrder: function(data, actions) {      return actions.order.create({        purchase_units: [{          amount: {            value: '25.00'          }        }]      });    },    onApprove: function(data, actions) {      return actions.order.capture().then(function(details) {        // Payment successful        console.log('Transaction completed by ' + details.payer.name.given_name);
        // Send to backend for verification        fetch('/api/paypal/capture', {          method: 'POST',          headers: {'Content-Type': 'application/json'},          body: JSON.stringify({orderID: data.orderID})        });      });    }  }).render('#paypal-button-container');</script>
python
# Backend - Verify and capture orderfrom paypalrestsdk import Paymentimport paypalrestsdk
paypalrestsdk.configure({    "mode": "sandbox",  # or "live"    "client_id": "YOUR_CLIENT_ID",    "client_secret": "YOUR_CLIENT_SECRET"})
def capture_paypal_order(order_id):    """Capture a PayPal order."""    payment = Payment.find(order_id)
    if payment.execute({"payer_id": payment.payer.payer_info.payer_id}):        # Payment successful        return {            'status': 'success',            'transaction_id': payment.id,            'amount': payment.transactions[0].amount.total        }    else:        # Payment failed        return {            'status': 'failed',            'error': payment.error        }

Detailed patterns and worked examples

Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.

Testing

python
# Use sandbox credentialsSANDBOX_CLIENT_ID = "..."SANDBOX_SECRET = "..."
# Test accounts# Create test buyer and seller accounts at developer.paypal.com
def test_payment_flow():    """Test complete payment flow."""    client = PayPalClient(SANDBOX_CLIENT_ID, SANDBOX_SECRET, mode='sandbox')
    # Create order    order = client.create_order(10.00)    assert 'id' in order
    # Get approval URL    approval_url = next((link['href'] for link in order['links'] if link['rel'] == 'approve'), None)    assert approval_url is not None
    # After approval (manual step with test account)    # Capture order    # captured = client.capture_order(order['id'])    # assert captured['status'] == 'COMPLETED'

Source and attribution

Source:wshobson/agentsinplugins/payment-processing/skills/paypal-integrationat commit46891e7

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal