Skip to main content

PayPal payment integration for Salesman.

Project description

Salesman PayPal

PyPI Test PyPI - Python Version PyPI - Django Version Code style: black

PayPal payment integration for Salesman.

Installation

Install the package using pip:

pip install django-salesman-paypal

Add to your setting file:

INSTALLED_APPS = ['salesman_paypal']
SALESMAN_PAYMENT_METHODS = ['salesman_paypal.payment.PayPalPayment']
SALESMAN_PAYPAL_CLIENT_ID = '<paypal-client-id>'
SALESMAN_PAYPAL_CLIENT_SECRET = '<paypal-client-secret>'
SALESMAN_PAYPAL_SANDBOX_MODE = True  # Disable in production

Usage guide

To use this payment on your website, checkout the official PayPal server integration guide.

See example directory in this repository for integration example using JavaScript.

Additional settings

Optional additional settings that you can override:

# Payment method label used when displayed in the basket.
SALESMAN_PAYPAL_PAYMENT_LABEL = 'Pay with PayPal'

# Default PayPal currency used for payments (https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies/)
SALESMAN_PAYPAL_DEFAULT_CURRENCY = 'USD'

# URL to redirect to when PayPal payment is approved.
SALESMAN_PAYPAL_RETURN_URL = '/paypal/return/'

# URL to redirect to when PayPal payment is cancelled.
SALESMAN_PAYPAL_CANCEL_URL = '/paypal/cancel/'

# Default paid status for fullfiled orders.
SALESMAN_PAYPAL_PAID_STATUS = 'PROCESSING'

Advanced usage

To gain more control feel free to extend the PayPalPayment class with your custom functionality:

# shop/payment.py
from salesman_paypal.payment import PayPalPayment
from salesman_paypal.conf import app_settings

class MyPayPalPayment(StripePayment):
    def get_paypal_payer_data(self, obj, request):
        # https://developer.paypal.com/api/orders/v2/#definition-payer
        data = super().get_paypal_payer_data(obj, request)
        if obj.user and obj.user.birth_date:
            data['birth_date'] = obj.user.birth_date.strftime('%Y-%m-%d')
        return data

    def get_currency(self, request):
        currency = request.GET.get('currency', None)
        # Check currency is valid for PayPal...
        return currency or app_settings.SALESMAN_PAYPAL_DEFAULT_CURRENCY

Make sure to use your payment method in settings.py:

SALESMAN_PAYMENT_METHODS = ['shop.payment.MyPayPalPayment']

The PayPalPayment class is setup with extending in mind, feel free to explore other methods.

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

django-salesman-paypal-0.1.6.tar.gz (8.1 kB view hashes)

Uploaded Source

Built Distribution

django_salesman_paypal-0.1.6-py3-none-any.whl (9.2 kB view hashes)

Uploaded Python 3

Supported by

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