{ "info": { "author": "chuter", "author_email": "topgun.chuter@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: Chinese (Simplified)", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "Wechat Requests\n=========================\n\n**To make it easier to requests Wechat/Weixin API(mp, pay, etc.)**\n\nboth for py3 and py2, test coverage >90%\n\nUsage\n-------------------------\n\nInstall\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: bash\n\n pip install wechat-requests\n\n\nMPApi\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: python\n\n >>>from wechat import auth\n >>>r = auth.get_mp_access_token('your appid', 'your appsecret')\n >>>r.access_token\n 'ACCESS_TOKEN'\n >>>r.json\n {u'access_token': u'ACCESS_TOKEN', u'expires_in': 7200}\n >>>r.text\n u'{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":7200}'\n >>>from wechat import mpapi\n >>>mp = mpapi.formp(r.access_token)\n >>>user = mp.get('user/info', openid='o6_bmjrPTlm6_2sgVt7hMZOPfL2M')\n >>>user.is_failed\n False\n >>>user.headimgurl\n u'http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0'\n\n\nPay\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nSee `WeChat Pay DOC `_ for detail\n\n.. code-block:: python\n\n >>>from wechat import pay\n >>>mppay = pay.for_merchant(mchid, signkey)\n >>>r = mppay.unifiedorder(\\\n ... body='test',\n ... out_trade_no='20150806125346',\n ... total_fee=88,\n ... spbill_create_ip='123.12.12.123',\n ... notify_url='http://www.weixin.qq.com/wxpay/pay.php'\n ...)\n >>>r.is_failed\n False\n >>>r.prepay_id\n u'wx201410272009395522657a690389285100'\n >>>r = mppay.orderquery(out_trade_no='20150806125346')\n >>>r.trade_state\n u'SUCCESS'\n\n\nIf visit api which need client cert:\n\n.. code-block:: python\n\n >>>from wechat import pay\n >>>mppay = pay.for_merchant(mchid, signkey, client_cert='./apiclient_cert.pem', client_key='apiclient_key.pem')\n >>>r = mppay.refund(\\\n ... transaction_id='1217752501201407033233368018',\n ... total_fee=88,\n ... refund_fee=88\n ...)\n >>>r.refund_id\n u'2008450740201411110000174436'\n\n\nWebOauth\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nSee `WeChat Oauth DOC `_ for detail\n\n\n.. code-block:: python\n\n >>>from wechat import web_auth\n >>>web_auth.build_authgrant_url('APPID', 'http://redirect_to')\n u'https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect'\n >>>result = web_auth.get_access_token('APPID', 'SECRET', 'CODE')\n >>>result.access_token\n u'ACCESS_TOKEN'\n >>>user_result = web_auth.get_user_info('OPENID', result.access_token)\n >>>user_result.unionid\n u'o6_bmasdasdsad6_2sgVt7hMZOPfL'\n >>>refresh_result = web_auth.refresh_access_token('APPID', result.refresh_token)\n >>>refresh_result.refresh_token\n u'REFRESH_TOKEN'\n\n\nMessage Hanlde Pipeline\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nSee `WeChat Message DOC `_ for detail\n\n.. code-block:: python\n\n >>>from wechat.message import new_pipeline\n >>>message_pipeline = new_pipeline([handler_instance, 'your.handler.path'])\n >>>reply_message_bytes = message_pipeline.handle('receive xml message')\n >>>from wechat.message import XMLMessageBuilder\n >>>reply_message = XMLMessageBuilder.parse(reply_message_bytes)\n >>>reply_message.to_openid\n u'fromUser'\n\n\nMessage Crypto\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\nSee `WeChat Crypt DOC `_ for detail\n\n.. code-block:: python\n\n >>>from wechat.message import build_message_crypto_for\n >>>crypto = build_message_crypto_for('TOKEN', 'AES_KEY', 'APPID')\n >>>crypto.encrypt('MESSAGE_XML')\n \n \n \n 1409735669\n \n \n >>>crypto.decrypt('ENCRYPTED_MSG', 'SIGNATURE', 'timestamp', 'nonce')\n \n ToUserName>\n FromUserName\n 1519387094\n text\n -1\n just a (\u6c49\u5b57) test\n \n\n\nRequestResult\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nAll api return RequestResult instance, it auto handle xml, json\n\ntake r for example:\n\n- r.name or r['name']: to get wechat api return result field(both xml and json)\n- r.text: to get raw wechat api returned body (unicode/py2, str/py3)\n- r.response: Requests Response instance\n- r.request: Requests PreparedRequest instance, for users to debug the\n low level request\n- r.is_failed: whether wechat api raise error\n- r.errcode: if r.is_failed\n- r.errmsg: if r.is_failed, error message for man\n\n\nAdvanced\n-------------------------\n\ncomming soon...\n\n\nFeature Support\n-------------------------\n\nWechat Requests is based on `requests `_\nand `urllib3 `_\n\n*get*, *post* function surpports all ``requests`` surpport, like headers,\ntimeout, etc.\n\n\nDocumentation\n------------------------\n\ncoming soon...\n\n\nTODO\n------------------------\n\n* wechat/wxpay third party platformcomponent api surpport\n\n**will published in two weeks**", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/chuter/wechat-requests", "keywords": "wechat,weixin,wxpay,api,apiclient,requests", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "wechat-requests", "package_url": "https://pypi.org/project/wechat-requests/", "platform": "", "project_url": "https://pypi.org/project/wechat-requests/", "project_urls": { "Homepage": "https://github.com/chuter/wechat-requests" }, "release_url": "https://pypi.org/project/wechat-requests/1.4.6/", "requires_dist": null, "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "so eazy to interact with wechat api", "version": "1.4.6" }, "last_serial": 3956630, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "4ad2f8aac0ed3e7975c9eb3f218e3d58", "sha256": "518d1b079484e40c52e04c89ad27fd276347fe7393cf31e4028bc13fab4a3aa2" }, "downloads": -1, "filename": "wechat_requests-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "4ad2f8aac0ed3e7975c9eb3f218e3d58", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 45901, "upload_time": "2018-05-04T12:28:45", "url": "https://files.pythonhosted.org/packages/2b/38/caf4b96742d01daf920a07eb630018108be5081dc9522e3aeb84a836d1a5/wechat_requests-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17abd6db2c659e6a6218cb73167d50c2", "sha256": "d0596625ce4c46f707a4ac806bf6352fe2a93c89caee6881edbdc3795176ac41" }, "downloads": -1, "filename": "wechat-requests-1.0.0.tar.gz", "has_sig": false, "md5_digest": "17abd6db2c659e6a6218cb73167d50c2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 45039, "upload_time": "2018-05-04T12:28:46", "url": "https://files.pythonhosted.org/packages/62/20/0188587ae7a5aa7c1ca15ae28d81c3981f94e62db2a42dfb1848dddd71c9/wechat-requests-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b1fafab0fb346b88985c93814501bb8d", "sha256": "f7402516a65ade90504d4cb2bc4ca8c179d597f49113945f79f40c796a3f1a14" }, "downloads": -1, "filename": "wechat-requests-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b1fafab0fb346b88985c93814501bb8d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 53952, "upload_time": "2018-05-11T13:12:25", "url": "https://files.pythonhosted.org/packages/25/1b/79838d3c9be268ca1efe70b7d165d80af81ce6432269198ded7e167004b9/wechat-requests-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "379004f345b02c67b56891d0f83f21c0", "sha256": "2d96fee092b6399f2a5c3ba88ab4002c9cf2564fb504a25c598f03fe3b29f1de" }, "downloads": -1, "filename": "wechat-requests-1.1.1.tar.gz", "has_sig": false, "md5_digest": "379004f345b02c67b56891d0f83f21c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 53957, "upload_time": "2018-05-11T13:13:49", "url": "https://files.pythonhosted.org/packages/b1/f3/51487fd349f44367a53b810521e9c88df0fea47475d69a845549c5f1e8a5/wechat-requests-1.1.1.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "a7b02e21214d888c143a29ebcdf6519a", "sha256": "eaffa45c4119cafaf6d1d7b6a1dcc5c3fd5ca1feafd7d5ec0ec919979480bfb4" }, "downloads": -1, "filename": "wechat-requests-1.2.1.tar.gz", "has_sig": false, "md5_digest": "a7b02e21214d888c143a29ebcdf6519a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 76551, "upload_time": "2018-05-16T12:59:26", "url": "https://files.pythonhosted.org/packages/c4/be/243bacaf254cb9960e407264cf24e6a2d4e24ffc63f2578a49b63d22b1db/wechat-requests-1.2.1.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "46a7cd2dbf3df0c0224047d38b3c7ffa", "sha256": "90ef4df5f3ee4415f2630f999f8b5b7b9f8e7d88bcfbcc07baf8f52d39a54ec6" }, "downloads": -1, "filename": "wechat-requests-1.3.1.tar.gz", "has_sig": false, "md5_digest": "46a7cd2dbf3df0c0224047d38b3c7ffa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 77619, "upload_time": "2018-05-16T16:15:48", "url": "https://files.pythonhosted.org/packages/53/d2/f999a1cd584a700075f1513c23cc4324988771bbfcbcac647c9134923e3c/wechat-requests-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "b67ca12f25b03b59ab790ed897dbff62", "sha256": "fd4e6928cd8fb496baad5d57b113d7e8e9f7f0c9b0a8d1da7d18a0fb67e6d5c0" }, "downloads": -1, "filename": "wechat-requests-1.3.2.tar.gz", "has_sig": false, "md5_digest": "b67ca12f25b03b59ab790ed897dbff62", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 77769, "upload_time": "2018-05-16T17:06:20", "url": "https://files.pythonhosted.org/packages/9c/9b/6aa8751b5da09538d0352b1741e5804e3e45b7d7387200f60eb20fa9b9a2/wechat-requests-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "a6dadc22b2a2e851d37aeab5e586c93f", "sha256": "18d836d91bb740e0e19cb77cc9bf0f85dc6c8a8647698a0050af8e6b59a40c0b" }, "downloads": -1, "filename": "wechat-requests-1.3.3.tar.gz", "has_sig": false, "md5_digest": "a6dadc22b2a2e851d37aeab5e586c93f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 77795, "upload_time": "2018-05-16T17:34:14", "url": "https://files.pythonhosted.org/packages/4c/81/fe06a9245372e67471e3f488f17352276d1d55cdd8231bebc107a8e3b82d/wechat-requests-1.3.3.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "e921c31dc32aee343d50d890440dea86", "sha256": "d49ba2210a961ff04010fb9c1a17f52300061faf5e5e82acf552c8f5f83782ee" }, "downloads": -1, "filename": "wechat-requests-1.4.3.tar.gz", "has_sig": false, "md5_digest": "e921c31dc32aee343d50d890440dea86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 78396, "upload_time": "2018-05-18T10:25:33", "url": "https://files.pythonhosted.org/packages/f1/57/27814fba0462fc81ee4b9ff6edd13e1c72823e5afb644291235a0bdb5ef7/wechat-requests-1.4.3.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "18d9d88e1d066bbf1de0b324384848cb", "sha256": "4aedb16d6f9dcea81c35fee4faacf3c209dda98a9223d2c270b0289beb326a00" }, "downloads": -1, "filename": "wechat-requests-1.4.4.tar.gz", "has_sig": false, "md5_digest": "18d9d88e1d066bbf1de0b324384848cb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 78420, "upload_time": "2018-05-27T05:33:35", "url": "https://files.pythonhosted.org/packages/fe/01/a05936c2bf989410552e7c47cfaf4874b9e541273cd3e5c2bfa73b0cb1fc/wechat-requests-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "725422f714211c885d3868e16d28e730", "sha256": "dcd6c9d8e912bfa453bfa4cf763fa9dae5f59d74a6d2467a4d0df853d5bb40e9" }, "downloads": -1, "filename": "wechat-requests-1.4.5.tar.gz", "has_sig": false, "md5_digest": "725422f714211c885d3868e16d28e730", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 78425, "upload_time": "2018-05-27T05:38:21", "url": "https://files.pythonhosted.org/packages/3c/11/40050257d2a2d6c26b2ffea5746e787f210ccc51a05ad24ff56fef564e91/wechat-requests-1.4.5.tar.gz" } ], "1.4.6": [ { "comment_text": "", "digests": { "md5": "1e3314d882d914ad3a2121b21df31fdb", "sha256": "85b9a5bef5d4e6e3c73918afdb54a8a6da901de2b362aab0e97013610ac3e842" }, "downloads": -1, "filename": "wechat-requests-1.4.6.tar.gz", "has_sig": false, "md5_digest": "1e3314d882d914ad3a2121b21df31fdb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 78482, "upload_time": "2018-06-13T07:19:13", "url": "https://files.pythonhosted.org/packages/d6/81/515739c6f4e5bdd78e6521b2a96c7d4c99aea07a3f5d79d3b3202059147b/wechat-requests-1.4.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1e3314d882d914ad3a2121b21df31fdb", "sha256": "85b9a5bef5d4e6e3c73918afdb54a8a6da901de2b362aab0e97013610ac3e842" }, "downloads": -1, "filename": "wechat-requests-1.4.6.tar.gz", "has_sig": false, "md5_digest": "1e3314d882d914ad3a2121b21df31fdb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 78482, "upload_time": "2018-06-13T07:19:13", "url": "https://files.pythonhosted.org/packages/d6/81/515739c6f4e5bdd78e6521b2a96c7d4c99aea07a3f5d79d3b3202059147b/wechat-requests-1.4.6.tar.gz" } ] }