-
Notifications
You must be signed in to change notification settings - Fork 24
Onlineweb apps Payment
Onlinewebs payment system uses Stripes custom checkout system
The main object that contains a generic link to a content object (Event, prokom thingy, etc) This object has 3 types:
- Instant - User have to pay before attending
- Deadline - A deadline is set and users have to pay within the deadline
- Delay - The payment deadline is a custom amount of days after attending.
The link between the payment and a user. Also contains an unique id and the time of purchase.
To allow a payment to have multiple prices, a PaymentPrice object contains a price and a description.
Object used to give users extra time. Given to attending users when using payment mode 3(Delay). Given to users bumped from the wait list if the payment.deadline > 2 days.
The example code is from events and references to AttendanceEvent should be changed with your own object.
The request.session should have a payment id.
This should be done in the view method that loads the template with the payment button.
The payments should be passed with the context.
try:
payment = Payment.objects.get(content_type=ContentType.objects.get_for_model(AttendanceEvent), object_id=event_id)
request.session['payment_id'] = payment.id
except Payment.DoesNotExist:
events/views.py - details
- payment_description()
Return: String
Description: Used as the title for the payment and confirmation mail - payment_mail()
Return: email address
Description: The confirmation mail is sent from this mail. - payment_complete(user)
Return: None
Description: Any logic beyond creating a payment_relation should be done here (ie. creating or updating the attendee object for events)
This is an example of template code that supports multiple payment objects
{% for payment in payments %}
<p class="status-text payment-price-tag">Prisen er på {{ payment.price }} Kr.</p>
<button id="stripeButton{{ payment.id }}" class="btn btn-large btn-success payment-button">Betal med kort</button>
{% endfor %}
<script src="{{ STATIC_URL }}js/libs/jquery-2.1.3.min.js"></script>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script src="{{ STATIC_URL }}js/payment.js"></script>
Note: You might have to change the jquery version to the newest one in the js/libs folder.
Confirmation mail is sent and the payment_relation object is created automatically on successful payment.
TBA
Note! check that the mails sent are correct
- Instant payment
- Payment after attendance
- Multiple payments
- Payment with delay
- Refund and unattended
- Unattend_deadline passed
- Attend without payment
- Untatend without payment
- Waitlist bump (Without payment)
- Waitlist bump (with payment, deadline over 2 days in the future)
- Waitlist bump (with payment, deadline less than 2 days in the future) - Should create paymentdelay object.
- Waitlist bump (with payment type 3(delay)) - Creates paymentDelay object with deadline = (now + payment.delay)
-
Not paid less than 3 days left of deadline.
-
Not paid deadline passed.
-
Not paid - Has payment delay
-
PaymentDelay - Notification sent when valid_to <= 1 day
-
PaymentDelay valid_to passed - Mark given - Unatend if unatend_deadline not passed.
-
PaymentDelay valid_to passed - Mark given - if unatend_deadline passed - Block users from future events. (Will not be done yet)