Skip to main content

MercadoPago integration for django

Project description

build status coverage report version on pypi licence

django-mercadopago is a simple django application for interacting with MercadoPago, aiming to be rather simple, and only covers the basic uses cases.

Features

Our intention is not to cover 100% of the features of the upstream API, but rather provide a simple app that allows accepting and tracking payments. This should suffice for simple sites like shopping carts, online sales, etc.

Pull requests are always welcome. Please don’t hesitate to open an issue if you encounter a problem. New features will generally only be added as needed, but again, accepted if you submit a patch.

Installation

Installation should generally be done via pip:

pip install django-mercadopago

Configuration

You’ll need to obtainer your API credentials (app id and secret key) here and create an Account object with them. This creation can be done via the django admin included with this app or programmatically.

You should also expose the notifications endpoints like this:

url(r'^mercadopago/', include('django_mercadopago.urls'), namespace='mp'),
# Make sure namespace is 'mp', since we assume it is for notification URL
# contruction.

Note that these endpoints are required, since notification callbacks won’t work without them.

There are also a few Django settings that configure the behaviour of this app. All these settings are included in a single dict inside your Django settings:

MERCADOPAGO = {
    'autoprocess': True,
    'success_url': 'myapp:mp_success',
    'failure_url': 'myapp:mp_failure',
    'pending_url': 'myapp:mp_pending',
    'base_host': 'https://www.mysite.com
}

See below for an explanation of each setting.

AUTOPROCESS

Required

If set to True, notifications will be processed as soon as they are received. Otherwise, it’s up to the developer to process them.

A signal is always fired when a notification has been created, and a common pattern if not auto-processing is to have a celery task to process them:

@receiver(notification_received)
def process_notification(sender, **kwargs):
    tasks.process_notification.delay(notification=sender)

SUCCESS_URL

Required

The named URL pattern where requests are redirected after a user successfully completes a payment. This url will receive as an argument the id of the notification created for this payment.

For example, this if this value were set to payment_recived, a corresponding URL pattern would look like this:

url(
    r'pago_recibido/(?P<pk>.*)$',
    order.OrderPaidView.as_view(),
    name='payment_received',
),

FAILURE_URL

Required

The named URL pattern where requests are redirected after a user payment fails. This url will receive as an argument the id of the preference that the user attempted to pay

PENDING_URL

Required

The named URL pattern where requests are redirected after a user completes a payment, but confirmation is pending (for example, a transaction that takes a few days, bank deposit, etc). This url will receive as an argument the id of the preference that the user is attempting to pay.

BASE_HOST

Required

Defines the domain name to use for notification and callback URLs. It’ll be prepended to the exact URL of the exposed notifications endpoint.

Usage

MercadoPago lets you create preferences, for which you’ll later receive notifications (indicating if it was paid, or what happened):

self.preference = Preference.objects.create(
    title='the product name',
    price=10.0,
    reference='order-38452',
    success_url='http://example.com/mp_done',
    account=account,
)

If your app will only be using a single MercadoPago account, just use:

account = Account.objects.first()

Finally, you can handle payment notifications in real time using a post_update hook:

@receiver(post_save, sender=MercadoPagoPayment)
def process_payment(sender, instance=None, created=False, **kwargs):
    do_stuff()

To complete a full payment flow, you’d:

  • Create a Preference.

  • Use preference.url to forward the user to the payment page.

  • If your webhooks are properly configured, the notification will be created as soon as the user completes the operation.

    • Depending on your AUTOPROCESS setting, the status may be updated automatically, or may be up to you (see above).

    • If you’re not using webhooks, you’ll have to poll the status manually from time to time (using poll_status).

Backwards compatibility

As of v5.0.0, the notification and callback URL formats generated by v4.2.0 and earlier is no longer supported. Users must upgrade to v4.3.0, and run this version until all pending payments are completed (or expire), and only then upgrade to v5.0.0.

Note that, prior to v4.2.0, this package was called django-mercadopago-simple on PyPI. Older release exist under that name.

Version 2.0.0 changes the database schema quite a bit. While older data is retained, some missing fields had to be filled. Auto-generated data will have negative key values, and should easily be recognizable.

Regrettably, filling in this data automatically is not possible. However, there is no data loss involved.

Licence

This software is distributed under the ISC licence. See LICENCE for details.

Copyright (c) 2015-2018 Hugo Osvaldo Barrera <hugo@barrera.io>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-mercadopago-5.1.2.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

django_mercadopago-5.1.2-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

Details for the file django-mercadopago-5.1.2.tar.gz.

File metadata

  • Download URL: django-mercadopago-5.1.2.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for django-mercadopago-5.1.2.tar.gz
Algorithm Hash digest
SHA256 b7d0703e84c9eb9d7639e1eef954218329567dac59b8817e71b9aa22b75f06fe
MD5 3d73c69b5a862e317618723f0e52b059
BLAKE2b-256 8f2aea2e97b34bd740bc43b6652d4b212fe4bd0e6dad7c5608803255835f4e45

See more details on using hashes here.

Provenance

File details

Details for the file django_mercadopago-5.1.2-py3-none-any.whl.

File metadata

  • Download URL: django_mercadopago-5.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

File hashes

Hashes for django_mercadopago-5.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2ef44b5b8079f75397af9794eda435099e5120b760927739897f7e66b1c30ad5
MD5 f862b20e3e5f95739c26afb24d53733b
BLAKE2b-256 3bee43a411935e5bb33b011c7445e10ec0aaee57853e02b00872b53614bf8d5a

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page