Files
full_encoach_platform/odoo/addons/payment_mercado_pago/const.py
Yamen Ahmad 3e83d8d7d5 feat: add complete EnCoach backend — Odoo 19 + all addons
Includes:
- Odoo 19 framework (odoo/)
- 27 custom EnCoach addons (new_project/custom_addons/)
  - encoach_core, encoach_api, encoach_lms_api, encoach_adaptive_api
  - encoach_exam, encoach_taxonomy, encoach_adaptive, encoach_assignment
  - encoach_ai, encoach_ai_grading, encoach_ai_generation, encoach_ai_media
  - encoach_courseware, encoach_communication, encoach_subscription
  - encoach_notification, encoach_approval, encoach_branding
  - encoach_classroom, encoach_registration, encoach_stats
  - encoach_faq, encoach_ticket, encoach_training, encoach_resources
  - encoach_adaptive_ai, encoach_sis
- 21 OpenEduCat Enterprise modules (new_project/enterprise-19/)
- 14 OpenEduCat Community modules (new_project/openeducat_erp-19.0/)
- Configuration: odoo.conf, requirements.txt, scripts
- 200+ REST API endpoints with JWT authentication
- SRS and test documentation

Made-with: Cursor
2026-04-01 17:10:04 +04:00

132 lines
4.5 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tools import LazyTranslate
_lt = LazyTranslate(__name__)
PROXY_URL = 'https://mercadopago.api.odoo.com/api/mercado_pago'
PAYMENT_RETURN_ROUTE = '/payment/mercado_pago/return'
OAUTH_RETURN_ROUTE = '/payment/mercado_pago/oauth/return'
WEBHOOK_ROUTE = '/payment/mercado_pago/webhook'
# The countries supported by Mercado Pago.
SUPPORTED_COUNTRIES = {
'AR',
'BR',
'CL',
'CO',
'MX',
'PE',
'UY',
}
# Mapping of country codes to corresponding currency codes.
CURRENCY_MAPPING = {
'AR': 'ARS', # Argentina - Argentine Peso
'BR': 'BRL', # Brazil - Brazilian Real
'CL': 'CLP', # Chile - Chilean Peso
'CO': 'COP', # Colombia - Colombian Peso
'MX': 'MXN', # Mexico - Mexican Peso
'PE': 'PEN', # Peru - Peruvian Sol
'UY': 'UYU', # Uruguay - Uruguayan Peso
}
# Set of currencies where Mercado Pago's minor units deviates from the ISO 4217 standard.
# See https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-one.xls
# vs. https://api.mercadopago.com/currencies. Last seen online: 2024-10-29.
CURRENCY_DECIMALS = {
'COP': 0,
'HNL': 0,
'NIO': 0,
}
# The codes of the payment methods to activate when Mercado Pago is activated.
DEFAULT_PAYMENT_METHOD_CODES = {
# Primary payment methods.
'card',
# Brand payment methods.
'amex',
'visa',
'mastercard',
'argencard',
'ceconsud',
'cordobesa',
'codensa',
'lider',
'magna',
'naranja',
'nativa',
'oca',
'presto',
'tarjeta_mercadopago',
'shopping',
'elo',
'hipercard',
}
# Mapping of payment method codes to Mercado Pago codes.
PAYMENT_METHODS_MAPPING = {
'card': 'debit_card,credit_card,prepaid_card',
'paypal': 'digital_wallet',
'mastercard': 'master',
'mercado_pago_wallet': 'mercado_pago',
}
# Mapping of transaction states to Mercado Pago payment statuses.
# See https://www.mercadopago.com.mx/developers/en/reference/payments/_payments_id/get.
TRANSACTION_STATUS_MAPPING = {
'pending': ('pending', 'in_process', 'in_mediation', 'authorized'),
'done': ('approved', 'refunded'),
'canceled': ('cancelled', 'null'),
'error': ('rejected',),
}
# Mapping of error states to Mercado Pago error messages.
# See https://www.mercadopago.com.ar/developers/en/docs/checkout-api/response-handling/collection-results
ERROR_MESSAGE_MAPPING = {
'accredited': _lt(
"Your payment has been credited. In your summary you will see the charge as a statement "
"descriptor."
),
'pending_contingency': _lt(
"We are processing your payment. Don't worry, in less than 2 business days, we will notify "
"you by e-mail if your payment has been credited."
),
'pending_review_manual': _lt(
"We are processing your payment. Don't worry, less than 2 business days we will notify you "
"by e-mail if your payment has been credited or if we need more information."
),
'cc_rejected_bad_filled_card_number': _lt("Check the card number."),
'cc_rejected_bad_filled_date': _lt("Check expiration date."),
'cc_rejected_bad_filled_other': _lt("Check the data."),
'cc_rejected_bad_filled_security_code': _lt("Check the card security code."),
'cc_rejected_blacklist': _lt("We were unable to process your payment, please use another card."),
'cc_rejected_call_for_authorize': _lt("You must authorize the payment with this card."),
'cc_rejected_card_disabled': _lt(
"Call your card issuer to activate your card or use another payment method. The phone "
"number is on the back of your card."
),
'cc_rejected_card_error': _lt(
"We were unable to process your payment, please check your card information."
),
'cc_rejected_duplicated_payment': _lt(
"You have already made a payment for that value. If you need to pay again, use another card"
" or another payment method."
),
'cc_rejected_high_risk': _lt(
"We were unable to process your payment, please use another card."
),
'cc_rejected_insufficient_amount': _lt("Your card has not enough funds."),
'cc_rejected_invalid_installments': _lt(
"This payment method does not process payments in installments."
),
'cc_rejected_max_attempts': _lt(
"You have reached the limit of allowed attempts. Choose another card or other means of "
"payment."
),
'cc_rejected_other_reason': _lt("Payment was not processed, use another card or contact issuer.")
}