Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A pluggable Django application for integrating webtopay ( macro payments
Python Shell Makefile
Branch: master


Webtopay ( integration app for Django web framework

Inspired by django-paypal

How to use

  1. install django-webtopay

  2. add WEBTOPAY_PASSWORD='pass' to your settings file

  3. Add callback url:: url(r'^wtp/', include('webtopay.urls.makro')) (it should be relatively hard to guess)

  4. Create a form for submission:

    form = WebToPaymentForm(
        dict(projectid = 123123,
            orderid = '3c3662bcb661d6de679c636744c66b62',
            accepturl = request.build_absolute_uri(),
            cancelurl = request.build_absolute_uri(),
            callbackurl = reverse('webtopay-makro'),
            paytext = "Payment for services",
            p_firstname = "Vardenis",
            p_lastname = "Pavardenis",
            p_email = "",
            amount = 989, # 9 Lt 89 ct
            test = 1
        button_html="<input type='submit' value='Pay!'/>",
  1. Catch a django signal when the payment is completed:

    from webtopay.signals import payment_was_successful
    def process_payment(**kargs):
        trans = kargs['sender']
        if price_i_expect * 100 != trans.amount:
            log.error("Received wrong amount. Expected: %d, got: %d",\
                price_i_expect*100, trans.amount)
        paid = True
        # from this point we assume customer paid

You should catch payment_was_flagged signal if you want to know when something went wrong:

from webtopay.signals import payment_was_flagged
def investigate_payment(**kargs):
    # kargs['sender'] is an instance of WebToPayResponse.
    # All fields are documented in webtopay/
    log.warn("Payment went wrong for %s, please investigate",

If you have any questions or problems, please use issues page.



For supported Python and Django versions, see build matrix of .travis.yml.

Release notes

  • 1.0.1 — Django 1.6 support.
  • 1.0 — First production Release.
Something went wrong with that request. Please try again.