mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Order details: Display payment information
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from collections import OrderedDict
|
||||
import json
|
||||
from django.template import Context
|
||||
from django.template.loader import get_template
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
@@ -45,3 +46,14 @@ class BankTransfer(BasePaymentProvider):
|
||||
template = get_template('pretixplugins/banktransfer/pending.html')
|
||||
ctx = Context({'request': request, 'order': order, 'settings': self.settings})
|
||||
return template.render(ctx)
|
||||
|
||||
def order_control_render(self, request, order) -> str:
|
||||
if order.payment_info:
|
||||
payment_info = json.loads(order.payment_info)
|
||||
payment_info['amount'] /= 100
|
||||
else:
|
||||
payment_info = None
|
||||
template = get_template('pretixplugins/banktransfer/control.html')
|
||||
ctx = Context({'request': request, 'event': self.event, 'settings': self.settings,
|
||||
'payment_info': payment_info, 'order': order})
|
||||
return template.render(ctx)
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if payment_info and order.status == "p" %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been paid via bank transfer.
|
||||
{% endblocktrans %}</p>
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Bank account" %}</dt>
|
||||
<dd>{{ payment_info.account }}</dd>
|
||||
<dt>{% trans "Payer name" %}</dt>
|
||||
<dd>{{ payment_info.name }}</dd>
|
||||
<dt>{% trans "Total value" %}</dt>
|
||||
<dd>{{ payment_info.value }}</dd>
|
||||
<dt>{% trans "Payment date" %}</dt>
|
||||
<dd>{{ payment_info.date }}</dd>
|
||||
<dt>{% trans "Reference" %}</dt>
|
||||
<dd>{{ payment_info.reference }}</dd>
|
||||
</dl>
|
||||
{% else %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been planned to be paid via bank transfer, but no payment has been received yet.
|
||||
{% endblocktrans %}</p>
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Reference code" %}</dt>
|
||||
<dd>{{ event.slug|upper }}{{ order.code }}</dd>
|
||||
</dl>
|
||||
{% endif %}
|
||||
@@ -153,7 +153,7 @@ class Paypal(BasePaymentProvider):
|
||||
|
||||
self.init_api()
|
||||
payment = paypalrestsdk.Payment.find(request.session.get('payment_paypal_id'))
|
||||
if str(payment.transactions[0].amount.total) != str(order.total) or payment.transactions[1].amount.currency != \
|
||||
if str(payment.transactions[0].amount.total) != str(order.total) or payment.transactions[0].amount.currency != \
|
||||
self.event.currency:
|
||||
messages.error(request, _('We were unable to process your payment. See below for details on how to '
|
||||
'proceed.'))
|
||||
@@ -169,7 +169,7 @@ class Paypal(BasePaymentProvider):
|
||||
messages.warning(request, _('PayPal has not yet approved the payment. We will inform you as soon as the '
|
||||
'payment completed.'))
|
||||
order = order.clone()
|
||||
order.payment_info = str(payment)
|
||||
order.payment_info = json.dumps(payment.to_dict())
|
||||
order.save()
|
||||
return
|
||||
|
||||
@@ -179,7 +179,7 @@ class Paypal(BasePaymentProvider):
|
||||
logger.error('Invalid state: %s' % str(payment))
|
||||
return
|
||||
|
||||
order.mark_paid('paypal', str(payment))
|
||||
order.mark_paid('paypal', json.dumps(payment.to_dict()))
|
||||
messages.success(request, _('We successfully received your payment. Thank you!'))
|
||||
return None
|
||||
|
||||
@@ -194,3 +194,13 @@ class Paypal(BasePaymentProvider):
|
||||
ctx = Context({'request': request, 'event': self.event, 'settings': self.settings,
|
||||
'retry': retry, 'order': order})
|
||||
return template.render(ctx)
|
||||
|
||||
def order_control_render(self, request, order) -> str:
|
||||
if order.payment_info:
|
||||
payment_info = json.loads(order.payment_info)
|
||||
else:
|
||||
payment_info = None
|
||||
template = get_template('pretixplugins/paypal/control.html')
|
||||
ctx = Context({'request': request, 'event': self.event, 'settings': self.settings,
|
||||
'payment_info': payment_info, 'order': order})
|
||||
return template.render(ctx)
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if payment_info %}
|
||||
{% if order.status == "p" %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been paid via PayPal.
|
||||
{% endblocktrans %}</p>
|
||||
{% else %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been planned to be paid via PayPal, but the payment has not yet been completed.
|
||||
{% endblocktrans %}</p>
|
||||
{% endif %}
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Payment ID" %}</dt>
|
||||
<dd>{{ payment_info.id }}</dd>
|
||||
<dt>{% trans "Payer" %}</dt>
|
||||
<dd>{{ payment_info.payer.payer_info.email }}</dd>
|
||||
<dt>{% trans "Last update" %}</dt>
|
||||
<dd>{{ payment_info.update_time }}</dd>
|
||||
<dt>{% trans "Total value" %}</dt>
|
||||
<dd>{{ payment_info.transactions.0.amount.total }}</dd>
|
||||
<dt>{% trans "Currency" %}</dt>
|
||||
<dd>{{ payment_info.transactions.0.amount.currency }}</dd>
|
||||
</dl>
|
||||
{% else %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been planned to be paid via PayPal, but the payment has not yet been completed.
|
||||
{% endblocktrans %}</p>
|
||||
{% endif %}
|
||||
@@ -1,4 +1,5 @@
|
||||
from collections import OrderedDict
|
||||
import json
|
||||
import logging
|
||||
from django.contrib import messages
|
||||
from django.template import Context
|
||||
@@ -82,3 +83,14 @@ class Stripe(BasePaymentProvider):
|
||||
ctx = Context({'request': request, 'event': self.event, 'settings': self.settings,
|
||||
'order': order})
|
||||
return template.render(ctx)
|
||||
|
||||
def order_control_render(self, request, order) -> str:
|
||||
if order.payment_info:
|
||||
payment_info = json.loads(order.payment_info)
|
||||
payment_info['amount'] /= 100
|
||||
else:
|
||||
payment_info = None
|
||||
template = get_template('pretixplugins/stripe/control.html')
|
||||
ctx = Context({'request': request, 'event': self.event, 'settings': self.settings,
|
||||
'payment_info': payment_info, 'order': order})
|
||||
return template.render(ctx)
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if payment_info %}
|
||||
{% if order.status == "p" %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been paid via Stripe.
|
||||
{% endblocktrans %}</p>
|
||||
{% else %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been planned to be paid via Stripe, but the payment has not yet been completed.
|
||||
{% endblocktrans %}</p>
|
||||
{% endif %}
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Charge ID" %}</dt>
|
||||
<dd>{{ payment_info.id }}</dd>
|
||||
<dt>{% trans "Card type" %}</dt>
|
||||
<dd>{{ payment_info.source.brand }}</dd>
|
||||
<dt>{% trans "Card number" %}</dt>
|
||||
<dd>**** **** **** {{ payment_info.source.last4 }}</dd>
|
||||
<dt>{% trans "Payer name" %}</dt>
|
||||
<dd>{{ payment_info.source.name }}</dd>
|
||||
<dt>{% trans "Total value" %}</dt>
|
||||
<dd>{{ payment_info.amount|floatformat:2 }}</dd>
|
||||
<dt>{% trans "Currency" %}</dt>
|
||||
<dd>{{ payment_info.currency|upper }}</dd>
|
||||
<dt>{% trans "Status" %}</dt>
|
||||
<dd>{{ payment_info.status }}</dd>
|
||||
</dl>
|
||||
{% else %}
|
||||
<p>{% blocktrans trimmed %}
|
||||
This order has been planned to be paid via Stripe, but the payment has not yet been completed.
|
||||
{% endblocktrans %}</p>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user