{ "info": { "author": "Greg Brown", "author_email": "greg@gregbrown.co.nz", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "DPS payment processing for django. (Almost) completely agnostic about\nyour models. By default, you never handle credit card details. Handles\none-off and recurring payments.\n\n|Circle CI| |Latest Version|\n\nUsage:\n======\n\nYou'll need to add a few items in your ``settings.py``: ``PXPAY_USERID``\nand ``PXPAY_KEY`` for interactive payments and recurring payment setup,\nand ``PXPOST_USERID`` and ``PXPOST_KEY`` for non-interactive and\nrecurring billing.\n\nYou'll also need to ``include('dps.urls')`` in your urls somewhere.\n\nThen, just call this function:\n\n``dps.transactions.make_payment(obj, request=None, attrs={})`` where:\n\n- ``obj`` implements ``dps.models.BasicTransactionProtocol`` or\n ``dps.models.FullTransactionProtocol``.\n\n- ``request`` is a Django request object or ``None``.\n\nIf you intend to make an interactive payment e.g. by redirecting the\nuser to the DPS page, then provide a request. (It's needed to build\nfully-specified URLs for DPS to redirect back to.)\n\nIf ``request`` is ``None``, the function will attempt to find and use a\nstored billing token (as described in the protocol implementations in\n``dps/models.py``) and make a non-interactive recurring payment.\n\n- ``attrs`` is a dictionary of PxPay or PxPost request parameters to be\n merged in to the transaction request to DPS.\n\nThis allows you to do anything, really, as you could override default\nparameters, provide credit-card details directly, specify a refund\nrather than purchase \u2013 anything DPS supports.\n\nTo put an accessor/relationship on your own model to its transactions,\njust use GenericRelation:\n\n::\n\n class MyModel(models.Model):\n ...\n transactions = generic.GenericRelation(Transaction)\n\nThere's also a ``dps.admin.TransactionInlineAdmin`` which you can use\nwith your own model admins like so:\n\n::\n\n class MyModelAdmin(admin.ModelAdmin):\n ...\n inlines = [TransactionInlineAdmin]\n\n admin.site.register(MyModel, MyModelAdmin)\n\nRunning tests\n-------------\n\nCreate a file called tests/dps\\_settings.py and add ``PXPAY_USERID`` and\n``PXPAY_KEY`` values - you'll need valid PXPAY testing credentials.\nThen, assuming virtualenvwrapper is installed:\n\n::\n\n > cd path-to/django-dps\n > mkvirtualenv test\n > pip install requests\n > ./setup.py install\n > ./runtests.py\n\nTo run the tests across all supported Python and Django versions, use\n``tox``:\n\n::\n\n > cd path-to/django-dps\n > mkvirtualenv test\n > pip install tox\n > tox\n\n.. |Circle CI| image:: https://circleci.com/gh/gregplaysguitar/django-dps.svg?style=svg\n :target: https://circleci.com/gh/gregplaysguitar/django-dps\n.. |Latest Version| image:: https://img.shields.io/pypi/v/django-dps.svg?style=flat\n :target: https://pypi.python.org/pypi/django-dps/\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gregplaysguitar/django-dps/", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "django-dps", "package_url": "https://pypi.org/project/django-dps/", "platform": "", "project_url": "https://pypi.org/project/django-dps/", "project_urls": { "Homepage": "https://github.com/gregplaysguitar/django-dps/" }, "release_url": "https://pypi.org/project/django-dps/0.8/", "requires_dist": null, "requires_python": "", "summary": "Django integrations for the DPS payment gateway", "version": "0.8" }, "last_serial": 2980740, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "0153d4028c98c62519031feb68ed7c04", "sha256": "8dc50e46164e0b1478b000b91597b4fdc2c07181abeb5e351b5a53bc54a73e8d" }, "downloads": -1, "filename": "django-dps-0.3.tar.gz", "has_sig": false, "md5_digest": "0153d4028c98c62519031feb68ed7c04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10619, "upload_time": "2015-08-05T22:45:56", "url": "https://files.pythonhosted.org/packages/db/a6/09e78fedf04d30a35977c6954a917a8b9b7e5ea80b8f629345991ae8a3d6/django-dps-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "dcd7c628080dfa85cf9411c1de44c321", "sha256": "85f7fa4d8c2975757c57a6b008463cfb5295808ea11ed24ccc1f0f1fac38c94a" }, "downloads": -1, "filename": "django-dps-0.4.tar.gz", "has_sig": false, "md5_digest": "dcd7c628080dfa85cf9411c1de44c321", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12038, "upload_time": "2015-08-20T23:32:05", "url": "https://files.pythonhosted.org/packages/db/16/82b90fed80841d2d41df6704bf819884146b9de0d1ec0ba28dcf247eeb25/django-dps-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "7133d94b69d88e4a148b6a2421f7974c", "sha256": "c2d9e779e235e6e0c66188b4efc4d612907717f4fba2151aa014f486b5a79c84" }, "downloads": -1, "filename": "django-dps-0.5.tar.gz", "has_sig": false, "md5_digest": "7133d94b69d88e4a148b6a2421f7974c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12293, "upload_time": "2016-05-24T22:14:45", "url": "https://files.pythonhosted.org/packages/d6/a7/7f82183e6106de040f356fef5cf41e44784401f1156788f5ef376315cb5d/django-dps-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "b3bd52b18dfa69cff89c4c171bcc6ec0", "sha256": "80204ba21ec3840bd50364751856b34fe00b67471aaf736f33f819bba1a291b6" }, "downloads": -1, "filename": "django-dps-0.6.tar.gz", "has_sig": false, "md5_digest": "b3bd52b18dfa69cff89c4c171bcc6ec0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12675, "upload_time": "2016-12-13T03:01:51", "url": "https://files.pythonhosted.org/packages/ec/2a/b87a158da770265a960d0e45468ad6a6ed7c699326b72e8bbd4823074bb9/django-dps-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "99f1c0c606aa456bdaffb69fc6e485af", "sha256": "5ebf29af68888ca06284a44b2682ee6f9f4eb034f46fe3c35fd57b3c73b2d81a" }, "downloads": -1, "filename": "django-dps-0.7.tar.gz", "has_sig": false, "md5_digest": "99f1c0c606aa456bdaffb69fc6e485af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12743, "upload_time": "2016-12-22T01:49:42", "url": "https://files.pythonhosted.org/packages/8f/27/c02af44b91a2fee7b7fb93f55b5d19ba98bb835287f0a9f997fa36d8be9c/django-dps-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "913df624506e4f446daffa197c19d572", "sha256": "8fd758ac64c5520a4784af82ca23ef2a94e2317b579c2299c727589491c887fa" }, "downloads": -1, "filename": "django-dps-0.8.tar.gz", "has_sig": false, "md5_digest": "913df624506e4f446daffa197c19d572", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13092, "upload_time": "2017-06-26T21:45:34", "url": "https://files.pythonhosted.org/packages/51/56/9f449f1f8292ba9a428af15db4cf4a9fb905e97bb883c2a70a17804dca90/django-dps-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "913df624506e4f446daffa197c19d572", "sha256": "8fd758ac64c5520a4784af82ca23ef2a94e2317b579c2299c727589491c887fa" }, "downloads": -1, "filename": "django-dps-0.8.tar.gz", "has_sig": false, "md5_digest": "913df624506e4f446daffa197c19d572", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13092, "upload_time": "2017-06-26T21:45:34", "url": "https://files.pythonhosted.org/packages/51/56/9f449f1f8292ba9a428af15db4cf4a9fb905e97bb883c2a70a17804dca90/django-dps-0.8.tar.gz" } ] }