V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Jolly23
V2EX  ›  Python

开源我公司微信支付 python 版本的全部代码,包含生成微信订单,以及最新的微信平台向用户发红包,向用户付款等功能

  •  5
     
  •   Jolly23 · 2016-12-21 13:31:07 +08:00 · 18665 次点击
    这是一个创建于 2889 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GitHub 代码地址 [https://github.com/Jolly23/wx_pay_python]

    作者个人网站 [https://jolly23.com]

    这套系统基本涵盖微信支付全部相关功能,以及自己总结的开发引导,如果可以请点 Star

    微信支付功能

    参考文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php

    使用

    首先引入包

    from wx_pay import WxPay, WxPayError
    

    构造微信支付类,传入配置文件

    wx_pay = WxPay(
        wx_app_id='WX_APP_ID', 
        wx_mch_id='WX_MCH_ID', 
        wx_mch_key='WX_MCH_KEY',
        wx_notify_url='http://www.example.com/pay/weixin/notify'
    )
    

    创建订单

    pay_data = wx_pay.js_api(
            openid=u'***user_openid***',  # 付款用户 openid
            body=u'***商品名称 /付款显示名称***',  # 例如:饭卡充值 100 元
            total_fee=100  # total_fee 单位是 分, 100 = 1 元
        )
    

    给用户发红包

    wx_pay.send_red_pack(
        api_client_cert_path='/home/xxx/SERVER/ext_file/wx_2_pay_cert.pem',
        api_client_key_path='/home/xxx/SERVER/ext_file/wx_2_pay_key.pem',
        send_name=u'微信支付测试',  # 红包名称
        re_openid=u'***to_user_openid***',  # 要接收红包的用户 openid
        total_amount=100,  # total_fee 单位是 分, 100 = 1 元, 最大 499 元
        wishing=u'感谢参与测试',  # 祝福语
        client_ip=u'222.222.222.222',  # 调用微信发红包接口服务器公网 IP 地址
        act_name=u'微信支付测试系统',  # 活动名称
        remark=u'感谢参与'  # 备注
    )
    

    查询订单

    raw = wx_pay.close_order(out_trade_no)
    

    关闭订单

    raw = wx_pay.order_query(out_trade_no=out_trade_no)
    

    工具函数

    签名

    wx_pay.sign(dict(openid="123"))
    

    32 位随机字符串

    wx_pay.nonce_str()
    

    验证签名

    wx_pay.check(dict(openid="123", sign="SIGN"))
    

    生成微信前端 JS 参数

    详见example.py的wx_js_config方法,用来生成前端使用微信js的必要参数

    第 1 条附言  ·  2016-12-21 20:12:52 +08:00
    前期开发参照 https://github.com/zakzou/flask-weixin-pay/blob/master/example.py ,后来在这个基础上改进了很多地方,包括不限制是 flask 框架,以及加入微信支付的新功能发送红包和企业付款。
    感谢前辈
    第 2 条附言  ·  2016-12-22 10:14:12 +08:00
    微信支付功能集,前期开发借鉴 https://github.com/zakzou/flask-weixin-pay ,抱歉不是在 fork 上改动是因为几个月前就开始带到项目中使用,改进包括让其脱离 flask 框架限制,并且加入微信支付最新的两个营销功能,然后从我的工程代码提出来这个底层类发布。向前辈致谢
    第 3 条附言  ·  2016-12-22 10:44:39 +08:00
    首先说一句抱歉
    1. 解释下为什么贴的是另一个项目地址,并不是像 @hhstore 说的企图蒙混过关,开始开发是在几个月前,当时是从知乎上跳到 zakzou 那个 flask 微信支付项目中,当时直至昨天都不知道 zwczou 的代码和 zakzou 的代码一样,刚开始写是参照 zakzou 的,并且也提过 contribute ,现在发现他的和 zwczou 的代码一样, https://github.com/zakzou/flask-weixin-pay
    2. 刚发布那个帖子也没想到会有这么多的关注,虽然在 zakzou 代码上有改进,把 zakzou 的工程脱离了 flask 框架限制并加了几个新的营销功能,但大部分还是大部分使用了原来开源的代码,现在发现可能他的代码也是从 zwczou 那 copy 的,所以我现在也是间接 copy 了 zwczou 的代码,真的抱歉。
    3. 公司是我在大学时期创建的,法人不是我,聘请一些在读研究生做员工。
    4. 对我个人行为感到遗憾和后悔,发布没有好好考虑到原代码提供者版权问题,对不起。希望大家能原谅,给我改过的机会。以后发布代码更加遵守版权问题。对不起。已在 github 补充了说明情况。
    5. 向前辈致敬,同时也对前辈说一声对不起,对大家说声对不起。今后增强自己对于版权保护的认识,更加充分尊重原作者,抱歉。
    93 条回复    2016-12-25 18:28:18 +08:00
    soli
        1
    soli  
       2016-12-21 13:51:50 +08:00
    先赞一下!
    ty89
        2
    ty89  
       2016-12-21 14:02:31 +08:00
    滋瓷
    v2 应该多一些这种帖子,少一些撕逼的
    lincolnhuang
        3
    lincolnhuang  
       2016-12-21 14:07:05 +08:00
    先赞后看!
    shiny
        4
    shiny  
       2016-12-21 14:18:17 +08:00 via iPhone
    你们公司同意你开源?
    wyntergreg
        5
    wyntergreg  
       2016-12-21 14:18:55 +08:00
    手动点赞
    Jolly23
        6
    Jolly23  
    OP
       2016-12-21 14:28:53 +08:00 via iPhone   ❤️ 2
    @shiny CTO 说了算,也就是我说了算, that's enough
    Jolly23
        7
    Jolly23  
    OP
       2016-12-21 14:32:23 +08:00 via iPhone
    放出来的代码足够大家开发用,一些涉密的小东西没开源,但不影响此框架使用。截至昨天,我公司用这套代码 3 个月已经在微信成功过账 109 万元且未产生任何问题。
    cxl008
        8
    cxl008  
       2016-12-21 14:38:11 +08:00
    赞一个
    flamhaze5946
        9
    flamhaze5946  
       2016-12-21 14:40:21 +08:00
    @Jolly23 你这泄露了财务信息吧 - -b
    wsy2220
        10
    wsy2220  
       2016-12-21 14:42:08 +08:00
    支持开源
    dexterlei
        11
    dexterlei  
       2016-12-21 14:47:22 +08:00
    先赞后看
    mortal
        12
    mortal  
       2016-12-21 14:53:33 +08:00
    你问我呲磁不呲磁,我当然是呲磁的!我们年轻人还是要 Star 学习一个。
    Jolly23
        13
    Jolly23  
    OP
       2016-12-21 14:55:20 +08:00 via iPhone
    @mortal 我 20 周岁,也是年轻人 哈哈
    vugusurk
        14
    vugusurk  
       2016-12-21 14:57:31 +08:00
    哇,才大三就 CTO 啦
    mortal
        15
    mortal  
       2016-12-21 14:59:55 +08:00
    @Jolly23 我遭不住这种 20 多岁就当上 CTO 的了 反观自己还在打杂…
    Jolly23
        16
    Jolly23  
    OP
       2016-12-21 15:02:10 +08:00 via iPhone
    @mortal 也许我这含金量不大呗 毕竟公司目前业务单一
    xiuc001
        17
    xiuc001  
       2016-12-21 15:49:39 +08:00
    你们公司同意你开源?
    derpc
        18
    derpc  
       2016-12-21 15:51:31 +08:00 via iPhone
    先赞后看,楼主加油
    MrWhite
        19
    MrWhite  
       2016-12-21 15:53:40 +08:00
    不错的哦。 很详细~
    zhushajun
        20
    zhushajun  
       2016-12-21 15:55:23 +08:00   ❤️ 1
    学习了,感谢分享哈
    v2dead
        21
    v2dead  
       2016-12-21 16:13:42 +08:00
    赞一个,微信 API 之接的恶心好久,各种 XML ,稀奇古怪的接口请求,感觉糅合了十几号人的风格。
    虽然愿景很好,但这样的项目其实不太敢用的,因为即使用这个项目,还要全面的去看你的代码和微信接口,一但微信方面接口升级,不知道你那边什么时候升级,难道不支付了?
    有空去看你代码的,还不如自己封装一遍。。。
    liqiazero
        22
    liqiazero  
       2016-12-21 16:16:12 +08:00
    该 star 的还是得 star 啊。
    这个东西都是 API 各种回调,核心自然在微信那边,核心支付的东西微信在出 API 的时候已经做了各种防范了。只要 API 用的好,基本上在支付上不会问题,就是回调错了,微信那边也会给你 pass 掉。基本上没有啥安全性问题,不过还是 star 啊!
    tar
        23
    tar  
       2016-12-21 16:19:21 +08:00
    "劳资叫你们维护系统,你们居然给开源了"
    fy
        24
    fy  
       2016-12-21 16:32:13 +08:00
    python2 ...
    butterflydog
        25
    butterflydog  
       2016-12-21 17:21:03 +08:00
    点赞
    pudgeee
        26
    pudgeee  
       2016-12-21 17:21:34 +08:00
    这个是要赞一个。
    lonelinsky
        27
    lonelinsky  
       2016-12-21 17:31:45 +08:00
    查询订单

    raw = wx_pay.close_order(out_trade_no)
    关闭订单

    raw = wx_pay.order_query(out_trade_no=out_trade_no)

    这边写反了哦…
    deadofpeople
        28
    deadofpeople  
       2016-12-21 18:11:09 +08:00
    666
    Jolly23
        29
    Jolly23  
    OP
       2016-12-21 18:27:18 +08:00 via iPhone
    @lonelinsky 感谢指正,粗心了
    irory
        30
    irory  
       2016-12-21 18:40:57 +08:00
    我记得发红包每个用户至少 1 元吧 ... 这个没判断算不算 BUG ? O(∩_∩)O 哈哈~
    njushannon
        31
    njushannon  
       2016-12-21 19:02:27 +08:00
    2333333 ,可以用来轻度套现
    wclebb
        32
    wclebb  
       2016-12-21 19:07:04 +08:00
    哇塞,请问有现成的网站或微信号可以参考一下吗?
    虽然……用不到。
    但估计以后会有用,所以希望能提供一下简单的参考或微信号。
    Jolly23
        33
    Jolly23  
    OP
       2016-12-21 19:22:32 +08:00 via iPhone
    @wclebb 民大小偲-个人中心-赞助(但是没绑定学号看不到赞助页面) 校园卡充值也看不到
    em70
        34
    em70  
       2016-12-21 19:23:33 +08:00
    你是个伟人
    timlili
        35
    timlili  
       2016-12-21 19:36:59 +08:00   ❤️ 5
    luefei
        36
    luefei  
       2016-12-21 20:01:51 +08:00   ❤️ 2
    zeayes
        37
    zeayes  
       2016-12-21 20:07:25 +08:00   ❤️ 2
    jessynt
        38
    jessynt  
       2016-12-21 20:16:50 +08:00 via iPhone
    楼上这啥情况,要撕逼啊,瓜子小板凳已备好
    wellsc
        39
    wellsc  
       2016-12-21 20:18:12 +08:00
    谢谢
    jessynt
        40
    jessynt  
       2016-12-21 20:26:12 +08:00 via iPhone
    HLT
        41
    HLT  
       2016-12-21 20:34:24 +08:00   ❤️ 1
    这 TM 就很尴尬了
    coolloves
        42
    coolloves  
       2016-12-21 20:40:16 +08:00
    马克,感谢分享
    GreatMartial
        43
    GreatMartial  
       2016-12-21 20:47:55 +08:00 via Android
    字词,感谢分享
    AyoCross
        44
    AyoCross  
       2016-12-21 20:48:04 +08:00   ❤️ 1
    这。。。果然亮点都在评论
    8bit
        45
    8bit  
       2016-12-21 20:52:45 +08:00
    分分钟扒掉底裤.....
    1etterSong
        46
    1etterSong  
       2016-12-21 21:00:20 +08:00
    后排了
    sivacohan
        47
    sivacohan  
       2016-12-21 21:06:11 +08:00 via Android
    你知道你为什么不能叫 wxpay 吗?
    因为 wxpay 被我占了。哈哈哈。
    zhchbin
        48
    zhchbin  
       2016-12-21 21:09:55 +08:00
    还有,这个退款操作的 API 不可以的吧。。确定能正常?文档里写着要求要用证书的。。 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_4
    zwczou
        49
    zwczou  
       2016-12-21 21:12:56 +08:00   ❤️ 3
    最开始 zakzou/flask-weixin-pay 有以下几个问题:
    1. 下载账单返回的不是 xml ,而是 csv 格式的,所以此接口不能使用( download_bill)
    2. 退款需要商户证书,目前还不支持,还在开发中(refund)

    在 weixin-python 里面已经修复问题 1 ,问题 2 也在支持的路上


    另外 zakzou/flask-weixin-pay 是支持非 flask 的框架的,你的这个版本反而仅仅支持 flask 框架了
    renyijiu
        50
    renyijiu  
       2016-12-21 21:13:48 +08:00
    你的个人网站 502 了。。。。。
    yura93
        51
    yura93  
       2016-12-21 21:17:05 +08:00
    我去,看到评论好方
    fffflyfish
        52
    fffflyfish  
       2016-12-21 21:28:07 +08:00
    好尴尬,这个 star 比 zwczou 的都多
    dtfm
        53
    dtfm  
       2016-12-21 21:45:04 +08:00
    昨天也看见了锤子开源的 onestep ,每次在 Github 上看见中文的文档和 readme ,都觉得好接地气,莫名的亲切。
    gogobody
        54
    gogobody  
       2016-12-21 21:46:33 +08:00 via Android
    看见标题就赞了
    haozibi
        55
    haozibi  
       2016-12-21 21:56:27 +08:00 via Android
    要回复先看看上面的评论吧
    dazzle
        56
    dazzle  
       2016-12-21 22:02:35 +08:00 via Android
    表示看见过 N 次,个人网站放上来,几小时后挂了
    (ಡωಡ)
    leeyiw
        57
    leeyiw  
       2016-12-21 22:09:04 +08:00
    开源也要遵守基本法吼
    xfan001
        58
    xfan001  
       2016-12-21 22:26:13 +08:00
    搭车,自己写的微信公众号和微信支付 sdk , https://github.com/xfan001/weixin-sdk ,实际使用过,
    与框架无关,代码很简单,看看就懂了
    shijingshijing
        59
    shijingshijing  
       2016-12-21 22:28:53 +08:00
    这个要赞一下~ 呵呵。 Mark 一记
    vugusurk
        60
    vugusurk  
       2016-12-21 22:38:59 +08:00 via iPhone
    呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗

    呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗

    呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗
    wwlweihai
        61
    wwlweihai  
       2016-12-21 22:42:31 +08:00
    关于支付,目前采用 ping++的方案是个不错的选择,而且有商业的团队来保障质量。这个项目开源,是个学习的好东西。
    n37r06u3
        62
    n37r06u3  
       2016-12-21 22:44:13 +08:00
    502 Bad Gateway

    nginx/1.10.0 (Ubuntu)
    分分钟。。。
    mingyun
        63
    mingyun  
       2016-12-21 22:45:57 +08:00
    star 了,另 https://jolly23.com/ 502 了
    v4an
        64
    v4an  
       2016-12-21 23:47:51 +08:00
    i147
        65
    i147  
       2016-12-21 23:57:48 +08:00
    @wwlweihai 没错,我们也是这样。。。 pingxx 和 beecloud
    onefouroo
        66
    onefouroo  
       2016-12-22 07:18:21 +08:00 via iPhone
    马克一下 可能以后用的着
    phpdever
        67
    phpdever  
       2016-12-22 08:22:56 +08:00
    楼主,我喜欢你
    sambawy
        68
    sambawy  
       2016-12-22 09:08:55 +08:00
    先赞一个再慢慢看
    quericy
        69
    quericy  
       2016-12-22 09:13:33 +08:00
    这特么就很尴尬了
    xylitolLin
        70
    xylitolLin  
       2016-12-22 09:28:09 +08:00
    我只是来看戏的
    ahonn
        71
    ahonn  
       2016-12-22 09:38:03 +08:00
    lincolnhuang
        72
    lincolnhuang  
       2016-12-22 09:39:54 +08:00
    比较了下代码, 20 岁 CTO ,抱歉的通知您,赞我要收回了。。
    gimp
        73
    gimp  
       2016-12-22 09:55:04 +08:00
    这好尴尬...
    hhstore
        74
    hhstore  
       2016-12-22 10:04:41 +08:00   ❤️ 3
    题主做人态度不端正啊. 我仔细对比了 2 个项目的代码, 合着你是原版照抄啊!?
    你倒是改个函数名, 意思一下啊!?

    ==============================

    1. 照着别人的项目, 完整照抄, 还出来骗赞, 这个动机就很可耻.
    2. v 友给出`被抄袭人`的项目, 打脸了, 扭扭捏捏, 贴了原作者另外一个项目, 企图蒙混过关. 你抄的哪个, 你觉得大家瞎吗?
    这个做法简直是不要脸了.
    3. 抄代码的时候, 你看懂别人的代码了吗? 原作者肯定是 Python 老司机, 代码追求 1 行流, 恐怕你看不懂, 不知道怎么改吧? 这就尴尬了.
    4. 你删了 原作者 部分代码, 你知道 `你删除那部分的代码` 用意是什么吗?
    5. 学习, 借鉴, 分享, 都不可耻. 前提是首先尊重他人成果. 借鉴他人的成果, 要注明.
    6. 点进你的个人简介, 看是 20 岁的学生, Python 代码 1 行流, 写的这么溜. 显然 Python 基础不错啊, 这是个好苗子, 可惜被打脸了哇. 你这种不端正的学习态度, 如果不纠正, 会误你一生的.
    7. 这位同学, 念你还没毕业, 好好反思一下吧. 以后进了社会, 没人给你犯错的机会. 你每一次试错, 都要付出巨大的代价.


    ==============================

    路过同学, 可以仔细对比一下 原作者的代码, 和 这位 抄袭者的. 高下立判.

    原作者:
    https://github.com/zwczou/weixin-python/blob/master/weixin/pay.py

    该抄袭同学:
    https://github.com/Jolly23/wx_pay_python/blob/master/wx_pay.py

    企图蒙混的示例:
    https://github.com/zakzou/flask-weixin-pay/blob/master/example.py
    frozenshadow
        75
    frozenshadow  
       2016-12-22 10:04:53 +08:00
    刚要赞,好尴尬。。
    kghch
        76
    kghch  
       2016-12-22 10:12:48 +08:00
    注释都要照抄,这好尴尬,我赶紧 unstar 了...
    Jolly23
        77
    Jolly23  
    OP
       2016-12-22 10:14:03 +08:00
    微信支付功能集,前期开发借鉴 https://github.com/zakzou/flask-weixin-pay ,抱歉不是在 fork 上改动是因为几个月前就开始带到项目中使用,改进包括让其脱离 flask 框架限制,并且加入微信支付最新的两个营销功能,然后从我的工程代码提出来这个底层类发布。向前辈致谢
    sevncz
        78
    sevncz  
       2016-12-22 10:15:41 +08:00
    收回我的 star
    hhstore
        79
    hhstore  
       2016-12-22 10:16:37 +08:00
    @zwczou 这个是原作者吗? 2333.

    小吐槽下:
    代码风格, 过于追求 Python 代码 1 行流, 不利于团队带新手.
    另外, 代码还是写的挺优雅.老司机开车, 稳!

    ========================

    围观群众应该去 star 原作者哇.
    Jolly23
        80
    Jolly23  
    OP
       2016-12-22 10:17:28 +08:00
    @hhstore 感谢指正,但贴那个地址并不是企图蒙混过关,是真的开始就看的那个代码啊,上面有我的 contribure
    Yc1992
        81
    Yc1992  
       2016-12-22 10:23:21 +08:00
    @Jolly23 别洗了,大大方方承认,把 repo 删了重新做人。
    wpby
        82
    wpby  
       2016-12-22 10:23:26 +08:00
    这就很尴尬了 大兄弟
    vugusurk
        83
    vugusurk  
       2016-12-22 10:24:30 +08:00
    开撕开撕
    bonfy
        84
    bonfy  
       2016-12-22 10:44:10 +08:00
    这里我也来列下人物清单

    主要当事人:

    - 楼主 [zwczou]( https://github.com/zwczou)
    - 20 岁 CTO [Jolly23]( https://github.com/jolly23)

    目前情况 20 岁 CTO Star > 楼主

    另外几个隐藏人物(有可能是楼主马甲,猜测,如果不是而且后续乱入的话故事会有新剧情。。。。)

    - 原始版 flask-weixin-pay [zakzou]( https://github.com/zakzou)
    - 原始版 flask-weixin-pay 主要代码贡献 [zaczwc]( https://github.com/zaczwc)

    我只想说如果这些都是楼主马甲,请老司机你以后上路别挂这么多马甲啊,我找得都累。。。
    Jolly23
        85
    Jolly23  
    OP
       2016-12-22 10:45:15 +08:00
    首先说一句抱歉
    1. 解释下为什么贴的是另一个项目地址,并不是像 @hhstore 说的企图蒙混过关,开始开发是在几个月前,当时是从知乎上跳到 zakzou 那个 flask 微信支付项目中,当时直至昨天都不知道 zwczou 的代码和 zakzou 的代码一样,刚开始写是参照 zakzou 的,并且也提过 contribute ,现在发现他的和 zwczou 的代码一样, https://github.com/zakzou/flask-weixin-pay
    2. 刚发布那个帖子也没想到会有这么多的关注,虽然在 zakzou 代码上有改进,把 zakzou 的工程脱离了 flask 框架限制并加了几个新的营销功能,但大部分还是大部分使用了原来开源的代码,现在发现可能他的代码也是从 zwczou 那 copy 的,所以我现在也是间接 copy 了 zwczou 的代码,真的抱歉。
    3. 公司是我在大学时期创建的,法人不是我,聘请一些在读研究生做员工。
    4. 对我个人行为感到遗憾和后悔,发布没有好好考虑到原代码提供者版权问题,对不起。希望大家能原谅,给我改过的机会。以后发布代码更加遵守版权问题。对不起。已在 github 补充了说明情况。
    5. 向前辈致敬,同时也对前辈说一声对不起,对大家说声对不起。今后增强自己对于版权保护的认识,更加充分尊重原作者,抱歉。
    bonfy
        86
    bonfy  
       2016-12-22 10:46:16 +08:00
    @bonfy 从另外那里拷贝来的,此楼主 和 彼楼主 自行脑补,反了就反了吧
    soli
        87
    soli  
       2016-12-22 10:49:17 +08:00
    原作者 @zwczou 表现的很淡定哈。无论是回复还是另开一帖,都只是说代码问题,不对『抄袭』置评。
    可见心胸大度能容人。

    反观一些吃瓜群众,那么着急跳脚。。。
    chuhemiao
        88
    chuhemiao  
       2016-12-22 12:13:42 +08:00
    @ty89 说好的不撕, 2 楼情何以堪。。。
    fxxkgw
        89
    fxxkgw  
       2016-12-22 12:39:24 +08:00
    坦白说这代码写的真好 看着舒服 比我强多了 我仔细看了好几遍。。 心里暗暗佩服 LZ 。。。不过看了回帖就不知道怎么说了 总之感谢分享
    ybh37
        90
    ybh37  
       2016-12-22 13:18:53 +08:00
    V2 正能量啊
    ahkxhyl
        91
    ahkxhyl  
       2016-12-22 19:32:51 +08:00
    python 功能这么强 刚刚入门 才看几天的手册 得坚持下去~ 感谢分享~~
    billowqiu
        92
    billowqiu  
       2016-12-23 09:21:53 +08:00
    20 岁 CTO ,服啊
    wudanyang
        93
    wudanyang  
       2016-12-25 18:28:18 +08:00
    @chuhemiao 看完二楼,满满的正能量,接着往下看,画风有点不太对啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:31 · PVG 17:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.