Skip to main content

A simplified wrapper for PayPal's Python Server SDK

Project description

README.md

PayPal Easy

A simplified, developer-friendly wrapper around PayPal's Python Server SDK.

Why PayPal Easy?

PayPal's official Python SDK can be challenging to work with due to:

  • Missing or inconsistent class imports
  • Complex parameter structures
  • Inconsistent documentation
  • Verbose API calls

PayPal Easy solves these problems by providing:

  • ✅ Clean, consistent API
  • ✅ Proper error handling
  • ✅ Type hints and IDE support
  • ✅ Simplified method signatures
  • ✅ Django integration helpers

Installation

pip install paypal-easy

Quick Start

from paypal_easy import PayPalEasyClient, Environment, Currency
from decimal import Decimal

# Initialize client
client = PayPalEasyClient(
    client_id="your_client_id",
    client_secret="your_client_secret",
    environment=Environment.SANDBOX
)

# Create an order
result = client.create_order(
    amount=Decimal("29.99"),
    currency=Currency.USD,
    description="Premium subscription",
    return_url="https://yoursite.com/success",
    cancel_url="https://yoursite.com/cancel"
)

if hasattr(result, 'id'):  # Success
    print(f"Order created: {result.id}")
    print(f"Approval URL: {result.approval_url}")
else:  # Error
    print(f"Error: {result.message}")

Django Integration

# views.py
from paypal_easy.django_integration import PayPalEasyDjangoMixin
from django.views import View

class CreatePaymentView(PayPalEasyDjangoMixin, View):
    def post(self, request):
        client = self.get_paypal_client()
        
        result = client.create_order(
            amount=request.POST.get('amount'),
            description="Order payment"
        )
        
        if hasattr(result, 'id'):
            return self.paypal_success_response(result)
        else:
            return self.paypal_error_response(result)

Features

  • Simple Order Creation: Create orders with minimal code
  • Automatic URL Handling: Easy approval flow setup
  • Error Handling: Consistent error responses
  • Django Integration: Ready-to-use Django mixins
  • Type Safety: Full type hints for better IDE support
  • Logging: Built-in logging for debugging

Comparison

Before (Official SDK)

from paypalserversdk.paypal_serversdk_client import PaypalServersdkClient
from paypalserversdk.configuration import Environment
from paypalserversdk.http.auth.o_auth_2 import ClientCredentialsAuthCredentials
from paypalserversdk.models.order_request import OrderRequest

credentials = ClientCredentialsAuthCredentials(
    o_auth_client_id=client_id,
    o_auth_client_secret=client_secret
)

client = PaypalServersdkClient(
    environment=Environment.SANDBOX,
    client_credentials_auth_credentials=credentials
)

order_request = OrderRequest({
    "intent": "CAPTURE",
    "purchase_units": [{
        "amount": {
            "currency_code": "USD", 
            "value": "29.99"
        }
    }]
})

response = client.orders.create_order({'body': order_request})

After (PayPal Easy)

from paypal_easy import PayPalEasyClient, Environment, Currency

client = PayPalEasyClient(client_id, client_secret, Environment.SANDBOX)
result = client.create_order(amount="29.99", currency=Currency.USD)

Contributing

Contributions welcome! Please feel free to submit issues and enhancement requests.

Donations

Would you like to support the work we do?

Click Here to Donate - Donate Link

License

MIT License - see LICENSE file for details.

Maintainers

William Mabotja - Portfolio Site

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paypal_easy-0.1.3.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paypal_easy-0.1.3-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file paypal_easy-0.1.3.tar.gz.

File metadata

  • Download URL: paypal_easy-0.1.3.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for paypal_easy-0.1.3.tar.gz
Algorithm Hash digest
SHA256 3da284819444be8218ae05aa92ccfa88b998e5f34d47f6cd31125e334dbf653e
MD5 4141a9c6f3ad8dd6d8dae405e06ed21d
BLAKE2b-256 1f0d171ed6fbcf4247a27f668841316c0c39096b6aa4233599ecaaa7b81b9a3f

See more details on using hashes here.

File details

Details for the file paypal_easy-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: paypal_easy-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for paypal_easy-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 82da78c237ec02f04bba2eacb67a6ac0df6d0319c8f1224ba21bea408698ec58
MD5 11e5e1ce7a10c04e66890966f425ab23
BLAKE2b-256 d8e0863b563ebaeed739c17ed667bc588467e0db3dc6d6f7a4310c25af2ee32f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page