from django.contrib.sites.models import Site
from django.db import models
from django.urls import reverse
+from django.utils.timezone import now
from django.utils.translation import ugettext_lazy as _
from . import POSS
('COMPLETED', _('Completed')),
('CANCELED', _('Canceled')),
('REJECTED', _('Rejected')),
+
+ ('ERR-INVALID_TOKEN', _('Invalid token')),
])
+ created_at = models.DateTimeField(null=True, blank=True, auto_now_add=True)
+ completed_at = models.DateTimeField(null=True, blank=True)
class Meta:
abstract = True
"merchantPosId": self.pos_id,
"currencyCode": self.get_pos().currency_code,
"totalAmount": str(int(self.get_amount() * 100)),
- "extOrderId": "wolne-lektury-rcz-%d" % self.pk,
+ "extOrderId": "wolne-lektury-%d" % self.pk,
"buyer": self.get_buyer() or {},
"continueUrl": self.get_continue_url(),
# else?
if 'orderId' not in response:
- raise ValueError("Expecting dict with `orderId` key, got: %s" % response)
- self.order_id = response['orderId']
- self.save()
+ code = response.get('status', {}).get('codeLiteral', '')
+ if code:
+ self.status = 'ERR-' + str(code)
+ self.save()
+ self.status_updated()
+ else:
+ raise ValueError("Expecting dict with `orderId` key, got: %s" % response)
+ else:
+ self.order_id = response['orderId']
+ self.save()
-
return response.get('redirectUri', self.schedule.get_thanks_url())
status = self.get_status()
if self.order.status not in (status, 'COMPLETED'):
self.order.status = status
+ if status == 'COMPLETED':
+ self.order.completed_at = now()
self.order.save()
self.order.status_updated()