{ "info": { "author": "Henri Hulski", "author_email": "henri@openhomeo.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "cartridge_braintree\n===================\n\nBraintree Payments processing for Mezzanine/Cartridge.\nSupports Cartridge 0.11 and newer.\n\nInstructions for use\n--------------------\n\n1. Install cartridge_braintree::\n\n pip install cartridge_braintree\n\n If you need the correct sorting of not ASCII country names use::\n\n pip install cartridge_braintree[countries_utf8_sorting]\n\n This will add 'pyuca' to the requirements.\n\n2. Add 'cartridge_braintree' to your ``INSTALLED_APPS``. List it higher than\n 'cartridge.shop', otherwise the cartridge_braintree template will\n not be selected.\n\n3. Set up the following settings in your ``settings.py`` or ``local_settings.py``::\n\n BRAINTREE_MERCHANT_ID = \n BRAINTREE_PUBLIC_KEY = \n BRAINTREE_PRIVATE_KEY = \n\n .. Note::\n When ``DEBUG`` is ``True`` the *Braintree Sandbox environment* will be\n used, otherwise the *Braintree Production environment* is used.\n\n See also\n https://articles.braintreepayments.com/control-panel/important-gateway-credentials\n\n4. cartridge_braintree uses a modified checkout form, which does the following:\n\n - Changes the shipping and billing country fields to a Select\n widget. This ensures that the country selected can be converted to\n a valid code for Braintree's payment processing.\n The supported countries can be set in ``settings.SHOP_SUPPORTED_COUNTRIES``,\n which is a list of alpha2 country codes and/or tuples in the form\n (alpha2, country_name).\n\n For example if you want to select the countries in the EU area use::\n\n SHOP_SUPPORTED_COUNTRIES = [\n 'AL', 'AT', 'BA', 'BE', 'BG', 'CH', 'CY', 'DE', 'DK', 'EE', 'ES',\n 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IS', 'IT', 'LT', 'LV',\n 'MK', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'RS', 'SE', 'SI'\n ]\n\n A pre-selected country in the select field can be specified using\n ``settings.SHOP_DEFAULT_COUNTRY`` as an alpha2 code.\n By default the user is expected to choose their country (set to ``None``).\n\n The country/countries (as alpha2 codes) listed in\n ``settings.SHOP_PRIMARY_COUNTRIES`` will show up at the top of the\n country selection fields, after the ``settings.SHOP_DEFAULT_COUNTRY``\n if set.\n\n - Credit Card number and CCV fields are rendered using the\n ``NoNameTextInput`` widget so that the data is not submitted to the\n server. Javascript processes these fields to create a\n ``payment_method_nonce``, which is then stored in a hidden form\n element.\n\n - Uses `jquery.payment `_ from stripe\n for client-side validation of the payment form and submits the errors in the\n hidden ``braintree_errors`` field to the server to handle them as Django errors.\n\n See\n https://developers.braintreepayments.com/guides/transactions/python\n\n5. Set the payment handler to be the Braintree payment handler::\n\n SHOP_HANDLER_PAYMENT = 'cartridge_braintree.braintree_payment.payment_handler'\n\n If you are overriding the templates in your own apps, then be sure to\n include the relevant ``braintreejs.html`` template.\n\n See https://www.braintreepayments.com/docs/python/guide/getting_paid\n for Braintree's tutorial.\n\n6. Include ``cartridge_braintree.urls`` for ``shop/checkout`` in ``urls.py``\n before Cartridge urls::\n\n urlpatterns += [\n\n # cartridge_braintree URLs.\n url(\"^shop/(?=checkout(/?)$)\", include(\"cartridge_braintree.urls\")),\n\n # Cartridge URLs.\n url(\"^shop/\", include(\"cartridge.shop.urls\")),\n url(\"^account/orders/$\", order_history, name=\"shop_order_history\"),\n\n7. If you want to use PayPal payments with Braintree activate them in\n the Admin Site Settings and set the currency to use with PayPal.\n\n Alternatively you can set them in ``settings.py`` in the form::\n\n BRAINTREE_PAYPAL_ACTIVATE = True\n BRAINTREE_PAYPAL_CURRENCY = \"EUR\"\n\n In this case the settings will not be shown in the Admin.\n\n8. Optionally add logging to your Django configuration if you want to have more details\n on transactions::\n\n LOGGING = {\n 'version': 1,\n 'disable_existing_loggers': False,\n 'handlers': {\n 'braintree_file': {\n 'class': 'logging.FileHandler',\n 'filename': '/path/to/django/braintree.log',\n },\n },\n 'loggers': {\n 'braintree_payment': {\n 'handlers': ['braintree_file'],\n 'level': 'DEBUG',\n },\n },\n }\n\n See https://docs.djangoproject.com/en/1.10/topics/logging/#configuring-logging for all\n configuration options\n\n Log levels are as follows:\n - Client token creation: info\n - Transaction start: debug\n - Transaction complete: debug\n - Transaction fail: warning\n\n Confidential information is never output to the logger.\n\n\nCHANGES\n=======\n\n1.1.0 (2016-10-21)\n------------------\n\n- Add logging to payment process. [ianare]\n- **Breaking change**: Add ``SHOP_DEFAULT_COUNTRY`` setting and by default\n force the user to select a country (set to ``True`` for v1.0.0 behavior). [ianare]\n\n\n1.0.0 (2016-07-08)\n------------------\n\n- **Breaking change**: Simplify urls setup. [ryneeverett]\n\n When upgrading to 1.0.0 change cartridge_braintree urls in ``urls.py`` to::\n\n url(\"^shop/(?=checkout(/?)$)\", include(\"cartridge_braintree.urls\")),\n\n- Make it a stable release version as it's already well tested.\n- Introduce `semantic versioning`_.\n- Use zest.releaser for release.\n\n.. _semantic versioning: http://semver.org\n\n1.0b17 (2016-04-17)\n-------------------\n\n- Upgrade jquery.payment.js to v1.3.3. [ryneeverett]\n\n1.0b16 (2016-04-17)\n-------------------\n\n- Fix documentation bug.\n It should be ``BRAINTREE_MERCHANT_ID`` not ``BRAINTREE_MERCHANT``\n in ``settings.py``.\n\n1.0b16 (2016-04-17)\n-------------------\n\n- Fix documentation bug.\n It should be ``BRAINTREE_MERCHANT_ID`` not ``BRAINTREE_MERCHANT``\n in ``settings.py``.\n\n1.0b14 (2016-03-14)\n-------------------\n\n- Replace the payform jQuery plugin with\n `jquery.payment `_\n from stripe.\n This fixes some bugs with card number and CCV formatting.\n\n1.0b13 (2016-02-03)\n-------------------\n\n- Move static content to subfolder.\n- Clean up translation files.\n- Minor fixes and javascript optimizations.\n\n1.0b10 (2016-01-30)\n-------------------\n\n- Overextents templates instead of overriding them.\n- Show Card payment form when Django returns errors.\n- Add placeholders for card number and CCV\n and trigger numeric keyboard on iPhone.\n- Add dependency on Cartridge 0.11.\n Drop support for older Cartridge versions.\n- Minor fixes.\n\n1.0b8 (2016-01-25)\n------------------\n\n- Upgrade to Cartridge 0.11.\n- Clean up the template directory.\n\n1.0b4 (2016-01-21)\n------------------\n\nThis is an entire rewrite release of the whole app by Henri Hulski.\n\n- Rewriting the app to match the new Braintree v.zero API.\n- Refactor country support for billing/shipping inspired by\n `django-countries `_.\n and using their translations of country names.\n- Add client site credit card validation and number formatting using the\n jQuery plugin from `payform `_.\n- Include PayPal payments.\n- Add country names translations from django-countries.\n Full translation of the app for German, French and Polish.\n- Change license from MIT to BSD.\n- Make it a full PyPI package.\n\nInitial release (2013-07-28)\n----------------------------\n\nInitial release by Danny Sag (molokov).", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/henri-hulski/cartridge_braintree", "keywords": "django mezzanine cartridge payment", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "cartridge-braintree", "package_url": "https://pypi.org/project/cartridge-braintree/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cartridge-braintree/", "project_urls": { "Homepage": "https://github.com/henri-hulski/cartridge_braintree" }, "release_url": "https://pypi.org/project/cartridge-braintree/1.1.0/", "requires_dist": [ "braintree", "cartridge (>=0.11)", "pyuca; extra == 'countries_utf8_sorting'" ], "requires_python": "", "summary": "Braintree Payments processing for Mezzanine/Cartridge", "version": "1.1.0" }, "last_serial": 3509121, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "887d87576a05795a26dab8a8b21acd37", "sha256": "4b4c3c1af96315f1e28016c526df77a2d6ba065474d01ab0abd4029165a36563" }, "downloads": -1, "filename": "cartridge_braintree-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "887d87576a05795a26dab8a8b21acd37", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 347517, "upload_time": "2016-07-08T22:04:02", "url": "https://files.pythonhosted.org/packages/9e/ee/b7e6c14c3010fbcd901b5252f6cabc10a12da12d697b988066866759035c/cartridge_braintree-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2fd8a9de4207ca0c2509187b8e46b3bc", "sha256": "56cbf2daa7f9458c81a2cb97ef2a6641ee61c1dba609476ca7fd17ff8ed891f7" }, "downloads": -1, "filename": "cartridge_braintree-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2fd8a9de4207ca0c2509187b8e46b3bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 231974, "upload_time": "2016-07-08T22:04:31", "url": "https://files.pythonhosted.org/packages/cb/1f/22cce940a85bb66663882152001449aa61626d320b74c022ac8055fd38bc/cartridge_braintree-1.0.0.tar.gz" } ], "1.0b10": [ { "comment_text": "", "digests": { "md5": "eef086c86dd3a1d47d75f335706e8366", "sha256": "d64204425c41f7fd6c2cccd61c8a4787ebbf3ccbe95cf1e34119bad9c3846500" }, "downloads": -1, "filename": "cartridge_braintree-1.0b10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eef086c86dd3a1d47d75f335706e8366", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 374808, "upload_time": "2016-01-30T20:54:23", "url": "https://files.pythonhosted.org/packages/63/f6/205d11005e41db4f6e1de631368994cbb6e237ba512945e2baa5b1d74070/cartridge_braintree-1.0b10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d51b63d8d803d0f84b565332e2f4554", "sha256": "ed57c404f78771d617dfced0aec34f3d292c6fdebe7c0dde2a6cee07bb708c5b" }, "downloads": -1, "filename": "cartridge_braintree-1.0b10.tar.gz", "has_sig": false, "md5_digest": "6d51b63d8d803d0f84b565332e2f4554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 293445, "upload_time": "2016-01-30T20:56:10", "url": "https://files.pythonhosted.org/packages/e7/e6/4c38f8bc60dd153d48757f474bcab73ef9909bb33f993a98a6bb0144fd97/cartridge_braintree-1.0b10.tar.gz" } ], "1.0b13": [ { "comment_text": "", "digests": { "md5": "b7d571a753eda904fab21658daddc05e", "sha256": "b758fe83bf9bb9775284bc46b887a0cff6c039d151a62550ed50ee19f68b6918" }, "downloads": -1, "filename": "cartridge_braintree-1.0b13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b7d571a753eda904fab21658daddc05e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 350144, "upload_time": "2016-02-03T13:14:07", "url": "https://files.pythonhosted.org/packages/95/b6/fcd93b6439291d9770176ac15320f49ba588d83fccca72b0c7bf619a3776/cartridge_braintree-1.0b13-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d13668f7b7b1614881180b8dc4b5227", "sha256": "9c93d7f6fd77f0611211bc5ff442c14b8ff3ca2be3e72f6e3f1b8088bfdd2a7f" }, "downloads": -1, "filename": "cartridge_braintree-1.0b13.tar.gz", "has_sig": false, "md5_digest": "0d13668f7b7b1614881180b8dc4b5227", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 238393, "upload_time": "2016-02-03T13:14:53", "url": "https://files.pythonhosted.org/packages/2a/25/67b78eb4d3eb4885bd7f0c8add24f0285d4050ca29e4752122fe354c2dbd/cartridge_braintree-1.0b13.tar.gz" } ], "1.0b14": [ { "comment_text": "", "digests": { "md5": "fbbe9d201ec27d26f97328fdb6411e68", "sha256": "026522a1e0ae5b1add5c0815c3d0ace2990ab9592d5de6af8abac578e6003447" }, "downloads": -1, "filename": "cartridge_braintree-1.0b14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fbbe9d201ec27d26f97328fdb6411e68", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 347281, "upload_time": "2016-03-14T16:39:56", "url": "https://files.pythonhosted.org/packages/6e/8d/c63795652398a4e0e519eb91426c295439770c839b0d3f95c4d696f2c26f/cartridge_braintree-1.0b14-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1abdedce39d1bed2b000e55218dd7f8c", "sha256": "75e340cb6c572b4153c21ed6e98b998d7df41d37afa790e99801faf38e28d0c5" }, "downloads": -1, "filename": "cartridge_braintree-1.0b14.tar.gz", "has_sig": false, "md5_digest": "1abdedce39d1bed2b000e55218dd7f8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 231712, "upload_time": "2016-03-14T16:40:27", "url": "https://files.pythonhosted.org/packages/79/e5/3ee6ad601d14f24f2db62ef5503b75307e1a3c42b193f20fe7d995354024/cartridge_braintree-1.0b14.tar.gz" } ], "1.0b16": [ { "comment_text": "", "digests": { "md5": "15e1779eda05318be9e654ed0c143e23", "sha256": "09a922064b32c201bdeccd8ee1720f615dbe11c08ae03b350bfe222f81a77a51" }, "downloads": -1, "filename": "cartridge_braintree-1.0b16-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15e1779eda05318be9e654ed0c143e23", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 347386, "upload_time": "2016-04-17T09:26:24", "url": "https://files.pythonhosted.org/packages/d9/da/5539c5e2ccf3eb9ad973ecddf0e96b1fbf5880250b037fea2205c6688678/cartridge_braintree-1.0b16-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d9de9e7c0252d0cdbef30ba11761501d", "sha256": "b7610e2cfe98e6a30ed62e664ed6d24789763f0fca247e2d86e401f63dc3a16e" }, "downloads": -1, "filename": "cartridge_braintree-1.0b16.tar.gz", "has_sig": false, "md5_digest": "d9de9e7c0252d0cdbef30ba11761501d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 231777, "upload_time": "2016-04-17T09:26:58", "url": "https://files.pythonhosted.org/packages/a7/3d/9819a38930c71185f1947674849d94d1e6649c904e30c1d88aa6b92a38d1/cartridge_braintree-1.0b16.tar.gz" } ], "1.0b17": [ { "comment_text": "", "digests": { "md5": "f171ad3ac9860fa32487343fbb081cf5", "sha256": "1d6ed884139ab16d75adfceab025b53ea79d62a9e3f5ccc96fbe883ee660b110" }, "downloads": -1, "filename": "cartridge_braintree-1.0b17-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f171ad3ac9860fa32487343fbb081cf5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 347558, "upload_time": "2016-04-28T11:54:29", "url": "https://files.pythonhosted.org/packages/bb/b5/90b6ddc7b51e0257a5e43b8a0e98211c9c3013e5a46c18a0415ca7df4cbe/cartridge_braintree-1.0b17-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d09249a8f4b3f5429d6b19595f4c0880", "sha256": "d8afc4b663d713ac19bee20ea0d479ee38eb71afdc96e90737aca8184741ba4b" }, "downloads": -1, "filename": "cartridge_braintree-1.0b17.tar.gz", "has_sig": false, "md5_digest": "d09249a8f4b3f5429d6b19595f4c0880", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 231897, "upload_time": "2016-04-28T11:56:00", "url": "https://files.pythonhosted.org/packages/79/25/489db864792908b9b99a033d36261265de10d7d654c9a7a4549387b9762d/cartridge_braintree-1.0b17.tar.gz" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "23e0bb238d9b96beada9744a2ae8b06b", "sha256": "858a4f9cb83cda0b0dbe29e2773f1b88a006e7a188185ff9e97583b2c77d166c" }, "downloads": -1, "filename": "cartridge_braintree-1.0b4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23e0bb238d9b96beada9744a2ae8b06b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 387361, "upload_time": "2016-01-21T22:56:46", "url": "https://files.pythonhosted.org/packages/7a/a7/2abf3360b71e70872e72ba885b34df6c0661c6be7f5f6bb3be189c43beab/cartridge_braintree-1.0b4-py2.py3-none-any.whl" } ], "1.0b8": [ { "comment_text": "", "digests": { "md5": "45926b62561b1e4d23605967974a0713", "sha256": "925ea8a387953f4519aa8941b40a72dc0db0bd46acf7d2c9eef112b50792f1a3" }, "downloads": -1, "filename": "cartridge_braintree-1.0b8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "45926b62561b1e4d23605967974a0713", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 384672, "upload_time": "2016-01-25T02:13:42", "url": "https://files.pythonhosted.org/packages/3a/d9/93ca56ca914973bff586aca70bf1f20db840edd356cb81e22b2ffbadf61f/cartridge_braintree-1.0b8-py2.py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "9daf886cc83d87f74c843652aeef37b5", "sha256": "e08cfb977f3bacd5c431278e699aed6bf678f5f00b41266c08f8beb081ad863c" }, "downloads": -1, "filename": "cartridge_braintree-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9daf886cc83d87f74c843652aeef37b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 349022, "upload_time": "2016-10-20T22:04:10", "url": "https://files.pythonhosted.org/packages/c5/ba/51329084dbb1e4623747595a0df892e42bcc214b5f920470ac6206390f03/cartridge_braintree-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7e5a97984cbe5496b806d836acdc9ba", "sha256": "49e8a766379b81631f8b99a3afa91eefd4f5aa7f8e20ef6a343dafd6a87a6ee9" }, "downloads": -1, "filename": "cartridge_braintree-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a7e5a97984cbe5496b806d836acdc9ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 232974, "upload_time": "2016-10-20T22:04:37", "url": "https://files.pythonhosted.org/packages/28/b0/4864edb6c411133f399aff6442d3ff18f4a7a96e094b03b159efc2c74998/cartridge_braintree-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9daf886cc83d87f74c843652aeef37b5", "sha256": "e08cfb977f3bacd5c431278e699aed6bf678f5f00b41266c08f8beb081ad863c" }, "downloads": -1, "filename": "cartridge_braintree-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9daf886cc83d87f74c843652aeef37b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 349022, "upload_time": "2016-10-20T22:04:10", "url": "https://files.pythonhosted.org/packages/c5/ba/51329084dbb1e4623747595a0df892e42bcc214b5f920470ac6206390f03/cartridge_braintree-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a7e5a97984cbe5496b806d836acdc9ba", "sha256": "49e8a766379b81631f8b99a3afa91eefd4f5aa7f8e20ef6a343dafd6a87a6ee9" }, "downloads": -1, "filename": "cartridge_braintree-1.1.0.tar.gz", "has_sig": false, "md5_digest": "a7e5a97984cbe5496b806d836acdc9ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 232974, "upload_time": "2016-10-20T22:04:37", "url": "https://files.pythonhosted.org/packages/28/b0/4864edb6c411133f399aff6442d3ff18f4a7a96e094b03b159efc2c74998/cartridge_braintree-1.1.0.tar.gz" } ] }