
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
django-omise
Advanced tools
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
Collect payments with Rabbit LINE Pay
Webhook handler, saving raw data as an Event object and update related objects, currently supporting
3DS pending charges handling
See the roadmap for the plan of this project. Contributions are welcome!
INSTALLED_APPS = [
...
"django_omise",
]
path("payments/", include("django_omise.urls")),
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
"rabbit_linepay", # Rabbit LINE Pay
]
Run python manage.py migrate
to create the Omise models.
Add Omise endpoint webhook url https://www.your-own-domain.com/payments/webhook/
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
Create a charge schedule for a customer:
At the moment, you can create a new schedule for a customer manually by calling the method create_schedule from a Custoemr object. See below for an example:
import datetime
from django_omise.models.choices import Currency
from django_omise.models.core import Customer
customer = Customer.objects.first()
card = customer.default_card
customer.create_schedule(
amount=100000,
currency=Currency.THB,
card=card,
every=1,
period="month",
start_date=datetime.date(year=2022, month=5, day=22),
end_date=datetime.date(year=2032, month=5, day=22),
on={
'days_of_month': [22],
},
description="Monthly subscription",
)
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
Others
You can run tests with either coverage or pytest.
To run with pytest
pip install pytest-django
python -m pytest [path_to_file] [--verbose -s --cov-report=html --cov=.]
To run with coverage
pip install coverage
coverage run run_tests.py
coverage report
coverage html
FAQs
Django models for Omise
We found that django-omise demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.