{ "info": { "author": "zwczou", "author_email": "zwczou@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "\u5feb\u901f\u5f00\u59cb\n==============\n\n\u5b89\u88c5\n----\n\n\u4f7f\u7528pip\n\n::\n\n sudo pip install weixin-python\n\n\u4f7f\u7528easy_install\n\n::\n\n sudo easy_install weixin-python\n\n\u5b89\u88c5\u5f00\u53d1\u7248\u672c\n\n::\n\n sudo pip install git+https://github.com/zwczou/weixin-python@dev\n\n\u529f\u80fd\n----\n\n- \u5fae\u4fe1\u767b\u9646\n- \u5fae\u4fe1\u652f\u4ed8\n- \u5fae\u4fe1\u516c\u4f17\u53f7\n- \u5fae\u4fe1\u6d88\u606f\n\n\u7528\u6cd5\n----\n\n\u5f02\u5e38\n~~~~~~~~~~\n\n\u7236\u5f02\u5e38\u7c7b\u540d\u4e3a ``WeixinError`` \u5b50\u5f02\u5e38\u7c7b\u540d\u5206\u522b\u4e3a ``WeixinLoginError``\n``WeixinPayError`` ``WeixinMPError`` ``WeixinMsgError``\n\n\u53c2\u6570\n~~~~~~~~~~\n\n- ``WEIXIN_TOKEN`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u4e3b\u52a8\u63a8\u9001\u6d88\u606f\u7684TOKEN\n- ``WEIXIN_SENDER`` \u9009\u586b\uff0c\u5fae\u4fe1\u53d1\u9001\u6d88\u606f\u7684\u53d1\u9001\u8005\n- ``WEIXIN_EXPIRES_IN`` \u9009\u586b\uff0c\u5fae\u4fe1\u63a8\u9001\u6d88\u606f\u7684\u6709\u6548\u65f6\u95f4\n- ``WEIXIN_MCH_ID`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u5546\u6237ID\uff0c\u7eaf\u6570\u5b57\n- ``WEIXIN_MCH_KEY`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u5546\u6237KEY\n- ``WEIXIN_NOTIFY_URL`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u56de\u8c03\u5730\u5740\n- ``WEIXIN_MCH_KEY_FILE`` \u53ef\u9009\uff0c\u5982\u679c\u9700\u8981\u7528\u9000\u6b3e\u7b49\u9700\u8981\u8bc1\u4e66\u7684api\uff0c\u5fc5\u9009\n- ``WEIXIN_MCH_CERT_FILE`` \u53ef\u9009\n- ``WEIXIN_APP_ID`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u516c\u4f17\u53f7appid\n- ``WEIXIN_APP_SECRET`` \u5fc5\u586b\uff0c\u5fae\u4fe1\u516c\u4f17\u53f7appkey\n\n\u4e0a\u9762\u53c2\u6570\u7684\u5fc5\u586b\u90fd\u662f\u6839\u636e\u5177\u4f53\u5f00\u542f\u7684\u529f\u80fd\u6709\u5173,\n\u5982\u679c\u4f60\u53ea\u9700\u8981\u5fae\u4fe1\u767b\u9646\uff0c\u5c31\u53ea\u8981\u9009\u62e9 ``WEIXIN_APP_ID`` ``WEIXIN_APP_SECRET``\n\n- \u5fae\u4fe1\u6d88\u606f\n\n - ``WEIXIN_TOKEN``\n - ``WEIXIN_SENDER``\n - ``WEIXIN_EXPIRES_IN``\n\n- \u5fae\u4fe1\u767b\u9646\n\n - ``WEIXIN_APP_ID``\n - ``WEIXIN_APP_SECRET``\n\n- \u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\n\n - ``WEIXIN_APP_ID``\n - ``WEIXIN_APP_SECRET``\n\n- \u5fae\u4fe1\u652f\u4ed8\n\n - ``WEIXIN_APP_ID``\n - ``WEIXIN_MCH_ID``\n - ``WEIXIN_MCH_KEY``\n - ``WEIXIN_NOTIFY_URL``\n - ``WEIXIN_MCH_KEY_FILE``\n - ``WEIXIN_MCH_CERT_FILE``\n\n\u521d\u59cb\u5316\n~~~~~~~\n\n\u5982\u679c\u4f7f\u7528flask\n\n::\n\n # -*- coding: utf-8 -*-\n\n\n from datetime import datetime, timedelta\n from flask import Flask, jsonify, request, url_for\n from weixin import Weixin, WeixinError\n\n\n app = Flask(__name__)\n app.debug = True\n\n\n # \u5177\u4f53\u5bfc\u5165\u914d\n # \u6839\u636e\u9700\u6c42\u5bfc\u5165\u4ec5\u4f9b\u53c2\u8003\n app.config.fromobject(dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET=''))\n\n\n # \u521d\u59cb\u5316\u5fae\u4fe1\n weixin = Weixin()\n weixin.init_app(app)\n # \u6216\u8005\n # weixin = Weixin(app)\n\n\u5982\u679c\u4e0d\u4f7f\u7528flask\n\n::\n\n # \u6839\u636e\u9700\u6c42\u5bfc\u5165\u4ec5\u4f9b\u53c2\u8003\n config = dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET='')\n weixin = Weixin(config)\n\n\u5fae\u4fe1\u6d88\u606f\n~~~~~~~~\n\n\u5982\u679c\u4f7f\u7528django\uff0c\u6dfb\u52a0\u89c6\u56fe\u51fd\u6570\u4e3a\n\n::\n\n url(r'^/$', weixin.django_view_func(), name='index'),\n\n\u5982\u679c\u4e3aflask\uff0c\u6dfb\u52a0\u89c6\u56fe\u51fd\u6570\u4e3a\n\n::\n\n app.add_url_rule(\"/\", view_func=weixin.view_func)\n\n::\n\n @weixin.all\n def all(**kwargs):\n \"\"\"\n \u76d1\u542c\u6240\u6709\u6ca1\u6709\u66f4\u7279\u6b8a\u7684\u4e8b\u4ef6\n \"\"\"\n return weixin.reply(kwargs['sender'], sender=kwargs['receiver'], content='all')\n\n\n @weixin.text()\n def hello(**kwargs):\n \"\"\"\n \u76d1\u542c\u6240\u6709\u6587\u672c\u6d88\u606f\n \"\"\"\n return \"hello too\"\n\n\n @weixin.text(\"help\")\n def world(**kwargs):\n \"\"\"\n \u76d1\u542chelp\u6d88\u606f\n \"\"\"\n return dict(content=\"hello world!\")\n\n\n @weixin.subscribe\n def subscribe(**kwargs):\n \"\"\"\n \u76d1\u542c\u8ba2\u9605\u6d88\u606f\n \"\"\"\n print kwargs\n return \"\u6b22\u8fce\u8ba2\u9605\u6211\u4eec\u7684\u516c\u4f17\u53f7\"\n\n\u5fae\u4fe1\u767b\u9646\n~~~~~~~~\n\n::\n\n @app.route(\"/login\")\n def login():\n \"\"\"\u767b\u9646\u8df3\u8f6c\u5730\u5740\"\"\"\n openid = request.cookies.get(\"openid\")\n next = request.args.get(\"next\") or request.referrer or \"/\",\n if openid:\n return redirect(next)\n\n callback = url_for(\"authorized\", next=next, _external=True)\n url = weixin.authorize(callback, \"snsapi_base\")\n return redirect(url)\n\n\n @app.route(\"/authorized\")\n def authorized():\n \"\"\"\u767b\u9646\u56de\u8c03\u51fd\u6570\"\"\"\n code = request.args.get(\"code\")\n if not code:\n return \"ERR_INVALID_CODE\", 400\n next = request.args.get(\"next\", \"/\")\n data = weixin.access_token(code)\n openid = data.openid\n resp = redirect(next)\n expires = datetime.now() + timedelta(days=1)\n resp.set_cookie(\"openid\", openid, expires=expires)\n return resp\n\n\u5fae\u4fe1\u652f\u4ed8\n~~~~~~~~\n\n\u6ce8\u610f: \u5fae\u4fe1\u7f51\u9875\u652f\u4ed8\u7684timestamp\u53c2\u6570\u5fc5\u987b\u4e3a\u5b57\u7b26\u4e32\n\n::\n\n\n @app.route(\"/pay/jsapi\")\n def pay_jsapi():\n \"\"\"\u5fae\u4fe1\u7f51\u9875\u652f\u4ed8\u8bf7\u6c42\u53d1\u8d77\"\"\"\n try:\n out_trade_no = weixin.nonce_str\n raw = weixin.jsapi(openid=\"openid\", body=u\"\u6d4b\u8bd5\", out_trade_no=out_trade_no, total_fee=1)\n return jsonify(raw)\n except WeixinError, e:\n print e.message\n return e.message, 400\n\n\n @app.route(\"/pay/notify\")\n def pay_notify():\n \"\"\"\n \u5fae\u4fe1\u5f02\u6b65\u901a\u77e5\n \"\"\"\n data = weixin.to_dict(request.data)\n if not weixin.check(data):\n return weixin.reply(\"\u7b7e\u540d\u9a8c\u8bc1\u5931\u8d25\", False)\n # \u5904\u7406\u4e1a\u52a1\u903b\u8f91\n return weixin.reply(\"OK\", True)\n\n\n if __name__ == '__main__':\n app.run(host=\"0.0.0.0\", port=9900)\n\n\u5fae\u4fe1\u516c\u4f17\u53f7\n~~~~~~~~~~\n\n**\u6ce8\u610f**:\n\u5982\u679c\u4f7f\u7528\u5206\u5e03\u5f0f\uff0c\u9700\u8981\u81ea\u5df1\u5b9e\u73b0\\ ``access_token``\\ \u8ddf\\ ``jsapi_ticket``\\ \u51fd\u6570\n\n``access_token``\\ \u9ed8\u8ba4\u4fdd\u5b58\u5728\\ ``~/.access_token``\n``jsapi_ticket``\\ \u9ed8\u8ba4\u4fdd\u5b58\u5728\\ ``~/.jsapi_ticket``\n\n\u9ed8\u8ba4\u5728(HOME)\u76ee\u5f55\u4e0b\u9762\uff0c\u5982\u679c\u9700\u8981\u66f4\u6539\u5230\u6307\u5b9a\u7684\u76ee\u5f55\uff0c\u53ef\u4ee5\u5bfc\u5165\u5e93\u4e4b\u540e\u4fee\u6539\uff0c\u5982\u4e0b\n\n::\n\n import weixin\n\n DEFAULT_DIR = \"/tmp\"\n\n\u83b7\u53d6\u516c\u4f17\u53f7\u552f\u4e00\u51ed\u8bc1\n\n::\n\n weixin.access_token\n\n\u83b7\u53d6ticket\n\n::\n\n weixin.jsapi_ticket\n\n\u521b\u5efa\u4e34\u65f6qrcode\n\n::\n\n data = weixin.qrcode_create(123, 30)\n print weixin.qrcode_show(data.ticket)\n\n\u521b\u5efa\u6c38\u4e45\u6027qrcode\n\n::\n\n # scene_id\u7c7b\u578b\n weixin.qrcode_create_limit(123)\n # scene_str\u7c7b\u578b\n weixin.qrcode_create_limit(\"456\")\n\n\u957f\u94fe\u63a5\u53d8\u77ed\u94fe\u63a5\n\n::\n\n weixin.shorturl(\"http://example.com/test\")", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zwczou/weixin-python", "keywords": "weixin,weixin pay,weixin login,weixin mp,weixin python", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "weixin-python", "package_url": "https://pypi.org/project/weixin-python/", "platform": "any", "project_url": "https://pypi.org/project/weixin-python/", "project_urls": { "Homepage": "https://github.com/zwczou/weixin-python" }, "release_url": "https://pypi.org/project/weixin-python/0.5.7/", "requires_dist": null, "requires_python": "", "summary": "Weixin for Python", "version": "0.5.7" }, "last_serial": 5539463, "releases": { "0.2.3": [ { "comment_text": "", "digests": { "md5": "fe74cb4a3c74115dca1d06c04cdc80ec", "sha256": "b21ba5eb5bebebe9378b0badfc6d15266f08cecf35b603f6af49a9e44aa678e9" }, "downloads": -1, "filename": "weixin-python-0.2.3.tar.gz", "has_sig": false, "md5_digest": "fe74cb4a3c74115dca1d06c04cdc80ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8685, "upload_time": "2016-09-01T05:15:32", "url": "https://files.pythonhosted.org/packages/36/16/533603c03b3dbe618e7ef3141aba8e2529be2af28d609c68bd3bff4a3566/weixin-python-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "f8549692850eb5d84473bb7cbc279a91", "sha256": "8045f281373ba78705e713c318ba3ab533c17c8468a2b4a29bc11bf493cfcf69" }, "downloads": -1, "filename": "weixin-python-0.2.4.tar.gz", "has_sig": false, "md5_digest": "f8549692850eb5d84473bb7cbc279a91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11015, "upload_time": "2016-09-01T06:18:49", "url": "https://files.pythonhosted.org/packages/f3/3c/0624259b388a6dccb18590173c76534f5ac857329ec8ac22bfe85d821ab8/weixin-python-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "d0ece28739afbb4cf08a1f3031dc6256", "sha256": "7fbe3f05027bf58fac774a14f3f264dc59aae8692362cca9c17a06e89e9a69a1" }, "downloads": -1, "filename": "weixin-python-0.2.5.tar.gz", "has_sig": false, "md5_digest": "d0ece28739afbb4cf08a1f3031dc6256", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13271, "upload_time": "2016-09-24T06:36:39", "url": "https://files.pythonhosted.org/packages/d8/a3/24d95a7e602eafcbc9a0935074951885f013e80d7ab94919c3040f5394b3/weixin-python-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "0e9efeaef48a55e1cea602b8e2749dd2", "sha256": "3890b39d6d5ed137ebdb39a0212c0f5f602810b53f83a6c281b8277598331887" }, "downloads": -1, "filename": "weixin-python-0.2.6.tar.gz", "has_sig": false, "md5_digest": "0e9efeaef48a55e1cea602b8e2749dd2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9639, "upload_time": "2016-09-28T04:48:36", "url": "https://files.pythonhosted.org/packages/95/d0/31ecdbcab1c87f1cc03304db5d444ba159459eb97ca01fa1f82c9729ce41/weixin-python-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "a6e87f27acb6d488d15bbb8e85c15ccc", "sha256": "883abe1b6768fc324a2ec6fcffd49311a8b84811241e681b5c1d094397bf3548" }, "downloads": -1, "filename": "weixin-python-0.2.7.tar.gz", "has_sig": false, "md5_digest": "a6e87f27acb6d488d15bbb8e85c15ccc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9862, "upload_time": "2016-10-09T02:14:36", "url": "https://files.pythonhosted.org/packages/05/5d/99b95649739326f48a0249fcf49a4838cbdcfbda6642d8cf10f30910d729/weixin-python-0.2.7.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "81f3630eb8a9bae0cb57b618dcf2a28c", "sha256": "7786f77c06e9cc436832b3706ac50d8b07c0f7139dcaa9110c3f20764956ddc0" }, "downloads": -1, "filename": "weixin-python-0.2.9.tar.gz", "has_sig": false, "md5_digest": "81f3630eb8a9bae0cb57b618dcf2a28c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9432, "upload_time": "2016-12-01T03:54:27", "url": "https://files.pythonhosted.org/packages/7f/2d/9f854b29a8d9b3f38e7b0a8e19bde0c177be83e769a82388f94f4f46c090/weixin-python-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "6acf3df8bc84d0e8f69a63497bc03143", "sha256": "abf2bc06678ca2518ed1da33346d0c29f8b216fd0526f7ffbbe4088daf5b4660" }, "downloads": -1, "filename": "weixin-python-0.3.0.tar.gz", "has_sig": false, "md5_digest": "6acf3df8bc84d0e8f69a63497bc03143", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9465, "upload_time": "2016-12-16T03:55:20", "url": "https://files.pythonhosted.org/packages/5e/5a/778485f3765d7b6507a5081d77ab85555cd3ccfbb514a55fb855ff00fbb3/weixin-python-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "bc588acf87b126d6cb294dcb2208be68", "sha256": "97b6332d421b887320c8a361df5012e83f224a64a6dd6375e689d5c3235ab979" }, "downloads": -1, "filename": "weixin-python-0.4.0.tar.gz", "has_sig": false, "md5_digest": "bc588acf87b126d6cb294dcb2208be68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12359, "upload_time": "2017-02-07T03:28:04", "url": "https://files.pythonhosted.org/packages/df/7f/4ffcd0e408384f93252648b8cff814a8bdf0050102a8c2d6c0e7d6af407b/weixin-python-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "44c955fd654f40875fcaf2b18a9db6e8", "sha256": "0d8d243cc7d5211b24a46450f5bd75cd20c571d9c351e141807eaa2dd10678c8" }, "downloads": -1, "filename": "weixin-python-0.4.2.tar.gz", "has_sig": false, "md5_digest": "44c955fd654f40875fcaf2b18a9db6e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12620, "upload_time": "2017-02-13T12:36:32", "url": "https://files.pythonhosted.org/packages/31/a2/e3152604ca9aee242925307be879fe97116261c1fa29d185983d76b339ac/weixin-python-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "2034ce883a0c0dc464f15b69e1a26e6d", "sha256": "0ecb53a25147db76029f13fbdbae8f3d7d6b72cbd6143054a13228c681a7d51f" }, "downloads": -1, "filename": "weixin-python-0.4.3.tar.gz", "has_sig": false, "md5_digest": "2034ce883a0c0dc464f15b69e1a26e6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13304, "upload_time": "2017-11-12T05:15:31", "url": "https://files.pythonhosted.org/packages/01/73/441dc3459073840d6607685e988ddf6cd124f8f7763cb67360ff87c13eed/weixin-python-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "1e4b4e5d758678891afae43c9418463f", "sha256": "521c0767e0452068380380839d33ef0da9ba19ac57bb1f0b51117c50e03c68b2" }, "downloads": -1, "filename": "weixin-python-0.4.4.tar.gz", "has_sig": false, "md5_digest": "1e4b4e5d758678891afae43c9418463f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12992, "upload_time": "2017-11-28T03:11:26", "url": "https://files.pythonhosted.org/packages/b2/6b/0c8ce3fe14fa882f5a65b87a66d1f26c05d253b307aa3977f3101fe2fb80/weixin-python-0.4.4.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "a54284f639f23e83f69b5e8ebba126e9", "sha256": "12cd6c0b0592943b26a7d6b7fdb514d54858b259a91ef3ab3b05c2eaa19b93d2" }, "downloads": -1, "filename": "weixin-python-0.4.6.tar.gz", "has_sig": false, "md5_digest": "a54284f639f23e83f69b5e8ebba126e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13391, "upload_time": "2017-12-18T08:07:42", "url": "https://files.pythonhosted.org/packages/b5/06/cf630c8eb3c2f22b7f0e6d16ad4f74741423f2130ebfe59a35f0acf841d0/weixin-python-0.4.6.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "0314c99e04732aee4f7aef4f636e84c6", "sha256": "b4ddc56278febf1ab31e0ddbbdce706e453931bcc2a797ec47b854df517a76f6" }, "downloads": -1, "filename": "weixin_python-0.5.0-py2.7.egg", "has_sig": false, "md5_digest": "0314c99e04732aee4f7aef4f636e84c6", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 36382, "upload_time": "2017-12-27T11:08:26", "url": "https://files.pythonhosted.org/packages/60/0f/2284b0b9a51e52d831ff878beeccecfc40ac90897171e6492ecca732f02c/weixin_python-0.5.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "5725175363497ae6d61d6c787ccbd7ae", "sha256": "dd5a7341b424dd25f2ed9c34659d70b6f03502707720d31039fc6814bd1224a8" }, "downloads": -1, "filename": "weixin-python-0.5.0.tar.gz", "has_sig": false, "md5_digest": "5725175363497ae6d61d6c787ccbd7ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13893, "upload_time": "2017-12-27T11:08:29", "url": "https://files.pythonhosted.org/packages/4b/5f/7bfbf73afa5324e1bef079b30d5191192c65b978e722aa805c28c642e3f3/weixin-python-0.5.0.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "9d38dcc6792a51019947225cf8274feb", "sha256": "44ad205131b9aa9abd7ca9177d3dd85e58bc95464c1cd7b3094b2110a0482852" }, "downloads": -1, "filename": "weixin-python-0.5.2.tar.gz", "has_sig": false, "md5_digest": "9d38dcc6792a51019947225cf8274feb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16362, "upload_time": "2018-02-27T03:07:33", "url": "https://files.pythonhosted.org/packages/81/45/da52d56cee0389ba7fbcf3def78b960be2dbc853df7d0c6a0073db7daef1/weixin-python-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "e8719f6c5d0df7c2d8a55287d7d1391b", "sha256": "cfb647ac8f66107956dc74116f2fd87abc7a472052c5c99b0ef5324afe1c7fda" }, "downloads": -1, "filename": "weixin-python-0.5.3.tar.gz", "has_sig": false, "md5_digest": "e8719f6c5d0df7c2d8a55287d7d1391b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16064, "upload_time": "2018-02-27T05:40:41", "url": "https://files.pythonhosted.org/packages/e8/64/67a02d23ff261e0f538f714cbd68eed6eb4ec783770681dc04e7860cb492/weixin-python-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "2159e1f2d4a70bee7889ad3cd43980d3", "sha256": "32785acabcba75ab6dbfefe1e0cd1c5d3785efefd9a1b4ba69ae2fb458219bd1" }, "downloads": -1, "filename": "weixin-python-0.5.4.tar.gz", "has_sig": false, "md5_digest": "2159e1f2d4a70bee7889ad3cd43980d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14764, "upload_time": "2018-07-04T14:36:13", "url": "https://files.pythonhosted.org/packages/3e/c6/803dda7268bbafcbf83531d06d484d6008d8ce88408bfdadf0a9af2f60c5/weixin-python-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "14732a6d24ca17d8ab436a1ead806a61", "sha256": "6ff2ec75554355976c87f63b7fc538a3a31b1489bae142eb565154b2279753c6" }, "downloads": -1, "filename": "weixin-python-0.5.5.tar.gz", "has_sig": false, "md5_digest": "14732a6d24ca17d8ab436a1ead806a61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17112, "upload_time": "2019-02-25T02:47:50", "url": "https://files.pythonhosted.org/packages/48/91/a5304fe02e3694486fac013bc6e67aac54c8608bb705ba8a288d9194be8e/weixin-python-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "c88303f670809924a5b92b9dc2fbeae0", "sha256": "14208f490233260ebfb69ad19cf6592ea828427d93174f21ce3ea8b5dea64bb6" }, "downloads": -1, "filename": "weixin-python-0.5.6.tar.gz", "has_sig": false, "md5_digest": "c88303f670809924a5b92b9dc2fbeae0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17153, "upload_time": "2019-07-16T07:22:18", "url": "https://files.pythonhosted.org/packages/ec/84/b9bfce3f9af744f9d86077480d755ce999df132592dbb057475d188691aa/weixin-python-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "f300f17a01a5412c415ccfc7faf26254", "sha256": "3da352f753c3a6084e1cac330c02d0dc4603ecfb53bada7bbdca38ffd41f09fa" }, "downloads": -1, "filename": "weixin-python-0.5.7.tar.gz", "has_sig": false, "md5_digest": "f300f17a01a5412c415ccfc7faf26254", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17148, "upload_time": "2019-07-16T09:32:51", "url": "https://files.pythonhosted.org/packages/c3/3e/19f1b2380ff6f766a1b23bf2b309eb1ac11a8edb1cc35a184dc7a287d749/weixin-python-0.5.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f300f17a01a5412c415ccfc7faf26254", "sha256": "3da352f753c3a6084e1cac330c02d0dc4603ecfb53bada7bbdca38ffd41f09fa" }, "downloads": -1, "filename": "weixin-python-0.5.7.tar.gz", "has_sig": false, "md5_digest": "f300f17a01a5412c415ccfc7faf26254", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17148, "upload_time": "2019-07-16T09:32:51", "url": "https://files.pythonhosted.org/packages/c3/3e/19f1b2380ff6f766a1b23bf2b309eb1ac11a8edb1cc35a184dc7a287d749/weixin-python-0.5.7.tar.gz" } ] }