def mercadopago_get_merchant_order(self, merchant_order_id): print "[%s]mercadopago_get_merchant_order" % __name__ self.ensure_one() acq = self MPago = mercadopago.MP(acq.mercadopago_client_id, acq.mercadopago_secret_key) merchant_order = MPago.get_merchant_order(merchant_order_id) return merchant_order.get('response', False)
def mercadopago_get_collection(self, collection_id): print "[%s]mercadopago_get_collection" % __name__ self.ensure_one() acq = self MPago = mercadopago.MP(acq.mercadopago_client_id, acq.mercadopago_secret_key) collection_info = MPago.get_collection(collection_id) return collection_info.get('response', {}).get('collection', False)
def _mercadopago_s2s_get_access_token(self): """ """ print "[%s]_mercadopago_s2s_get_access_token" % __name__ res = dict.fromkeys(self.ids, False) for acquirer in self: MPago = mercadopago.MP(acquirer.mercadopago_client_id, acquirer.mercadopago_secret_key) res[acquirer.id] = MPago.get_access_token() return res
def mercadopago_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None): base_url = self.pool['ir.config_parameter'].get_param( cr, SUPERUSER_ID, 'web.base.url') acquirer = self.browse(cr, uid, id, context=context) print "mercadopago_form_generate_values: tx_values: ", tx_values print "partner_values:", partner_values MPago = False MPagoPrefId = False if acquirer.mercadopago_client_id and acquirer.mercadopago_secret_key: MPago = mercadopago.MP(acquirer.mercadopago_client_id, acquirer.mercadopago_secret_key) print "MPago: ", MPago else: error_msg = 'YOU MUST COMPLETE acquirer.mercadopago_client_id and acquirer.mercadopago_secret_key' _logger.error(error_msg) raise ValidationError(error_msg) jsondump = "" if MPago: if acquirer.environment == "prod": MPago.sandbox_mode(False) else: MPago.sandbox_mode(True) MPagoToken = MPago.get_access_token() preference = { "items": [{ "title": "Orden Ecommerce " + tx_values["reference"], #"picture_url": "https://www.mercadopago.com/org-img/MP3/home/logomp3.gif", "quantity": 1, "currency_id": tx_values['currency'] and tx_values['currency'].name or '', "unit_price": tx_values["amount"], #"category_id": "Categoría", }], "payer": { "name": partner_values["name"], "surname": partner_values["first_name"], "email": partner_values["email"], # "date_created": "2015-01-29T11:51:49.570-04:00", # "phone": { # "area_code": "+5411", # "number": partner_values["phone"] # }, # "identification": { # "type": "DNI", # "number": "12345678" # }, # "address": { # "street_name": partner_values["address"], # "street_number": "", # "zip_code": partner_values["zip"] # } contni }, "back_urls": { "success": '%s' % urlparse.urljoin(base_url, MercadoPagoController._return_url), "failure": '%s' % urlparse.urljoin(base_url, MercadoPagoController._cancel_url), "pending": '%s' % urlparse.urljoin(base_url, MercadoPagoController._return_url) }, "auto_return": "approved", # "payment_methods": { # "excluded_payment_methods": [ # { # "id": "amex" # } # ], # "excluded_payment_types": [ # { # "id": "ticket" # } # ], # "installments": 24, # "default_payment_method_id": '', # "default_installments": '', # }, # "shipments": { # "receiver_address": # { # "zip_code": "1430", # "street_number": 123, # "street_name": "Calle Trece", # "floor": 4, # "apartment": "C" # } # }, "notification_url": '%s' % urlparse.urljoin(base_url, MercadoPagoController._notify_url), "external_reference": tx_values["reference"], "expires": True, "expiration_date_from": self.mercadopago_dateformat(datetime.datetime.now(tzlocal())), "expiration_date_to": self.mercadopago_dateformat( datetime.datetime.now(tzlocal()) + datetime.timedelta(days=31)) } print "preference:", preference preferenceResult = MPago.create_preference(preference) print "preferenceResult: ", preferenceResult if 'response' in preferenceResult: if 'id' in preferenceResult['response']: MPagoPrefId = preferenceResult['response']['id'] else: error_msg = 'Returning response is:' error_msg += json.dumps(preferenceResult, indent=2) _logger.error(error_msg) raise ValidationError(error_msg) if acquirer.environment == "prod": linkpay = preferenceResult['response']['init_point'] else: linkpay = preferenceResult['response']['sandbox_init_point'] jsondump = json.dumps(preferenceResult, indent=2) print "linkpay:", linkpay print "jsondump:", jsondump print "MPagoPrefId: ", MPagoPrefId print "MPagoToken: ", MPagoToken mercadopago_tx_values = dict(tx_values) if MPagoPrefId: mercadopago_tx_values.update({ 'pref_id': MPagoPrefId, # 'cmd': '_xclick', # 'business': acquirer.mercadopago_email_account, # 'item_name': tx_values['reference'], # 'item_number': tx_values['reference'], # 'amount': tx_values['amount'], # 'currency_code': tx_values['currency'] and tx_values['currency'].name or '', # 'address1': partner_values['address'], # 'city': partner_values['city'], # 'country': partner_values['country'] and partner_values['country'].name or '', # 'state': partner_values['state'] and partner_values['state'].name or '', # 'email': partner_values['email'], # 'zip': partner_values['zip'], # 'first_name': partner_values['first_name'], # 'last_name': partner_values['last_name'], # 'return': '%s' % urlparse.urljoin(base_url, MercadoPagoController._return_url), # 'notify_url': '%s' % urlparse.urljoin(base_url, MercadoPagoController._notify_url), # 'cancel_return': '%s' % urlparse.urljoin(base_url, MercadoPagoController._cancel_url), }) # if acquirer.fees_active: # mercadopago_tx_values['handling'] = '%.2f' % mercadopago_tx_values.pop('fees', 0.0) # if mercadopago_tx_values.get('return_url'): # mercadopago_tx_values['custom'] = json.dumps({'return_url': '%s' % mercadopago_tx_values.pop('return_url')}) return partner_values, mercadopago_tx_values
def mercadopago_create_preference(self, values): """ Create a MercadoPago preference and related pending transaction. """ self.ensure_one() acquirer = self # Setup MercadoPago. MPago = mercadopago.MP(acquirer.mercadopago_client_id, acquirer.mercadopago_secret_key) if not MPago: error_msg = 'Can\'t create mercadopago instance.' _logger.error(error_msg) raise ValidationError(error_msg) MPago.sandbox_mode(acquirer.environment != "prod") # Requiered data to setup preferences. base_url = self.env['ir.config_parameter'].sudo().get_param( 'web.base.url') date_from = fields.Datetime \ .context_timestamp(self, datetime.now()) # Setup Preference. preference = { "items": [{ "title": "Orden Ecommerce " + values["reference"], "quantity": 1, "currency_id": values['currency'] and values['currency'].name or '', "unit_price": values["amount"] }], "payer": { "name": values["billing_partner_first_name"], "surname": values["billing_partner_last_name"], "email": values["billing_partner_email"] }, "back_urls": { "success": '%s' % urlparse.urljoin(base_url, MercadoPagoController._return_url), "failure": '%s' % urlparse.urljoin(base_url, MercadoPagoController._cancel_url), "pending": '%s' % urlparse.urljoin(base_url, MercadoPagoController._return_url) }, "auto_return": "approved", "notification_url": '%s' % urlparse.urljoin(base_url, MercadoPagoController._notify_url), "external_reference": values["reference"], "expires": True, "expiration_date_from": date_from.strftime(MLDATETIME), "expiration_date_to": (date_from + timedelta(days=2)).strftime(MLDATETIME) } # Generate Preference. res = MPago.create_preference(preference) print "Pref:", res if 'response' not in res or 'id' not in res['response']: error_msg = 'Returning response is:' error_msg += json.dumps(res, indent=2) _logger.error(error_msg) raise ValidationError(error_msg) pref_id = res['response']['id'] form_url = res['response']['init_point'] \ if acquirer.environment == "prod" \ else res['response']['sandbox_init_point'] return pref_id, form_url