Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion mercadopago/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""
from mercadopago.config.request_options import RequestOptions
from mercadopago.http.http_client import HttpClient
from mercadopago.resources.address import Address
from mercadopago.resources.advanced_payment import AdvancedPayment
from mercadopago.resources.card import Card
from mercadopago.resources.card_token import CardToken
Expand All @@ -18,7 +19,11 @@
from mercadopago.resources.oauth import OAuth
from mercadopago.resources.order import Order
from mercadopago.resources.payment import Payment
from mercadopago.resources.payment_additional_info import PaymentAdditionalInfo
from mercadopago.resources.payment_item import PaymentItem
from mercadopago.resources.payment_methods import PaymentMethods
from mercadopago.resources.payment_payer import PaymentPayer
from mercadopago.resources.phone import Phone
from mercadopago.resources.plan import Plan
from mercadopago.resources.point import Point
from mercadopago.resources.preapproval import PreApproval
Expand All @@ -29,6 +34,7 @@


__all__ = (
'Address',
'AdvancedPayment',
'Card',
'CardToken',
Expand All @@ -42,7 +48,11 @@
'OAuth',
'Order',
'Payment',
'PaymentAdditionalInfo',
'PaymentItem',
'PaymentMethods',
'PaymentPayer',
'Phone',
'Plan',
'Point',
'PreApproval',
Expand All @@ -51,4 +61,4 @@
'RequestOptions',
'Subscription',
'User',
)
)
53 changes: 53 additions & 0 deletions mercadopago/resources/address.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"""Address resource model."""

from typing import Optional
from mercadopago.resources.base import ResourceModel


class Address(ResourceModel):
"""Address model representing a physical address.

Attributes:
city: City name
country: Country name or code
state: State or province name
street_name: Street name
street_number: Street number
zip_code: Postal/ZIP code
"""

city: Optional[str] = None
country: Optional[str] = None
state: Optional[str] = None
street_name: Optional[str] = None
street_number: Optional[str] = None
zip_code: Optional[str] = None

def __init__(
self,
city: Optional[str] = None,
country: Optional[str] = None,
state: Optional[str] = None,
street_name: Optional[str] = None,
street_number: Optional[str] = None,
zip_code: Optional[str] = None,
**kwargs
):
"""Initialize Address instance.

Args:
city: City name
country: Country name or code
state: State or province name
street_name: Street name
street_number: Street number
zip_code: Postal/ZIP code
**kwargs: Additional keyword arguments
"""
self.city = city
self.country = country
self.state = state
self.street_name = street_name
self.street_number = street_number
self.zip_code = zip_code
super().__init__(**kwargs)
63 changes: 61 additions & 2 deletions mercadopago/resources/payment.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,65 @@
from mercadopago.core import MPBase


class PaymentPayer:
"""Payer information for a payment.

Attributes:
email (str): Payer's email address.
identification (dict): Identification document with type and number.
first_name (str): Payer's first name.
last_name (str): Payer's last name.
"""
pass


class PaymentAdditionalInfo:
"""Additional information for a payment.

Attributes:
items (list): List of items being paid for.
payer (dict): Additional payer information.
shipments (dict): Shipping information.
"""
pass


class PaymentRequest:
"""Schema for creating a new payment.

Attributes:
transaction_amount (float, required): Total amount to charge.
token (str): Card token generated by Mercado Pago SDK.
payment_method_id (str): Payment method identifier (e.g., 'visa', 'master').
installments (int): Number of installments.
issuer_id (str): Card issuer identifier.
payer (PaymentPayer, required): Payer information.
capture (bool): Whether to auto-capture the payment (default: True).
binary_mode (bool): Return only approved or rejected status (default: False).
external_reference (str): External reference for the payment.
statement_descriptor (str): Description that appears on card statement (max 22 chars).
date_of_expiration (datetime): Expiration date for the payment.
additional_info (PaymentAdditionalInfo): Additional payment information.
application_fee (float): Fee amount for marketplace applications.
notification_url (str): IPN notification URL (deprecated).
callback_url (str): Callback URL after payment completion.
coupon_code (str): Discount coupon code.
coupon_amount (float): Discount amount from coupon.
"""
pass


class Pagination:
"""Pagination metadata for search results.

Attributes:
total (int): Total number of results.
limit (int): Maximum number of results per page.
offset (int): Number of results to skip.
"""
pass


class Payment(MPBase):
"""Manages payment lifecycle through the MercadoPago Checkout API.

Expand Down Expand Up @@ -52,7 +111,7 @@ def create(self, payment_object, request_options=None):
"""Creates a new payment.

Args:
payment_object: Dict describing the payment (amount, payer,
payment_object: Dict describing the payment (transaction_amount, payer,
payment_method_id, token, etc.).
request_options: Per-call configuration overrides.

Expand Down Expand Up @@ -92,4 +151,4 @@ def update(self, payment_id, payment_object, request_options=None):
raise ValueError("Param payment_object must be a Dictionary")

return self._put(uri="/v1/payments/" + str(payment_id), data=payment_object,
request_options=request_options)
request_options=request_options)
Loading
Loading