Skip to content

Commit

Permalink
recibo pago aprobado, guardo info de pago
Browse files Browse the repository at this point in the history
  • Loading branch information
manureta committed Jul 30, 2020
1 parent dd1f18f commit 6975250
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 8 deletions.
30 changes: 26 additions & 4 deletions pretix_mercadopago/payment.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@
from collections import OrderedDict
from decimal import Decimal

import mercadopago
import mercadopago

from django import forms
from django.contrib import messages
from django.http import HttpRequest
from django.template.loader import get_template
from django.urls import reverse
from django.utils.translation import gettext as __, gettext_lazy as _
from i18nfield.strings import LazyI18nString

from pretix.base.models import Event, OrderPayment, OrderRefund
from pretix.base.models import Event, OrderPayment, OrderRefund, Order
from pretix.base.payment import BasePaymentProvider, PaymentException
from pretix.base.settings import SettingsSandbox
from pretix.helpers.urls import build_absolute_uri as build_global_uri
Expand Down Expand Up @@ -182,7 +183,7 @@ def settings_content_render(self, request):
def is_allowed(self, request: HttpRequest, total: Decimal = None) -> bool:
return super().is_allowed(request, total) and self.event.currency in SUPPORTED_CURRENCIES

def init_api(self):
def init_api(self) -> mercadopago.MP:
if self.settings.get('client_id') and not self.settings.get('secret'):
mp = mercadopago.MP(self.settings.get('client_id'))
else:
Expand Down Expand Up @@ -227,7 +228,7 @@ def execute_payment(self, request: HttpRequest, payment_obj: OrderPayment):
build_absolute_uri(request.event,
'plugins:pretix_mercadopago:return')
},
"external_reference": str(payment_obj.order.code)
"external_reference": str(payment_obj.id)
}

# Get the payment reported by the IPN.
Expand Down Expand Up @@ -290,6 +291,27 @@ def checkout_confirm_render(self, request) -> str:
ctx = {'request': request, 'event': self.event, 'settings': self.settings}
return template.render(ctx)

def render_invoice_text(self, order: Order, payment: OrderPayment) -> str:
if order.status == Order.STATUS_PAID:
if payment.info_data.get('id', None):
try:
return '{}\r\n{}: {}'.format(
_('The payment for this invoice has already been received.'),
_('Payment ID'),
payment.info_data['response']['id'],
)
except (KeyError, IndexError):
return '{}\r\n{}: {}'.format(
_('The payment for this invoice has already been received.'),
_('Payment ID'),
payment.info_data['response']['id']
)
else:
return super().render_invoice_text(order, payment)

return self.settings.get('_invoice_text', as_type=LazyI18nString, default='')


def matching_id(self, payment: OrderPayment):
# Will be called to get an ID for a matching this payment when comparing
# pretix records with records of an external source.
Expand Down
25 changes: 21 additions & 4 deletions pretix_mercadopago/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging
from decimal import Decimal

#import paypalrestsdk
import mercadopago
from django.contrib import messages
from django.core import signing
from django.db.models import Sum
Expand Down Expand Up @@ -54,8 +54,25 @@ def success(request, *args, **kwargs):
collection_id = request.GET.get('collection_id')
status = request.GET.get('collection_status')
urlkwargs = {}
payment=Mercadopago(request.event)
urlkwargs['step'] = 'confirm'

mp = Mercadopago(request.event).init_api()
paymentInfo = mp.get_payment(collection_id)

if paymentInfo["status"] == 200:
if orderid == paymentInfo['response']['external_reference']:
payment = OrderPayment.objects.get(pk=orderid)
payment.info = json.dumps(paymentInfo, indent=4)
else:
payment = None
else:
messages.error(request, str(e))
return None

if payment:
if status == 'approved' == paymentInfo['response']['status']:
payment.order.status = Order.STATUS_PAID
payment.order.save()
"""
return redirect(eventreverse(request.event, 'presale:event.checkout', kwargs=urlkwargs))
if 'cart_namespace' in kwargs:
Expand All @@ -82,7 +99,7 @@ def success(request, *args, **kwargs):
logger.error('Session did not contain payment_mercadopago_id')
urlkwargs['step'] = 'payment'
return redirect(eventreverse(request.event, 'presale:event.checkout', kwargs=urlkwargs))

"""
if payment:
return redirect(eventreverse(request.event, 'presale:event.order', kwargs={
'order': payment.order.code,
Expand Down

0 comments on commit 6975250

Please sign in to comment.