Skip to content

Commit

Permalink
[ADD] Agrego check mercadopago action
Browse files Browse the repository at this point in the history
  • Loading branch information
filoquin committed Jan 19, 2023
1 parent a786b60 commit 95f7019
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 10 deletions.
4 changes: 2 additions & 2 deletions payment_mercadopago/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ def mercadopago_get_provider_info(self, rec_id, flow):

if flow == "token":
token_sudo = request.env['payment.token'].browse(rec_id).sudo()
provider_sudo = token_sudo.provider_id.sudo()
provider_sudo = token_sudo.provider_id
provider_ref = token_sudo.provider_ref
bin = token_sudo.bin
# Esto lo agrego porque SDK V2 requiere el bin para calcular las coutas
# Esto lo agrego porque SDK V2 requiere el bin para calcular las coutas
if not bin:
token_sudo.mercadopago_fix_token_bin()
bin = token_sudo.bin
Expand Down
4 changes: 2 additions & 2 deletions payment_mercadopago/models/payment_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class PaymentProvider(models.Model):
default='deferred_capture'
)

def get_mercadopago_request(self):
def _get_mercadopago_request(self):
return MercadoPagoAPI(self)

@api.onchange('code')
Expand All @@ -73,7 +73,7 @@ def _onchange_code(self):

def action_create_mercadopago_test_user(self):
self.ensure_one()
mercadopago_API = self.get_mercadopago_request()
mercadopago_API = self._get_mercadopago_request()
values = mercadopago_API.create_test_user()
msg = _("Mercadopago test user id: {id}, nickname: {nickname}, password: {password}, status: {site_status}, email: {email} ").format(**values)

Expand Down
6 changes: 3 additions & 3 deletions payment_mercadopago/models/payment_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class PaymentToken(models.Model):
def unlink(self):
for token in self:
if token.provider_id.code == 'mercadopago':
mercado_pago = token.provider_id.get_mercadopago_request()
mercado_pago = token.provider_id._get_mercadopago_request()
mercado_pago.unlink_card_token(token.customer_id, token.card_token)

return super().unlink()
Expand All @@ -32,7 +32,7 @@ def _handle_deactivation_request(self):
"""
self.ensure_one()
if self.provider_id.code == 'mercadopago':
mercado_pago = self.provider_id.get_mercadopago_request()
mercado_pago = self.provider_id._get_mercadopago_request()
mercado_pago.unlink_card_token(self.customer_id, self.card_token)

return super()._handle_deactivation_request()
Expand All @@ -52,7 +52,7 @@ def _handle_reactivation_request(self):
def mercadopago_fix_token_bin(self):
for token in self:

mercadopago_API = token.provider_id.get_mercadopago_request()
mercadopago_API = token.provider_id._get_mercadopago_request()
if token.customer_id:
customer_id = token.customer_id
else:
Expand Down
29 changes: 26 additions & 3 deletions payment_mercadopago/models/payment_transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def _mercadopago_create_transaction_request(self, kwargs):
self.ensure_one()

self.mercadopago_tmp_token = kwargs.get('mercadopago_token')
mercadopago_API = self.provider_id.get_mercadopago_request()
mercadopago_API = self.provider_id._get_mercadopago_request()
kwargs['validation'] = True if self.provider_id.capture_manually or self.operation == 'validation' else False
return mercadopago_API.payment(self, form_data=kwargs)

Expand All @@ -70,7 +70,7 @@ def _send_payment_request(self):
if not self.token_id:
raise UserError("MercadoPago: " + _("The transaction is not linked to a token."))

mercadopago_API = self.provider_id.get_mercadopago_request()
mercadopago_API = self.provider_id._get_mercadopago_request()

# If the payment comes from subscription we do not have the cvv: w/o cvv payment flow
cvv = self.callback_model_id.model != "sale.subscription"
Expand Down Expand Up @@ -140,6 +140,29 @@ def _get_tx_from_notification_data(self, provider_code, notification_data):
)
return tx

def get_tx_info_from_mercadopago(self):
txt = []
for rec in self:
if rec.provider_id.code != 'mercadopago':
continue
MP = self.provider_id._get_mercadopago_request()

payments = MP.mp.payment().search(filters = {'external_reference': rec.reference})
for payment in payments['response']['results']:
txt += ['---------------------------']
txt += ["STATUS: %s" % payment['status']]
txt += ["AMOUNT: %s" % payment['transaction_amount']]
txt += ["description: %s" % payment['description']]
txt += ['---------------------------']
txt += ['%s: %s' % (x, payment[x]) for x in payment]
txt += ['---------------------------']
try:
rec._process_notification_data({'reference': rec.reference, 'response': payment})
except:
_logger.error('cant validate_tree')
self.env.cr.commit()
raise UserError("%s" % ' \n'.join(txt))

def _process_notification_data(self, notification_data):
""" Override of payment to process the transaction based on Authorize data.
Expand Down Expand Up @@ -197,7 +220,7 @@ def _mercadopago_tokenize_from_feedback_data(self, data):
"""
self.ensure_one()

mercadopago_API = self.provider_id.get_mercadopago_request()
mercadopago_API = self.provider_id._get_mercadopago_request()
# TODO: podríamos pasar el objeto partner y enviar todos los datos disponibles
customer_id = mercadopago_API.get_customer_profile(self.partner_id.email)
if customer_id:
Expand Down
9 changes: 9 additions & 0 deletions payment_mercadopago/views/payment_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,13 @@
</xpath>
</field>
</record>
<record id="action_info_from_mercadopago" model="ir.actions.server">
<field name="name">Check in Mercadopago</field>
<field name="model_id" ref="payment.model_payment_transaction"/>
<field name="state">code</field>
<field name="code">action = records.get_tx_info_from_mercadopago()</field>
<field name="binding_model_id" ref="payment.model_payment_transaction"/>
<field name="binding_type">action</field>
</record>

</odoo>

0 comments on commit 95f7019

Please sign in to comment.