Django integration for Flutterwave Rave Card payments and subscriptions
Project description
Django Rave
Project Description
This project provides Django integration for Flutterwave Rave Card payments and subscriptions.
Current functionality:
- Allow users to make payments (once off and subscription)
- Create payment buttons which launch Rave payment modals
- Maintain a transaction history linked to users
Requirements
- Python >= 3.6
- Django >= 2.0
Installation
pip install djangorave
Setup
Add "djangorave"
to your INSTALLED_APPS
Run Django migrations:
manage.py migrate
Add the following to your settings.py
:
RAVE_PRODUCTION_PUBLIC_KEY = "your key"
RAVE_PRODUCTION_SECRET_KEY = "your key"
RAVE_SANDBOX_PUBLIC_KEY = "your key"
RAVE_SANDBOX_SECRET_KEY = "your key"
RAVE_SANDBOX = True
The above config will ensure djangorave
uses your Rave sandbox. Once you are
ready to go live, set RAVE_SANDBOX = False
Add djangorave
to your urls.py
:
path("djangorave/", include("djangorave.urls", namespace="djangorave"))
Add the following url as a webhook in your Rave dashboard. This will be used by
Rave to POST
payment transactions to your site:
http://yoursite.com/djangorave/transaction/
Note:
while in development, a tool like ngrok (or similar) may prove useful.
Usage
djangorave
provides two models, namely:
- The
DRPaymentTypeModel
allows you to createonce off
orrecurring
payment types. When creating arecurring
payment type, ensure thepayment_plan
field corresponds to the RavePlan ID
. - The
DRTransactionModel
creates transactions when Rave POSTS to the above mentioned webhook url. This provides a history of all transactions (once off or recurring), linked to the relevantDRPaymentTypeModel
anduser
.
A payment button can be created as follows:
- Create a new
PaymentType
using the django admin. - In the view where you wish the button to appear, add the above created
PaymentType
to your context, eg:
from djangorave.models import DRPaymentTypeModel
class SignUpView(TemplateView):
"""Sign Up view"""
template_name = "my_payment_template.html"
def get_context_data(self, **kwargs):
"""Add payment type to context data"""
kwargs = super().get_context_data(**kwargs)
kwargs["pro_plan"] = DRPaymentTypeModel.objects.filter(
description="Pro Plan"
).first()
return kwargs
- In your template, add your button wherever you wish for it to appear as follows:
{% include 'djangorave/pay_button.html' with payment_model=pro_plan %}
Note:
You can add multiple buttons to a single template by simply adding multiple
plans to your context data and then including each of them with their own include
tag as above.
- Add the following script to your django base template (or anywhere in your template heirarchy that ensures it is loaded before your payment buttons):
<script src="{% static 'djangorave/js/payment.js' %}"></script>
Button Styling
The following css classes are available for styling your payment buttons:
rave-pay-btn
will apply to all buttons.rave-subscription-btn
will apply to recurring payment types (ie: those with apayment_plan
).rave-onceoff-btn
will apply to once off payment types (ie: those without apayment_plan
).
Transaction Detail Page
Following a user payment, they will be redirected to the transaction detail page
located at /djangorave/<str:reference>/
A default transaction detail template is already available, however if you want
to override it, you may do so by creating a new template in your root
templates directory, ie: /templates/djangorave/transaction.html
You will have access to {{ transaction }}
within that template.
Development
If you wish to contribute to the project, there is an example app that demonstrates general usage.
Running the example:
git clone https://github.com/bdelate/django-rave.git
cd django-rave
make build
make migrate
make import
make dup
There is a section at the bottom of django-rave/example/example/settings.py
. Ensure the values are set accordingly:
RAVE_PRODUCTION_PUBLIC_KEY = "your key"
RAVE_PRODUCTION_SECRET_KEY = "your key"
RAVE_SANDBOX_PUBLIC_KEY = "your key"
RAVE_SANDBOX_SECRET_KEY = "your key"
RAVE_SANDBOX = True
Flutterwave Rave requires payments to be associated with users who have an email address. Therefore, create and login with a new django user or use the existing user already generated following the above import command:
username: testuser
password: secret
Navigate to http://localhost:8000/
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
Built Distribution
File details
Details for the file djangorave-0.1.2.tar.gz
.
File metadata
- Download URL: djangorave-0.1.2.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.3 CPython/3.8.2 Darwin/18.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58ec9198ed45fefcd300b9f0934663cd585639cb622aba612bf0b102f34b4369 |
|
MD5 | 3235356618188572f4b1cd016a8618cf |
|
BLAKE2b-256 | 9b5c355c0789c92179a00a27f59c30a3be3e574ee72a64e05e9c3ea22118f599 |
File details
Details for the file djangorave-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: djangorave-0.1.2-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.3 CPython/3.8.2 Darwin/18.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf33b79d4dc6f5df1c62ed1f19ff0c1790c95642e65cc5744c2b7a5fd2e53d5d |
|
MD5 | 5238a54f5a605547af34c5fe822f8d9a |
|
BLAKE2b-256 | 5eeabc5db157a9ba744f2a9fd2f6c61a29a8132eb1bd2f219bf4f5fbbf62e15a |