lingo: log payment events (fixes #11306)

This commit is contained in:
Benjamin Dauvergne 2016-06-13 10:52:19 +02:00
parent 489775e265
commit 488e411a16
1 changed files with 26 additions and 4 deletions

View File

@ -33,6 +33,7 @@ from django.conf import settings
from django.contrib import messages
from django.utils.translation import ugettext_lazy as _
from django.db.transaction import atomic
from django.utils.encoding import smart_text
import eopayment
@ -239,8 +240,10 @@ class PayView(View):
return HttpResponseRedirect(next_url)
payment = get_eopayment_object(request, regie)
(order_id, kind, data) = payment.request(total_amount,
email=request.user.email)
(order_id, kind, data) = payment.request(total_amount, email=request.user.email)
logger = logging.getLogger(__name__)
logger.info(u'emitted payment request with id %s', smart_text(order_id), extra={
'eopayment_order_id': smart_text(order_id), 'eopayment_data': repr(data)})
transaction.order_id = order_id
transaction.save()
if next_url:
@ -263,20 +266,39 @@ class CallbackView(View):
def handle_callback(self, request, backend_response, **kwargs):
regie = Regie.objects.get(id=kwargs.get('regie_pk'))
payment = get_eopayment_object(request, regie)
logger = logging.getLogger(__name__)
try:
payment_response = payment.response(backend_response)
except eopayment.ResponseError as e:
logging.error('failed to process payment response (%r)', e)
logger.error(u'failed to process payment response: %s', e,
extra={'eopayment_raw_response': repr(backend_response)})
return HttpResponseBadRequest()
extra_info = {
'eopayment_order_id': smart_text(payment_response.order_id),
'eopayment_response': repr(payment_response),
}
for k, v in payment_response.bank_data.iteritems():
extra_info['eopayment_bank_data_' + k] = smart_text(v)
if not payment_response.result == eopayment.CANCELLED:
# cancellation are not signed...
logger.warning(u'received unsigned payment response with id %s',
smart_text(payment_response.order_id), extra=extra_info)
assert payment_response.signed is True
try:
transaction = Transaction.objects.get(order_id=payment_response.order_id)
except Transaction.DoesNotExist:
logger.warning(u'received unknown payment response with id %s',
smart_text(payment_response.order_id), extra=extra_info)
raise Http404
else:
extra_info['lingo_transaction_id'] = transaction.pk
if transaction.user:
# let hobo logger filter handle the extraction of user's infos
extra_info['user'] = transaction.user
logger.warning(u'received unknown payment response with id %s',
smart_text(payment_response.order_id), extra=extra_info)
transaction.status = payment_response.result
transaction.bank_transaction_id = payment_response.transaction_id
transaction.bank_data = payment_response.bank_data