{ "info": { "author": "getpaid community", "author_email": "getpaid-dev@googlegroups.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Office/Business :: Financial", "Topic :: Software Development :: Libraries" ], "description": "This package provides authorizedotnet payment processor functionality for the getpaid framework.\n\n\n=======\nCHANGES\n=======\n\n0.6.8 (2015-11-28)\n------------------\n\n- Update transaction URLs to connect through Akamai.\n [fulv]\n\n0.6.7 (2015-05-29)\n------------------\n\n- Update root CA certs to successfully validate the new certificates being used by\n authorize.net as of 2015-05-27.\n [davisagli]\n\n0.6.6 (2013-12-02)\n------------------\n\n- Store full Authorize.net response as a string rather than an HTTPResponse object.\n [davisagli]\n\n0.6.5 (2012-08-20)\n------------------\n\n- Pass the customer's IP address to Authorize.net for use with the\n Fraud Detection Suite.\n [davisagli]\n\n0.6.4 (2012-07-18)\n------------------\n\n- Broken release.\n\n0.6.3 (2012-07-18)\n------------------\n\n- Broken release.\n\n0.6.2 (2012-06-19)\n------------------\n\n- If Authorize.net held the authorization for review, return a response\n indicating async payment processing.\n [davisagli]\n\n0.6.1 (2011-06-21)\n------------------\n\n- Fix to use the correct getSite in Zope 2.10.\n [davisagli]\n\n0.6.0 (2011-06-15)\n------------------\n\n- Record the response received from authorize.net on an annotation on the\n order, for debugging purposes.\n [davisagli]\n\n- Add option to enable setting the x_test_request flag when one of the known\n test credit card numbers is used. This makes it possible to test the\n integration even if the processor is using the production server.\n [davisagli]\n\n- Patch zc.authorizedotnet to make sure that the correct root certificates\n are checked.\n [davisagli]\n\n0.5.1 (2011-05-18)\n------------------\n\n- Send the credit card CVC code to authorize.net.\n [davisagli]\n\n- Provide additional root certificates needed to validate the SSL certificate\n used by api.authorize.net\n [davisagli]\n\n0.5.0 (2010-05-18)\n------------------\n\n- Added support for Authorize.net's Automated Recurring Billing (API)\n for managing subscription-based payments.\n [davisagli]\n\n- Added tests.\n [davisagli]\n\n0.4.0 (2010-04-07)\n------------------\n\n- Use zope.annotation instead of zope.app.annotation\n [davisagli]\n\n0.3.3 (2009-08-19)\n------------------\n- Record the transaction id returned by authorize.net\n\n0.3.2 (2009-07-22)\n------------------\n- Handle expiration date as a string.\n\n0.3.1 (2009-03-13)\n------------------\n- added M2Crypto in the setup.py dependencies [lucielejard]\n\n0.3 (2008-08-29)\n----------------\n- Added buildout files and general text documents to project root.\n- Removed setup.cfg\n\n0.2 (2008-08-21)\n----------------\n- Eggified package\n\nDetailed Documentation\n**********************\n\nGetPaid Authorize.Net Payment Processor\n=======================================\n\nThe AuthorizeNetAdapter is an implementation of a GetPaid payment processor\nthat can process payments via the Authorize.net APIs.\n\nTest Setup\n----------\n\nIn order to use the AuthorizeNetAdapter, we first need a context that can be\nadapted to IAuthorizeNetOptions to get the keys for accessing the Authorize.net\nAPI. (LOGIN and KEY are initialized in tests.py based on environment variables.\nUse the login Authorize.net)\n\n >>> from zope.interface import implements\n >>> from getpaid.authorizedotnet.interfaces import IAuthorizeNetOptions\n >>> class DummyAuthContext(object):\n ... implements(IAuthorizeNetOptions)\n ... server_url = 'Test'\n ... merchant_id = LOGIN\n ... merchant_key = KEY\n\nWe also need an order that we want to process payments for.\n\n >>> import time\n >>> from getpaid.core import order, item, cart, options, interfaces, payment\n >>> my_cart = cart.ShoppingCart()\n >>> my_cart['abc'] = abc = item.LineItem()\n >>> abc.cost = 22.20; abc.name = 'abc'; abc.quantity = 3\n >>> order = order.Order()\n >>> order.setOrderId('test%s' % int(time.time()))\n >>> order.shopping_cart = my_cart\n >>> order.contact_information = contact = payment.ContactInformation()\n >>> contact.name = 'Harvey Frank'\n >>> contact.phone_number = '2062681235'\n >>> contact.email = 'harvey@example.com'\n >>> order.billing_address = billing = payment.BillingAddress()\n >>> billing.bill_first_line = '1402 3rd Ave.'\n >>> billing.bill_city = 'Seattle'\n >>> billing.bill_state = 'WA'\n >>> billing.bill_postal_code = '98101'\n\nAnd a property bag with details about the payment.\n\n >>> from datetime import datetime, timedelta\n >>> BillingInfo = options.PropertyBag.makeclass(interfaces.IUserPaymentInformation)\n >>> payment = BillingInfo(\n ... name_on_card = 'Harvey Frank',\n ... bill_phone_number = '2062861235',\n ... credit_card_type = 'Visa',\n ... credit_card = '4007000000027',\n ... cc_expiration = datetime.now() + timedelta(365),\n ... cc_cvc = '111',\n ... )\n\nAuthorizing an Order\n--------------------\n\nAuthorization confirms that an order may be processed using the given billing\ninformation.\n\n >>> from getpaid.authorizedotnet.authorizenet import AuthorizeNetAdapter\n >>> authnet = AuthorizeNetAdapter(DummyAuthContext())\n >>> authnet.authorize(order, payment) == interfaces.keys.results_success\n True\n\nCapturing/Charging an Order\n---------------------------\n\nCapturing an order tells Authorize.net to queue payment for settlement. (Actual\nsettlement happens in a daily batch process.)\n\n >>> authnet.capture(order, order.getTotalPrice()) == interfaces.keys.results_success\n True\n\n\nRefunding an Order\n------------------\n\nRefunding an order tells Authorize.net to return the payment to the customer.\n\nRefunds cannot be issued until the original payment has been captured and settled,\nso we don't expect this to succeed in the test.\n\n >>> authnet.refund(order, order.getTotalPrice())\n 'The referenced transaction does not meet the criteria for issuing a credit.'\n\nVoiding an Order\n----------------\n\n\nOrders with recurring line items\n--------------------------------\n\nIf an order whose cart contains a recurring line item is authorized, it will\nresult in the creation of a subscription-based payment using Authorize.net's\nAutomated Recurring Billing (ARB) API. The subscriptionId will be recorded\non the order as its transaction ID.\n\nNote that the creation of the subscription happens during the call to\n``authorize``, not ``capture``, because it needs access to the billing\ninformation which is passed to ``authorize`` but not ``capture``.\n\n >>> import copy\n >>> from zope.annotation.interfaces import IAnnotations\n >>> order2 = copy.deepcopy(order)\n >>> cart2 = cart.ShoppingCart()\n >>> cart2['abc'] = abc = item.RecurringLineItem()\n >>> abc.cost = 22.20; abc.name = 'abc'; abc.quantity = 1\n >>> abc.interval = 1; abc.total_occurrences = 3; abc.unit = 'months'\n >>> order2.shopping_cart = cart2\n >>> order2._order_id = 'recur%s' % int(time.time())\n >>> authnet.authorize(order2, payment) == interfaces.keys.results_success\n True\n >>> subscriptionId = IAnnotations(order2)[interfaces.keys.processor_txn_id]\n >>> subscriptionId is not None\n True\n\nIn the case of a recurring order ``capture`` is basically a no-op, but still\nneeds to succeed, because it will get called by the order workflow.\n\n >>> authnet.capture(order2, order2.getTotalPrice()) == interfaces.keys.results_success\n True\n\nOrders with multiple recurring line items, or with a mixture of recurring and\nnon-recurring line items, are not currently supported.\n\nA recurring order will first be authorized using the standard AIM API,\nto make sure that valid CC info was provided.\n\n >>> payment2 = copy.deepcopy(payment)\n >>> payment2.credit_card = '1111111111111'\n >>> authnet.authorize(order2, payment2)\n 'The credit card number is invalid.'\n\nCanceling a recurring payment subscription\n------------------------------------------\n\nIf an order has a subscriptionId, its subscription can be canceled.\n\n >>> authnet.cancel_subscription(order2) == interfaces.keys.results_success\n True\n\nAuthorize.Net ARB Integration\n=============================\n\nThe ARBProcessor provides support for Authorize.net's Automated Recurring\nBilling (ARB) API, which makes it possible to manage subscription-based\npayments via an XML API.\n\nSee http://www.authorize.net/support/ARB_guide.pdf for API documentation\nincluding prerequisites for using ARB, and details of what parameters may\nbe specified.\n\nTransaction Keys\n----------------\n\nEach ARB transaction must be accompanied by a merchant login and a\n\"transaction key\". This key is obtained from the merchant interface. After\nimporting the ARBProcessor class you must pass it your login and transaction\nkey:\n\n >>> from getpaid.authorizedotnet.subscription import ARBProcessor\n >>> arb = ARBProcessor(server=SERVER_NAME, login=LOGIN, key=KEY)\n\nCreating a subscription\n-----------------------\n\nTo create a new subscription, use the ``create`` method.\n\n >>> from time import gmtime, strftime\n >>> today = strftime(\"%Y-%m-%d\", gmtime())\n >>> exp_date = strftime(\"%Y-%m\", gmtime())\n >>> import random\n >>> amount = '%.2f' % random.uniform(0,100)\n\n >>> result = arb.create(refId = '1234',\n ... subscription = {\n ... 'name': '1234',\n ... 'paymentSchedule': {\n ... 'interval': {\n ... 'length': 1,\n ... 'unit': 'months', },\n ... 'startDate': today,\n ... 'totalOccurrences': 12,\n ... 'trialOccurrences': 0, },\n ... 'amount': amount,\n ... 'trialAmount': '0',\n ... 'payment': {\n ... 'creditCard': {\n ... 'cardNumber': '4007000000027',\n ... 'expirationDate': exp_date,\n ... 'cardCode': '111', },\n ... },\n ... 'billTo': {\n ... 'firstName': 'Harvey',\n ... 'lastName': 'Frank', },\n ... },\n ... )\n\nIt returns a dictionary which contains details about the transaction.\n\n >>> result['refId']\n '1234'\n >>> result['messages']['resultCode']\n 'Ok'\n >>> result['messages']['message']['code']\n '123456'\n >>> result['messages']['message']['text']\n 'Successful.'\n >>> subscriptionId = result['subscriptionId']\n >>> subscriptionId\n '123456'\n\nUpdating a subscription\n-----------------------\n\nTo update an existing subscription, use the ``update`` method. This accepts\nthe same parameters as ``create``, but all are optional except for the\nsubscriptionId.\n\n >>> result = arb.update(subscriptionId = subscriptionId,\n ... subscription = {\n ... 'paymentSchedule': {\n ... 'totalOccurrences': 6, },\n ... },\n ... )\n >>> result['messages']['resultCode']\n 'Ok'\n\nTrying to update a non-existent subscription results in an error code.\n\n >>> result = arb.update(subscriptionId = '1',\n ... subscription = {\n ... 'paymentSchedule': {\n ... 'totalOccurrences': 6, },\n ... },\n ... )\n >>> result['messages']['resultCode']\n 'Error'\n >>> result['messages']['message']['text']\n 'The subscription cannot be found.'\n\nCanceling a subscription\n------------------------\n\nTo cancel an existing subscription, use the ``cancel`` method.\n\n >>> result = arb.cancel(subscriptionId = subscriptionId)\n >>> result['messages']['resultCode']\n 'Ok'\n\nTrying to cancel a non-existent subscription results in an error code.\n\n >>> result = arb.cancel(subscriptionId = '1')\n >>> result['messages']['resultCode']\n 'Error'\n >>> result['messages']['message']['text']\n 'The subscription cannot be found.'", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://code.google.com/p/getpaid", "keywords": "", "license": "ZPL2.1", "maintainer": null, "maintainer_email": null, "name": "getpaid.authorizedotnet", "package_url": "https://pypi.org/project/getpaid.authorizedotnet/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/getpaid.authorizedotnet/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://code.google.com/p/getpaid" }, "release_url": "https://pypi.org/project/getpaid.authorizedotnet/0.6.8/", "requires_dist": null, "requires_python": null, "summary": "GetPaid authorize.net payment processor functionality", "version": "0.6.8" }, "last_serial": 1837991, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "c534eadf4fe3c0bbd4561e63c448b771", "sha256": "29cf5f1b60973e89f0cf8b38955e479df90231e009ad1ca22d6abf1bcd0fc21d" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.2.tar.gz", "has_sig": false, "md5_digest": "c534eadf4fe3c0bbd4561e63c448b771", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4173, "upload_time": "2008-08-21T21:41:47", "url": "https://files.pythonhosted.org/packages/95/45/c09f1455446dae1cc3da6d6f5ee821f8a76b5375cdff82be83fc4cecf6d1/getpaid.authorizedotnet-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "a1f730169a9e51fb796da483fd173425", "sha256": "5aa50f0c54342ea1b7e8e06d1d17ccacb0b7ec16f34ef94c70ecd22111db90e4" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.3.tar.gz", "has_sig": false, "md5_digest": "a1f730169a9e51fb796da483fd173425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6610, "upload_time": "2009-01-28T20:07:24", "url": "https://files.pythonhosted.org/packages/43/81/37af83b9b527a047134446ada820fa8c351de29da27bae774fbbf2888686/getpaid.authorizedotnet-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c5d6efb9b34bb790a1dae54fc1758d6a", "sha256": "f347c518a57513f701bd95c27fc12cdf25f541f1c71698a1314df8dfdd14f81b" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c5d6efb9b34bb790a1dae54fc1758d6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6684, "upload_time": "2009-03-13T19:35:06", "url": "https://files.pythonhosted.org/packages/ea/dd/d155fb5320fcda6c80a6f42e8f9a6215a2201bc0c56d93b82c104e34943e/getpaid.authorizedotnet-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "847c636a14672a961fa26df35dd9a876", "sha256": "78953f9bd15e0af24e7054e66562e94918f3ec1ea21b2569e95821ca8b15e3ff" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.3.2.tar.gz", "has_sig": false, "md5_digest": "847c636a14672a961fa26df35dd9a876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7103, "upload_time": "2009-07-23T00:27:50", "url": "https://files.pythonhosted.org/packages/e5/e2/0d06b8582ac8ba0e437dafda0bb77999d2f3e74664ca7ac5f94cbe8295a5/getpaid.authorizedotnet-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "e4f4671b43f3ed46ca29cc62d977a75a", "sha256": "dad46fd1d54f7c9f8733c3bed662eb511afaa2f7cc6c09205e64d9516a315a19" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.3.3.tar.gz", "has_sig": false, "md5_digest": "e4f4671b43f3ed46ca29cc62d977a75a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7046, "upload_time": "2009-08-19T22:22:55", "url": "https://files.pythonhosted.org/packages/2d/4c/9f8bb382e9e27b9f4b5c51bca8bce46da6e51d93290e4d79b387e9257714/getpaid.authorizedotnet-0.3.3.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "159bdaf4620e54b6b8fe4dd00ccab000", "sha256": "2ad02dfa4c152c046a24301f44396aea39ba12b942599ebccbb1e5a11b440ea8" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.4.0.zip", "has_sig": true, "md5_digest": "159bdaf4620e54b6b8fe4dd00ccab000", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15792, "upload_time": "2010-04-08T00:27:47", "url": "https://files.pythonhosted.org/packages/4a/6b/e0a840f1e761285ab7d1b94875852111aeb8ec59c82e034fc7762f8d0b92/getpaid.authorizedotnet-0.4.0.zip" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "a196bc0c96f7813b9e54c65dbd1ff627", "sha256": "b7f83d9c004d8b45b024c03a670c001ddf61a9336c84d650b8e77be9a222aa0e" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.5.0.zip", "has_sig": true, "md5_digest": "a196bc0c96f7813b9e54c65dbd1ff627", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26956, "upload_time": "2010-05-19T01:43:08", "url": "https://files.pythonhosted.org/packages/da/02/4c0b21fcc42310f8714eb15694e54a309ec5761d9747daba742fef640419/getpaid.authorizedotnet-0.5.0.zip" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "3495ab54e60499e3ae3f7a5c01736cb9", "sha256": "cb2920c55a4709886ab7abd6e950c48d010114a5e4d6db73211207e6bc8b2432" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.5.1.zip", "has_sig": false, "md5_digest": "3495ab54e60499e3ae3f7a5c01736cb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30461, "upload_time": "2011-05-19T02:12:45", "url": "https://files.pythonhosted.org/packages/64/50/f48dc786d4e38aaf83671a78d5c2c2fe567b13d46f6425d1eeb5b2dfc1f9/getpaid.authorizedotnet-0.5.1.zip" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "5495af20adfdcde4d6b2063d1ec7f16c", "sha256": "c0ba21080d3894bea597b4f8b705a8b1651d20210e34f91bc16adcb91d8fd3b5" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.0.zip", "has_sig": false, "md5_digest": "5495af20adfdcde4d6b2063d1ec7f16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32314, "upload_time": "2011-06-16T00:52:23", "url": "https://files.pythonhosted.org/packages/cd/99/dde53891cd467935756ac9c9cb5b4b6382ee9ca8af022772a0cbdc5e0149/getpaid.authorizedotnet-0.6.0.zip" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "aa22a81352654874093fbb0350db12bb", "sha256": "b91aca885518668cbc55580ee3bcdfe1dd27c33a37fcd951c34264a3bddad73a" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.1.zip", "has_sig": false, "md5_digest": "aa22a81352654874093fbb0350db12bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32404, "upload_time": "2011-06-21T20:25:58", "url": "https://files.pythonhosted.org/packages/41/c3/631bc85cd1b7e9d52ffaa87b9ca7ce1d39fc95658cc3a5b3173b794e4101/getpaid.authorizedotnet-0.6.1.zip" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "0140f7d25327da3cfd261a0ebdc2412f", "sha256": "bdd87f4990dad66fd3ad0ec8778fa12825a52e67fcf101d712330bc05be6d8f8" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.2.zip", "has_sig": false, "md5_digest": "0140f7d25327da3cfd261a0ebdc2412f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32644, "upload_time": "2012-06-20T01:17:00", "url": "https://files.pythonhosted.org/packages/2a/99/38fe0fb0b9db8af5e79ba9244d5e109fbd1f1d1b75bb85b164cd050ea1a8/getpaid.authorizedotnet-0.6.2.zip" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "112d0edf769546b6e7b975d25f6b17a0", "sha256": "af5622d0931f9169c8650a25acb54da1a48b4e52f575f8c16160e010312be1ff" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.3.zip", "has_sig": false, "md5_digest": "112d0edf769546b6e7b975d25f6b17a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32909, "upload_time": "2012-07-19T01:40:38", "url": "https://files.pythonhosted.org/packages/f5/22/e3cb44146f1dade47286f04b95cca87750cfc7c037b51c4c1ead969bc5d8/getpaid.authorizedotnet-0.6.3.zip" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "08d0da603c5c02e770a3e83b45c1b298", "sha256": "13ea49e15c6adba233c229df7206054ed1e7a207c229ebb1914d6e9e84956bb7" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.4.zip", "has_sig": false, "md5_digest": "08d0da603c5c02e770a3e83b45c1b298", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32958, "upload_time": "2012-07-19T01:56:15", "url": "https://files.pythonhosted.org/packages/73/ea/8a4cd52fa81a97d7114b375ccb6a10447b1dfaeeadc48552bd70950ab11d/getpaid.authorizedotnet-0.6.4.zip" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "5ee24c3bc3d912e6c837f79526807e6a", "sha256": "fd547d6be75baf773cd4da201245420245eb85afe0054627c0dbcaeac9772a2b" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.5.zip", "has_sig": false, "md5_digest": "5ee24c3bc3d912e6c837f79526807e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32987, "upload_time": "2012-08-20T17:37:30", "url": "https://files.pythonhosted.org/packages/1d/c2/7732fa6aacd83b5da6ef15a160bba8bca4acd72266202e83e8d56c16b391/getpaid.authorizedotnet-0.6.5.zip" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "1fc6a68b69149886d5357ffe60d6ab75", "sha256": "fbbc8c95703164de4aaafb652f9831580e32d2ccccfe82f29477f018eb0bb5a5" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.6.zip", "has_sig": false, "md5_digest": "1fc6a68b69149886d5357ffe60d6ab75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33103, "upload_time": "2013-12-03T01:47:05", "url": "https://files.pythonhosted.org/packages/02/0d/646f8800cf3a411c04cee522a01a1a22b721df3bb8b9cf3b146bcb4023ad/getpaid.authorizedotnet-0.6.6.zip" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "4b277d08a5c3fbf885b7f09e19c89e6a", "sha256": "a41a9c670fb18146584626f4e69676a99467140b12ca37164791c9b753cc576f" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.7.zip", "has_sig": false, "md5_digest": "4b277d08a5c3fbf885b7f09e19c89e6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35029, "upload_time": "2015-05-29T16:53:52", "url": "https://files.pythonhosted.org/packages/e3/77/2989a8e6abd0ac0331bbd24b11228d8eab227021603bd3a3ce93921bcca4/getpaid.authorizedotnet-0.6.7.zip" } ], "0.6.8": [ { "comment_text": "", "digests": { "md5": "a5d3c7b98054211a82ad691ab1820826", "sha256": "05ef654563da381c870bc8124b8c4e66205e8d2c0f520fc894d653dd5688cee3" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.8.zip", "has_sig": false, "md5_digest": "a5d3c7b98054211a82ad691ab1820826", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35111, "upload_time": "2015-11-29T05:32:17", "url": "https://files.pythonhosted.org/packages/c0/30/38049eb92ff76a0147f832e8e65656bcf0370b8f920aef360fdf5220e671/getpaid.authorizedotnet-0.6.8.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a5d3c7b98054211a82ad691ab1820826", "sha256": "05ef654563da381c870bc8124b8c4e66205e8d2c0f520fc894d653dd5688cee3" }, "downloads": -1, "filename": "getpaid.authorizedotnet-0.6.8.zip", "has_sig": false, "md5_digest": "a5d3c7b98054211a82ad691ab1820826", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35111, "upload_time": "2015-11-29T05:32:17", "url": "https://files.pythonhosted.org/packages/c0/30/38049eb92ff76a0147f832e8e65656bcf0370b8f920aef360fdf5220e671/getpaid.authorizedotnet-0.6.8.zip" } ] }