Skip to content
Merged
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
27 changes: 27 additions & 0 deletions mercadopago/examples/preference/create_preference.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from mercadopago.sdk import SDK

def main():
# Define the authentication token
access_token = "<YOUR_ACCESS_TOKEN>"
sdk = SDK(access_token)

try:
preference_data = {
"items": [
{
"title": "Dummy Item",
"quantity": 1,
"unit_price": 10.0
}
],
"notification_url": "https://webhook.site/test-notification"
}

# Call the method to create the preference
preference = sdk.preference().create(preference_data)
print(preference)
except Exception as e:
print("Error:", e)

if __name__ == "__main__":
main()
34 changes: 24 additions & 10 deletions tests/test_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class TestOrder(unittest.TestCase):
"""
sdk = mercadopago.SDK(os.environ['ACCESS_TOKEN'])

def create_test_card(self, status="APRO"):
def create_master_test_card(self, status="APRO"):
card_token_object = {
"card_number": "5031433215406351",
"security_code": "123",
Expand All @@ -27,6 +27,17 @@ def create_test_card(self, status="APRO"):
card_token_created = self.sdk.card_token().create(card_token_object)
return card_token_created["response"]["id"]

def create_visa_test_card(self, status="APRO"):
card_token_object = {
"card_number": "4235647728025682",
"security_code": "123",
"expiration_year": "2030",
"expiration_month": "11",
"cardholder": {"name": status}
}
card_token_created = self.sdk.card_token().create(card_token_object)
return card_token_created["response"]["id"]

def create_order_canceled_or_captured(self, card_token_id):
random_email_id = random.randint(100000, 999999)
order_object_cc = {
Expand Down Expand Up @@ -141,7 +152,7 @@ def test_create_order_and_get_by_id(self):
"""
Test Function: Create an Order and Get an Order by ID
"""
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
random_email_id = random.randint(100000, 999999)
order_object = {
"type": "online",
Expand Down Expand Up @@ -173,7 +184,7 @@ def test_create_order_and_get_by_id(self):
self.assertEqual(order_get["status"], 200)

def test_process_order(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
random_email_id = random.randint(100000, 999999)
order_object = {
"type": "online",
Expand Down Expand Up @@ -207,22 +218,22 @@ def test_process_order(self):
"Invalid HTTP status when processing the order")

def test_cancel_order(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_id = self.create_order_canceled_or_captured(card_token_id)
time.sleep(4)
order_canceled = self.sdk.order().cancel(order_id)
self.assertEqual(order_canceled["status"], 200)
self.assertEqual(order_canceled["response"]["status"], "canceled")

def test_capture_order(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_id = self.create_order_canceled_or_captured(card_token_id)
order_captured = self.sdk.order().capture(order_id)
self.assertEqual(order_captured["status"], 200)
self.assertEqual(order_captured["response"]["status"], "processed")

def test_create_transaction(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_id = self.create_order_builder_mode()
transaction_object = {
"payments": [
Expand All @@ -242,14 +253,17 @@ def test_create_transaction(self):
self.assertEqual(transaction_created["status"], 201)

def test_update_transaction(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_created = self.create_order_builder_mode_complete(card_token_id)
order_id = order_created["id"]
transaction_id = order_created["transactions"]["payments"][0]["id"]
new_card_token_id = self.create_visa_test_card()

transaction_update = {
"payment_method": {
"id": "visa",
"type": "credit_card",
"token": new_card_token_id,
"installments": 5
}
}
Expand All @@ -259,7 +273,7 @@ def test_update_transaction(self):
self.assertEqual(transaction_updated["status"], 200)

def test_partial_refund_transaction(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_created = self.create_order_oneshot_mode_complete(card_token_id)
order_id = order_created["id"]
transaction_id = order_created["transactions"]["payments"][0]["id"]
Expand All @@ -281,7 +295,7 @@ def test_partial_refund_transaction(self):
" Response: {transaction_refunded}")

def test_refund_transaction(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_created = self.create_order_oneshot_mode_complete(card_token_id)
order_id = order_created["id"]
sleep(3)
Expand All @@ -291,7 +305,7 @@ def test_refund_transaction(self):
" Response: {transaction_refunded}")

def test_delete_transaction(self):
card_token_id = self.create_test_card()
card_token_id = self.create_master_test_card()
order_created = self.create_order_builder_mode_complete(card_token_id)
order_id = order_created["id"]
transaction_id = order_created["transactions"]["payments"][0]["id"]
Expand Down
6 changes: 4 additions & 2 deletions tests/test_plan.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def test_all(self):
"frequency_type": "days"
},
"transaction_amount": 60,
"currency_id": "ARS",
"currency_id": "BRL",
},
"back_url": "https://www.mercadopago.com.co/subscriptions",
"reason": f"Test Plan #{random_reason_number}",
Expand All @@ -40,13 +40,15 @@ def test_all(self):
"frequency": 1,
"frequency_type": "months",
"transaction_amount": 60,
"currency_id": "ARS",
"currency_id": "BRL",
},
"back_url": "https://www.mercadopago.com.co/subscriptions",
"reason": f"Test Plan (mandatory) #{random_reason_number}",
}

plan_response = self.sdk.plan().create(plan_object_all_options_payload)
if plan_response.get("status") != 201:
print(f"Plan creation failed: {plan_response}")
self.assertEqual(plan_response["status"], 201)

plan_object = plan_response["response"]
Expand Down
6 changes: 2 additions & 4 deletions tests/test_preference.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,11 @@ def test_all(self):
preference_saved = self.sdk.preference().get(preference_id)
self.assertEqual(preference_saved["status"], 200)
self.assertEqual(preference_saved["response"]["items"][0]["title"],
preference_object["items"][0]["title"],
"Validate title")
preference_object["items"][0]["title"])

time.sleep(3)
preference_search = self.sdk.preference().search()
self.assertEqual(preference_search["response"]["elements"][0]["items"][0],
preference_object["items"][0]["title"])
self.assertEqual(preference_search["status"], 200)


if __name__ == "__main__":
Expand Down
8 changes: 6 additions & 2 deletions tests/test_subscription.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ def setUpClass(cls):
cls._customer_id = customer_data["response"]["id"]
cls._customer_email = customer_data["response"]["email"]
plan_data = cls.create_plan()
if plan_data.get("status") != 201 or "id" not in plan_data.get("response", {}):
raise RuntimeError(f"Failed to create plan: {plan_data}")
cls._plan_id = plan_data["response"]["id"]

@classmethod
Expand Down Expand Up @@ -102,12 +104,14 @@ def test_create_subscriptions_without_a_plan(self):
"frequency": 1,
"frequency_type": "months",
"transaction_amount": 60,
"currency_id": "ARS",
"currency_id": "BRL",
},
"status": "authorized"
}

subscription_response = self.sdk.subscription().create(subscription_payload)
if subscription_response.get("status") != 201:
raise RuntimeError(f"Failed to to create subscription: {subscription_response}")
self.assertEqual(subscription_response["status"], 201)

subscription_object = subscription_response['response']
Expand Down Expand Up @@ -163,7 +167,7 @@ def create_plan(cls):
"frequency": 1,
"frequency_type": "months",
"transaction_amount": 60,
"currency_id": "ARS",
"currency_id": "BRL",
},
"back_url": "https://www.mercadopago.com.co/subscriptions",
"reason": f"Test Plan #{random.randint(100000, 999999)}",
Expand Down