Django models for Omise
Project description
:warning: The latest pypi package for Omise has a metadata error. Please reinstall omise from this command:
pip uninstall omise
pip install git+https://github.com/omise/omise-python@bfcf283378a823139b9f19f10e84d42a98c5b1ac
django-omise Django + Omise
Django models for Omise. Currently, we support the following features:
- Creating a customer
- Allowing customer to add/delete credit/debit cards
- Collect payments with new card with the option to keep the card
- Collect payments with saved cards
- Collect payments with Internet Banking
- Collect payments with TrueMoney Wallet
- Collect payments with Promptpay
- Webhook handler, saving raw data as an Event object and update related objects, currently supporting
- Customer
- Card
- Charge
- Source
- Refund
- 3DS pending charges handling
See the roadmap for the plan of this project. Contributions are welcome!
Quick start
- Add "django_omise" to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [
...
"django_omise",
]
- Include the django_omise URLconf in your project urls.py like this:
path("payments/", include("django_omise.urls")),
- Add Omise keys and operating mode in settings.py:
OMISE_PUBLIC_KEY = xxxx
OMISE_SECRET_KEY = xxxx
OMISE_LIVE_MODE = True | False
OMISE_CHARGE_RETURN_HOST = localhost:8000
# Optional. The default payment method is credit/debit card only.
# You must specify additional payment methods.
OMISE_PAYMENT_METHODS = [
"card",
"internet_banking", # Internet Banking
"truemoney_wallet", # TrueMoney Wallet
"promptpay", # Promptpay
]
-
Run
python manage.py migrate
to create the Omise models. -
Add Omise endpoint webhook url
https://www.your-own-domain.com/payments/webhook/
Basic usage
-
Create an Omise customer from User:
from django.contrib.auth import get_user_model from django_omise.models.core import Customer User = get_user_model() user = User.objects.first() customer = Customer.get_or_create(user=user)
-
Add card to Customer
2.1 With the built-in view (Recommended)
We have built a basic card collecting view where logged in users can add and remove their cards. Run Django server and visit /payments/payment_methods/ to see it in action. You could override the template used in the view by creating a new template in your project's directory /templates/django_omise/manage_payment_methods.html.
2.2 Manually
from django_omise.models.core import Customer from django_omise.omise import omise omise_token = omise.Token.retrieve(token_id) Customer.objects.live().first().add_card(token=omise_token)
-
Charge a customer (Currently supporting new/saved cards, Internet Banking, TrueMoney Wallet, Promptpay)
3.1 With the build-in mixin
This package comes with a built-in mixin, with which you can create a class-based-view and write a few methods to charge a customer. See below for an example or see Example 1:
from django.contrib.auth.mixins import LoginRequiredMixin from django_omise.mixins import CheckoutMixin from django_omise.models.choices import Currency # Your own class-based-view class CheckoutView(LoginRequiredMixin, CheckoutMixin): template_name = "yourapp/template.html" success_url = ... def get_charge_details(self): return { "amount": 100000, "currency": Currency.THB, } def process_charge_and_form(self, charge, form): if charge.status in [ChargeStatus.SUCCESSFUL, ChargeStatus.PENDING]: # Create new order and attach a charge object # And handle form data handle_form_data(form.cleaned_data)
3.2 Manually
from django_omise.models.choices import Currency, ChargeStatus from django_omise.models.core import Customer customer = Customer.objects.first() card = customer.cards.live().first() charge = customer.charge_with_card( amount=100000, currency=Currency.THB, card=card, ) if charge.status == ChargeStatus.SUCCESSFUL: # Do something elif charge.status == ChargeStatus.FAILED: # Do something else
Roadmap and contributions
Here are our immediate plans for this package, and more will be added! All contributions are welcome. I am new to publishing a public package, so if you have any recommendations, please feel free to create an issue on this repository or feel free to send me an email at siwatjames@gmail.com.
Omise Features
- Handle refunds API
- Handle webhook events and update related objects
- Create charge with Sources
- Internet banking
- TrueMoney Wallet
- Promptpay
- Installment
Others
- Implement tests
- Add documentations
Project details
Release history Release notifications | RSS feed
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
Hashes for django_omise-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e31c30ae8795d0c5589492b5c5f396ff5930cf693a03630c066d3f77e7bf6f6c |
|
MD5 | b195617f3094125658566057b8459b52 |
|
BLAKE2b-256 | d9b8c4d93058713515a5f13436c37b6a0d42ec0aee57940f5a42e2725c740c8a |