{ "info": { "author": "Django-getpaid Team", "author_email": "d.kozaczko@sunscrapers.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "=============================\nWelcome to django-getpaid\n=============================\n\n.. image:: https://img.shields.io/pypi/v/django-getpaid.svg\n :target: https://pypi.org/project/django-getpaid/\n :alt: Latest PyPI version\n.. image:: https://img.shields.io/travis/sunscrapers/django-getpaid.svg\n :target: https://travis-ci.org/sunscrapers/django-getpaid\n.. image:: https://img.shields.io/coveralls/github/cypreess/django-getpaid.svg\n :target: https://coveralls.io/github/django-getpaid/django-getpaid?branch=master\n.. image:: https://img.shields.io/pypi/wheel/django-getpaid.svg\n :target: https://pypi.org/project/django-getpaid/\n.. image:: https://img.shields.io/pypi/l/django-getpaid.svg\n :target: https://pypi.org/project/django-getpaid/\n\n\ndjango-getpaid is a multi-broker payment processor for Django\n\nDocumentation\n=============\n\nThe full documentation is at https://django-getpaid.readthedocs.io.\n\nQuickstart\n==========\n\nInstall django-getpaid::\n\n pip install django-getpaid\n\nAdd it to your `INSTALLED_APPS`:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'getpaid.apps.GetpaidConfig',\n ...\n )\n\nAdd django-getpaid's URL patterns:\n\n.. code-block:: python\n\n from getpaid import urls as getpaid_urls\n\n\n urlpatterns = [\n ...\n url(r'^', include(getpaid_urls)),\n ...\n ]\n\nFeatures\n========\n\n* **multiple payment brokers support** - allows using simultaneously many payments methods at the same time,\n* **multiple payments currency support** (getpaid will automatically filter available backends list accordingly to the payment currency),\n* **integration flexibility** - makes minimal assumption on 3rd party code - requires only an existence of any single django model representing an order,\n* **proper architecture design** - all backends which requires fetching payment confirmation are enforced to use asynchronous celery tasks.\n\n\nSupported backends:\n-------------------\n\nIn alphabetical order:\n\n* `Dotpay.pl/Dotpay.eu `_\n* `PayU.pl `_\n\nDon't see the payment backend you need? `Writing your own backend `_ is very simple. Pull requests are welcome.\n\n\nPayment workflow integration\n============================\n\nWith few simple steps you will easily integrate your project with django-getpaid. This module is shipped with\nvery well documented django-getpaid test project which can be found with module source code. Please refer to this\ncode for implementation details.\n\nStep 1. Prepare your order model\n--------------------------------\n\n**Required**\n\nFirst of all you need a model that will represent an order in you application. It does not matter how\ncomplicated the model is or what fields does it provide, be it single item order, or multiple items order.\nLet's take an example from test project::\n\n from django.core.urlresolvers import reverse\n from django.db import models\n import getpaid\n\n class Order(models.Model):\n name = models.CharField(max_length=100)\n total = models.DecimalField(decimal_places=2, max_digits=8, default=0)\n currency = models.CharField(max_length=3, default='EUR')\n status = models.CharField(max_length=1, blank=True, default='W', choices=(('W', 'Waiting for payment'),\n ('P', 'Payment complete')))\n def get_absolute_url(self):\n return reverse('order_detail', kwargs={'pk': self.pk})\n\n def __unicode__(self):\n return self.name\n\n Payment = getpaid.register_to_payment(Order, unique=False, related_name='payments')\n\n\nand add the following line to your settings:\n\n GETPAID_ORDER_MODEL = 'my_super_app.Order'\n\n\nFirst of all, class name is not important at all. You register a model with ``register_to_payment`` method.\n\nYou can add some `kwargs` that are basically used for ``ForeignKey`` kwargs. In this example whe allow creating multiple payments for one order, and naming One-To-Many relation.\n\nThere are two important things on that model. In fact two methods are required to be present in order class.\nThe first one is ``__unicode__`` method as this will be used in few places as a fallback for generating\norder description. The second one is ``get_absolute_url`` method which should return an URL of order object.\nIt is used again as a fallback for some final redirections after payment success of failure (if you do not provide otherwise).\n\nThe second important thing is, that it actually doesn't matter if you store `total` in database or just sum it up from some items.\nYou will see why, in further sections.\n\n\nStep 2. Prepare payment form for order\n--------------------------------------\n\n**Required**\n\nYour application - after some custom workflow - just created an order object. That's fine.\nWe now want to get paid for that order. So lets take a look on a view for creating a payment for an order::\n\n from django.views.generic.detail import DetailView\n from getpaid.forms import PaymentMethodForm\n from example.orders.models import Order\n\n class OrderView(DetailView):\n model=Order\n\n def get_context_data(self, **kwargs):\n context = super(OrderView, self).get_context_data(**kwargs)\n context['payment_form'] = PaymentMethodForm(self.object.currency, initial={'order': self.object})\n return context\n\n\nHere we get a ``PaymentMethodForm`` object, that is parametrised with currency type.\nThis is an important thing, because this form will display you only payments method that are suitable\nfor a given order currency.\n\n``PaymentMethodForm`` provides two fields: HiddenInput with order_id and ChoiceField with backend name. This is how you use it in template::\n\n
\n {% csrf_token %}\n {{ payment_form.as_p }}\n \n
\n\n\nAction URL of form should point on named link `getpaid:new-payment` that requires currency code argument.\nThis form will redirect client from order view directly to page of payment broker.\n\nStep 3. Filling necessary payment data\n--------------------------------------\n\n**Required**\n\nBecause the idea of whole module is that it should be loosely coupled, there is this convention that it does\nnot require any structure of your order model. But still it needs to know some transaction details of your order.\nDjango signals are used for that. django-getpaid, while generating gateway redirect url, will emit\na ``getpaid.signals.new_payment_query`` signal. Here is the signal declaration::\n\n new_payment_query = Signal(providing_args=['order', 'payment'])\n new_payment_query.__doc__ = \"\"\"\n Sent to ask for filling Payment object with additional data:\n payment.amount:\t\t\ttotal amount of an order\n payment.currency:\t\tamount currency\n This data cannot be filled by ``getpaid`` because it is Order structure\n agnostic. After filling values just return. Saving is done outside signal.\n \"\"\"\n\nYour code should have some signal listeners, that will fill payment object with required information::\n\n from getpaid import signals\n\n def new_payment_query_listener(sender, order=None, payment=None, **kwargs):\n \"\"\"\n Here we fill only two obligatory fields of payment, and leave signal handler\n \"\"\"\n payment.amount = order.total\n payment.currency = order.currency\n\n signals.new_payment_query.connect(new_payment_query_listener)\n\n\nSo this is a little piece of logic that you need to provide to map your order to payment object.\nAs you can see you can do all fancy stuff here to get order total value and currency code.\n\n.. note::\n\n If you don't know where to put your listeners code, we recommend to put it in ``listeners.py`` file\n and then add a line ``import listeners`` to the end of you ``models.py`` file. Both files\n (``listeners.py`` and ``models.py``) should be placed in on of your app (possibly an app related to order model).\n\nStep 4. Handling changes of payment status\n------------------------------------------\n\n**Required**\n\nSignals are also used to inform you that some particular payment just change status. In this case you will\nuse ``getpaid.signals.payment_status_changed`` signal which is defined as::\n\n payment_status_changed = Signal(providing_args=['old_status', 'new_status'])\n payment_status_changed.__doc__ = \"\"\"Sent when Payment status changes.\"\"\"\n\nexample code that handles status change::\n\n from getpaid import signals\n\n def payment_status_changed_listener(sender, instance, old_status, new_status, **kwargs):\n \"\"\"\n Here we will actually do something, when payment is accepted.\n E.g. lets change an order status.\n \"\"\"\n if old_status != 'paid' and new_status == 'paid':\n # Ensures that we process order only one\n instance.order.status = 'P'\n instance.order.save()\n\n signals.payment_status_changed.connect(payment_status_changed_listener)\n\nFor example: when payment changes status to 'paid', it means that the necessary amount was verified\nby your payment broker. You can now access ``payment.order`` object and do some stuff here.\n\nStep 5. Handling new payment creation\n-------------------------------------\n\n**Optional**\n\nFor some reasons you may want to make some additiona checks before a new\nPayment is created or add some extra validation before the user is redirected\nto gateway url. You can handle this with\n``getpaid.signals.order_additional_validation`` signal defined as::\n\n\torder_additional_validation = Signal(providing_args=['request',\n 'order',\n 'backend'])\n\torder_additional_validation.__doc__ = \"\"\"\n\tA hook for additional validation of an order.\n\tSent after PaymentMethodForm is submitted but before\n\tPayment is created and before user is redirected to payment gateway.\n\t\"\"\"\n\nIt may also (e.g. for KPI benchmarking) be important for you to how many\nand which payments were made.\nYou can handle ``getpaid.signals.new_payment`` signal defined as::\n\n new_payment = Signal(providing_args=['order', 'payment'])\n new_payment.__doc__ = \"\"\"Sent after creating new payment.\"\"\"\n\n\n.. note::\n\n This method will enable you to make on-line KPI processing. For batch processing you can as well just query\n the database for Payment model.\n\nStep 6. Setup your payment backends\n-----------------------------------\n\n**Required**\n\nPlease be sure to read carefully `Backends `_ section for information on how to configure particular backends.\nThey will probably not work out of the box without providing some account keys or other credentials.\n\n\n\nRunning Tests\n=============\n\nDoes the code actually work?\n\n::\n\n source /bin/activate\n (myenv) $ pip install tox\n (myenv) $ tox\n\n\n\nDisclaimer\n==========\n\nThis project has nothing in common with `getpaid `_ plone project.\nIt is mostly based on `mamona `_ project.\nThis app was written because there was not a single reliable or simple to use payment processor dedicated to django.\nYou can refer to other payment modules which does not meet our needs:\n`Satchmo `_,\n`python-payflowpro `_,\n`django-authorizenet `_,\n`mamona `_,\n`django-paypal `_,\n`django-payme `_.\n\n\n\nCredits\n=======\n\nProudly sponsored by `SUNSCRAPERS `_\n\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-djangopackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\n\n\nHistory\n=======\n\n(master branch - current development)\n-------------------------------------\n\n\n\nVersion 1.8.0 (2018-07-24)\n--------------------------\n\n* Updated project structure thanks to cookiecutter-djangopackage\n* New plugin: pay_rest - New PayU API\n* Updated following plugins:\n - payu - legacy API still works on new URL\n* Dropped support for following plugins:\n - epaydk (API no longer functional)\n - moip (will be moved to separate package)\n - transferuj.pl (API no longer functional)\n - przelewy24.pl (API needs update, but no sandbox available anymore)\n* Dropped support for Django <= 1.10\n* Provide support for Django 2.0\n\n\nVersion 1.7.5\n-------------\n* Fixed przelewy24 params (py3 support)\n\nVersion 1.7.4\n-------------\n* Added default apps config getpaid.apps.Config\n* Fixed and refactoring for utils.get_domain, build_absolute_uri,\n settings.GETPAID_SITE_DOMAIN\n* Refactored register_to_payment\n* Refactored build_absolute_uri\n* Refactored and fixes in transferuj backend\n - payment.paid_on uses local TIMEZONE now as opposed to UTC\n - changed params\n - add post method to SuccessView and FailureView\n* Added test models factories\n* Dropped support for Django <=1.6\n\nVersion 1.7.3\n-------------\n* Refactored Dotpay\n* Moved all existing tests to test_project and added more/refactored\n* Fixed utils.import_module\n* Fixed Payu and tests (py3 support)\n* Updated docs\n\nVersion 1.7.2\n-------------\n* Updated coveragerc and travis.yml\n* Added missing mgiration for Payment.status\n\nVersion 1.7.1\n-------------\n* Added coveragerc\n* Updated README\n* Added settings.GETPAID_ORDER_MODEL\n* Added epay.dk support\n* Added initial django migration\n\nVersion 1.7.0\n-------------\n* Refactoring to support for py3 (3.4)\n* Change imports to be relative - fixes #43\n* Add USD to supported currencies in Paymill backend (thanks lauris)\n* Fix a few typos\n\nVersion 1.6.0\n-------------\n* Adding paymill backend\n* PEP 8 improvements\n* Adding support for django 1.5 in test project (+ tests)\n* Fixed issue on `utils.import_name` to allow packages without parents\n* Adding dependency to pytz for przelewy24 backend\n* Refactoring of PayU backend (xml->txt api, better logging) and adding support for non-auto payment accepting\n\nVersion 1.5.1\n-------------\n* Fixing packaging that causes errors with package installation\n\nVersion 1.5.0\n-------------\n* Adding new backend - Przelewy24.pl (thanks to IssueStand.com funding)\n* Fixing packaging package data (now using only MANIFEST.in)\n\nVersion 1.4.0\n-------------\n* Cleaned version 1.3 from minor issues before implementing new backends\n* Brazilian backend moip\n* Updated PL translation\n* Added brazilian portuguese translation\n* Storing payment external id and description in the database (warning: database migration needed!)\n* Transferuj backend can now predefine interface language when redirecting\n* POST method supported on redirect to payment\n\nVersion 1.3.0\n-------------\n* Logotypes support in new payment form\n* Fixing packaging\n\nVersion 1.2\n-----------\n* Dotpay backend added\n* Hooks for backends to accept email and user name\n* Refactoring\n\nVersion 1.1\n-----------\n* PayU backend added\n* Lots of documentation\n* Refactoring\n\nVersion 1.0\n-----------\n* First stable version\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/django-getpaid/django-getpaid", "keywords": "django-getpaid", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-getpaid", "package_url": "https://pypi.org/project/django-getpaid/", "platform": "", "project_url": "https://pypi.org/project/django-getpaid/", "project_urls": { "Homepage": "https://github.com/django-getpaid/django-getpaid" }, "release_url": "https://pypi.org/project/django-getpaid/1.8.0.1/", "requires_dist": [ "django-model-utils (>=2.0)", "django-celery (>=3.0.11); extra == 'payu'" ], "requires_python": "", "summary": "Multi-broker payment processor for Django", "version": "1.8.0.1" }, "last_serial": 5734979, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a128a2d4efae43ab0ed29a4507b2032b", "sha256": "3165299dd8b048ddeac38de26e2b546ab5176ce36361d71ea8888f0abcdd463f" }, "downloads": -1, "filename": "django-getpaid-1.0.tar.gz", "has_sig": false, "md5_digest": "a128a2d4efae43ab0ed29a4507b2032b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8064, "upload_time": "2012-07-19T20:28:20", "url": "https://files.pythonhosted.org/packages/b5/3e/62bf91ae2aa550b00b89fc711f870ef060b7bf8a42264357443fddfc0614/django-getpaid-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "59823af1546bfedab07ffbcfd5d83d25", "sha256": "e736782883e9aa99ec7a4f7eed303d37dea982f538597a1dadc7a0906f548286" }, "downloads": -1, "filename": "django-getpaid-1.0.1.tar.gz", "has_sig": false, "md5_digest": "59823af1546bfedab07ffbcfd5d83d25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4528, "upload_time": "2012-07-19T20:30:24", "url": "https://files.pythonhosted.org/packages/a9/e0/2acc3fee936764457c2394d11c25681044e1714440a3f8df598ceb41c3fe/django-getpaid-1.0.1.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "4467751ca9eb4b2e79b55a02a2286556", "sha256": "761cb9ea1b992b9a5aa701d1f01a17617984c22f7250a7521c89bdc0378a4665" }, "downloads": -1, "filename": "django-getpaid-1.1.tar.gz", "has_sig": false, "md5_digest": "4467751ca9eb4b2e79b55a02a2286556", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8087, "upload_time": "2012-08-05T20:59:57", "url": "https://files.pythonhosted.org/packages/df/4d/19cb062c1bcd0525e01ccb7e7632ad297debf8442cc91bebf691329f3fb3/django-getpaid-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "12b30514c692931db52b0e55da58d978", "sha256": "1c010fa2ccf961665770317a3d994ffded7695cc26a636c59307ff665f5b5f54" }, "downloads": -1, "filename": "django-getpaid-1.1.1.tar.gz", "has_sig": false, "md5_digest": "12b30514c692931db52b0e55da58d978", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19398, "upload_time": "2012-08-06T12:14:36", "url": "https://files.pythonhosted.org/packages/9b/56/02c73b0e28a338f0fee53dd2debefdbc3e553f02f82be0a1f0719db1fe9a/django-getpaid-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "067f3c015922491a6941e62caa7cc895", "sha256": "89fad0431375f86b021d78e04484201d7586d6fbe40a606d6d097e750597a1b0" }, "downloads": -1, "filename": "django-getpaid-1.1.2.tar.gz", "has_sig": false, "md5_digest": "067f3c015922491a6941e62caa7cc895", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19417, "upload_time": "2012-10-31T18:41:50", "url": "https://files.pythonhosted.org/packages/13/c4/684c69bcd2cfae774df12bc825fdcdbe4e11621f3e8d137362af29e30743/django-getpaid-1.1.2.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "0bb2775e51377d734f1e00dbcf8d36ad", "sha256": "464e1f38336e89fab5349538ca18ef6350546e524e92400686f8c8a194929eba" }, "downloads": -1, "filename": "django-getpaid-1.3.0.tar.gz", "has_sig": false, "md5_digest": "0bb2775e51377d734f1e00dbcf8d36ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22749, "upload_time": "2012-11-20T07:29:36", "url": "https://files.pythonhosted.org/packages/30/e3/cfe6796b0e1ba1a2a625b8581823a50115fe29f454384a446a801763e90c/django-getpaid-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "f96b0f0c67ba744e90ea612953e5cbe6", "sha256": "0314652f7d13f9e76481df35ade8f3e01549eeb8d86bcf6ea66bf8c586b3e12a" }, "downloads": -1, "filename": "django-getpaid-1.4.0.tar.gz", "has_sig": false, "md5_digest": "f96b0f0c67ba744e90ea612953e5cbe6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47001, "upload_time": "2013-04-18T17:12:09", "url": "https://files.pythonhosted.org/packages/af/f7/bb55fb36eb114d8c67caacfc22f8bf0207a5fca0e571480ac478f90b5e36/django-getpaid-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "6dbc31f4909a648f2baba3fc12b93fd0", "sha256": "1c93f2ff5fe8ac92986a0ed5c2da7db874eef32fe4ab925fa03d75689bbf3c9c" }, "downloads": -1, "filename": "django-getpaid-1.5.0.tar.gz", "has_sig": false, "md5_digest": "6dbc31f4909a648f2baba3fc12b93fd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58721, "upload_time": "2013-05-11T17:36:32", "url": "https://files.pythonhosted.org/packages/15/a5/37b39a3624014b3f85e88a8fc2408e6ebdf72e4b0552359a4f7d15a1a2be/django-getpaid-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "1b8062d590830595a586e22bdc76fcad", "sha256": "4663201bd1fcc0f9691579e1c138159946b0f0f19da88adda837f2e29003ece9" }, "downloads": -1, "filename": "django-getpaid-1.5.1.tar.gz", "has_sig": false, "md5_digest": "1b8062d590830595a586e22bdc76fcad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59049, "upload_time": "2013-05-27T14:22:38", "url": "https://files.pythonhosted.org/packages/5e/cd/3f6aa408a4d1027705dacdd466cf1f4793a87e8608628fb5f4b2276cc49a/django-getpaid-1.5.1.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "aaac6957db5afc8faa8b1df1dc48d4c1", "sha256": "54ee585a74174684082cfcca030c5c19c50e50f393913dd96ced35175bb46d9f" }, "downloads": -1, "filename": "django-getpaid-1.6.0.tar.gz", "has_sig": false, "md5_digest": "aaac6957db5afc8faa8b1df1dc48d4c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68340, "upload_time": "2013-09-20T18:06:43", "url": "https://files.pythonhosted.org/packages/b3/b6/2d2bb19cc01cafaa953eaff34e335201f8869f0731f0271302eafcbe7092/django-getpaid-1.6.0.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "b20ca750d12db0a5147dc64f0d3aba2d", "sha256": "040da739e42bc09866868e903f862b71f0364c72faa1b4f03976dbd2f56c8dfc" }, "downloads": -1, "filename": "django_getpaid-1.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b20ca750d12db0a5147dc64f0d3aba2d", "packagetype": "bdist_wheel", "python_version": "any", "requires_python": null, "size": 94755, "upload_time": "2015-08-03T13:11:05", "url": "https://files.pythonhosted.org/packages/59/28/cbd239bb5ce6b18da834e09e14779c884d3cfec469dca7c9d2bf55fc6fb5/django_getpaid-1.7.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79a1cf9445b2317842cba0d3c776faff", "sha256": "95545e1fa44600dc00423a6a700a52e84f3a8aca947575db8ccb937474f7bb78" }, "downloads": -1, "filename": "django-getpaid-1.7.2.tar.gz", "has_sig": false, "md5_digest": "79a1cf9445b2317842cba0d3c776faff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71201, "upload_time": "2015-08-03T13:12:01", "url": "https://files.pythonhosted.org/packages/1a/d4/d921994cdd30583608e6b98c68bb89af282ed69321ad09e9d74eb4f602d3/django-getpaid-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "c623852c5d69cf08852af1e3c223910c", "sha256": "1265413ecae5b3c71858ccc7f875ee3731c3f45aaf8f101e84af5668af50c6f4" }, "downloads": -1, "filename": "django-getpaid-1.7.3.tar.gz", "has_sig": false, "md5_digest": "c623852c5d69cf08852af1e3c223910c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66902, "upload_time": "2015-11-23T22:33:06", "url": "https://files.pythonhosted.org/packages/e8/2c/fbe449d350b54fcaed08365c48ae8747f5513e5aba4cd4f1cb8cbf01eb8c/django-getpaid-1.7.3.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "f317bc8db4720167064bd333aad3b4ba", "sha256": "2d151fdb08211516599c431402da9176b57a3b1be2da29834fb2295ece0f3cfe" }, "downloads": -1, "filename": "django-getpaid-1.7.6.tar.gz", "has_sig": false, "md5_digest": "f317bc8db4720167064bd333aad3b4ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67544, "upload_time": "2016-07-14T21:06:55", "url": "https://files.pythonhosted.org/packages/e4/e1/113eb3d60fbbc1ff3d19ac1c910c60a4950371bd23a892345ac390afd48a/django-getpaid-1.7.6.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "91a77988c9101ce8ed331a967570441e", "sha256": "a2126cac92206367ebbd675f0f1af8ea22efd287acf2633ff88c76d0e2d0854f" }, "downloads": -1, "filename": "django_getpaid-1.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91a77988c9101ce8ed331a967570441e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 49824, "upload_time": "2018-07-24T15:46:31", "url": "https://files.pythonhosted.org/packages/ca/92/c44aabcae7319c35688e1334eadbc7556f76350b4d58ce24b3f90cb1b182/django_getpaid-1.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57a00bbe85c92816da6728b270f2cd1f", "sha256": "6de0958b20b4679afb56aa784dcc2a2896291b0fbccae63dd1a1214d0ac496eb" }, "downloads": -1, "filename": "django-getpaid-1.8.0.tar.gz", "has_sig": false, "md5_digest": "57a00bbe85c92816da6728b270f2cd1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46878, "upload_time": "2018-07-24T15:46:33", "url": "https://files.pythonhosted.org/packages/3a/d5/71f8c8ed3c159770c6d8554a9fb8eeb1d2a82184a72e851b7a66fe148f28/django-getpaid-1.8.0.tar.gz" } ], "1.8.0.1": [ { "comment_text": "", "digests": { "md5": "03bd414e460903f06fa11ed66ac4ce82", "sha256": "8655c2d3ea53709774765f20a1093a421b38d06cacd30bc3c7636062e6fc146b" }, "downloads": -1, "filename": "django_getpaid-1.8.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "03bd414e460903f06fa11ed66ac4ce82", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 49842, "upload_time": "2018-07-24T17:40:38", "url": "https://files.pythonhosted.org/packages/43/c5/c7492942a9094f3648cb8cd6e43e119fd49269b8ed4a9f3438f74570ab27/django_getpaid-1.8.0.1-py2.py3-none-any.whl" } ], "2.0.0rc1": [ { "comment_text": "", "digests": { "md5": "9d2a0ebb919baed318970168794cc23b", "sha256": "6c0ecbc91e6c700efefa14aa241e8571c16e9566c0baa1ec2bd64afb04f2f1ff" }, "downloads": -1, "filename": "django_getpaid-2.0.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d2a0ebb919baed318970168794cc23b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19686, "upload_time": "2019-08-26T06:18:24", "url": "https://files.pythonhosted.org/packages/7b/7b/14e29fcdf7c823117dcf59e05ff9e4b97a77f56c4406608d95505f50d559/django_getpaid-2.0.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cdae96b23a2a1e8f23d908039fd64bd", "sha256": "61be3cf9ead43c30e118491fa0243b2b658772c15d37838b27faf45300356987" }, "downloads": -1, "filename": "django-getpaid-2.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "5cdae96b23a2a1e8f23d908039fd64bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15719, "upload_time": "2019-08-26T06:18:39", "url": "https://files.pythonhosted.org/packages/89/67/90e4ce367530e4491c99f73fd666259b99d82bea3785d6f848d07e894eea/django-getpaid-2.0.0rc1.tar.gz" } ], "2.0.0rc2": [ { "comment_text": "", "digests": { "md5": "df4b35a5c80275401bf976e6d2ee0f5c", "sha256": "73814624396c482f2d066a8500aabae45fceacb097df92ec471c878788e450ee" }, "downloads": -1, "filename": "django_getpaid-2.0.0rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "df4b35a5c80275401bf976e6d2ee0f5c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19702, "upload_time": "2019-08-27T06:50:42", "url": "https://files.pythonhosted.org/packages/98/09/540f9dafde175fe6deefdc6a61bc4569e0bdda5c07c7093caa35fee0cd04/django_getpaid-2.0.0rc2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "400a816703d244a6ff294dd62c09ac7f", "sha256": "16e50a5034d480e0b283b2f152819d06fb556f9236ba4966cee621da858fbe7c" }, "downloads": -1, "filename": "django-getpaid-2.0.0rc2.tar.gz", "has_sig": false, "md5_digest": "400a816703d244a6ff294dd62c09ac7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15752, "upload_time": "2019-08-27T06:50:58", "url": "https://files.pythonhosted.org/packages/cf/e7/e40d679806abbb8744a57c6b8f820296e7e6607bd2d2ab2be4f61842bafa/django-getpaid-2.0.0rc2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "03bd414e460903f06fa11ed66ac4ce82", "sha256": "8655c2d3ea53709774765f20a1093a421b38d06cacd30bc3c7636062e6fc146b" }, "downloads": -1, "filename": "django_getpaid-1.8.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "03bd414e460903f06fa11ed66ac4ce82", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 49842, "upload_time": "2018-07-24T17:40:38", "url": "https://files.pythonhosted.org/packages/43/c5/c7492942a9094f3648cb8cd6e43e119fd49269b8ed4a9f3438f74570ab27/django_getpaid-1.8.0.1-py2.py3-none-any.whl" } ] }