• #65 楼 @app_sys 已经不维护了...不知道滋瓷不滋瓷

  • #53 楼 @robbin

    +----------------------+-------+-------+---------+---------+-----+-------+
    | Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
    +----------------------+-------+-------+---------+---------+-----+-------+
    | Controllers          |  7908 |  6380 |     121 |     745 |   6 |     6 |
    | Helpers              |  1380 |  1199 |       0 |     136 |   0 |     6 |
    | Models               |  7231 |  5465 |      68 |     567 |   8 |     7 |
    | Mailers              |   196 |   155 |       5 |      18 |   3 |     6 |
    | Javascripts          |  5781 |  4491 |      33 |     749 |  22 |     3 |
    | Libraries            |  1435 |  1117 |      21 |      98 |   4 |     9 |
    | Feature specs        |   145 |   120 |       0 |       1 |   0 |   118 |
    | Model specs          |   480 |   390 |       0 |       0 |   0 |     0 |
    +----------------------+-------+-------+---------+---------+-----+-------+
    | Total                | 24556 | 19317 |     248 |    2314 |   9 |     6 |
    +----------------------+-------+-------+---------+---------+-----+-------+
      Code LOC: 18807     Test LOC: 510     Code to Test Ratio: 1:0.0
    

    包含电商、SNS、API、CMS 四套大模块,也有一些遗留的孤立代码没清理,大概能删掉 2k 左右

  • 微信支付 Gem at 2015年06月15日

    #43 楼 @caiqinghua 也不难吧 比如你设置支付授权目录 https://knewone.com/orders/

    那发起支付使用 https://knewone.com/orders/wxpay 是 ok 的 那么 route 定义

    resources :orders do
      collection do
        get 'wxpay'
      end
    end
    

    然后实现 wxpay action 就可以了,只要在这个 url 里调用微信 js 支付即可 回调因为是在参数里指定,所以用 restful 风格就是 rails 的标准实践来搞没有任何问题

    AJAX 不成功恐怕要靠你自己分析了,这个自己的代码别人不好帮

    另外根据我的经验,微信给的错误信息不能全信,比如你支付授权目录设置的有问题,给你的报错不靠蒙这辈子也想不通是支付授权目录设置的问题,解决方法就是,一个尽可能的多 alert 信息(微信支付只能在微信浏览器里调试,console.log 没有),一个要多注意检查配置。

  • gon 是个好办法,不过感觉没必要,erb 直接 render 就行了,缺点就是代码高亮有可能会乱(RubyMine 不会)

  • 微信支付 Gem at 2015年06月15日

    #39 楼 @caiqinghua 你发的代码 erb 本身就是可以这么用地~ 不过我是在控制器直接渲染好 json 然后这样写

    WeixinJSBridge.invoke(
            'getBrandWCPayRequest',
            <%= raw @params %>,
            function (res) {
              if (res.err_msg == "get_brand_wcpay_request:ok") {
                window.location.href = '<%= wxpay_callback_order_path(@order) %>';
              } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
                window.location.href = '<%= order_path(@order) %>';
              } else if (res.err_msg == "get_brand_wcpay_request:fail") {
                alert('系统错误');
              } else {
                alert('未知错误');
              }
            }
    );
    
  • 微信支付 Gem at 2015年06月15日
  • #8 楼 @caiqinghua 另一方面,微信的 openid 获取是和系统的业务和技术耦合非常紧密的,所以没法单纯通过 Gem 层面抽象

  • #8 楼 @caiqinghua 因为有 omniauth-wechat-oauth2 这种更专业的 gem 解决呀

  • 用我的 gem 吧。。。就是楼上的链接,之前刚好有朋友已经踩过 APP 支付的坑了...

  • 如何用最少的字符翻转二叉树?请看:(╯°□°)╯︵ ǝǝɹʇ ʎɹɐuıq

  • @rei 似乎 hotmail 也没有收到,垃圾箱检查过了

  • 设置一个不同的 redirect_uri 呢 这个 oauth:2.0:oob 是用来测试用的,没法用于生产环境

  • @luikore 求分享

  • 微信支付 Gem at 2015年06月04日

    #33 楼 @qicaisheng 看到了,昨天忙,我稍微重构下合并,感谢!

  • 兹瓷!

  • 微信支付 Gem at 2015年06月01日

    #31 楼 @qicaisheng 辛苦~ CSRF 这个是 Rails 的防重放的机制,但是对于 API 是没有必要的,看来还是写到文档上比较好~

  • 微信支付 Gem at 2015年05月30日

    #29 楼 @qicaisheng 关于 APP 方面配置的情况,麻烦帮忙更新一下 wxpay 的文档吧~ 感谢!

    这个问题要看下日志了,可能是你路由的配置问题,文档里我的只是为了示意 实际上我们的系统里是这样配置的路由

    resources :orders do
      member do
        post 'wxpay_notify'
      end
    end
    # will generate route like /orders/:id/wxpay_notify
    
  • 微信支付 Gem at 2015年05月25日

    #24 楼 @pathbox 貌似微信支付不支持 SHA 签名吧?

  • 微信支付 Gem at 2015年05月25日

    #25 楼 @qicaisheng 理论是支持的,不过因为我目前没有环境去测试 APP 下的情况,所以避免误导没有写在文档里,如果你可以帮忙测试,通过后请告知我,更新文档、

  • #21 楼 @diguage 这次有赞助

  • 赞!

  • 祝你幸福!

  • #29 楼 @iBcker KO 将近 2w 行的 rails 项目都没有这么明显的感觉,2012mid rmbp 顶配,页面改动后不需要重启 server,但是重编译看页面复杂度最慢我观测过的可以到 5s,确实远不如 php,但是对比其他语言比如 python 并没有什么劣势

  • 微信开放平台 Omniauth 探索 at 2015年05月05日

    #14 楼 @ruby_sky unionid 那个不用那么麻烦,如果有开放平台,那么授权会返回 unionid,所以略修改下那俩 gem 的 strategy 就可以啦

  • 微信开放平台 Omniauth 探索 at 2015年05月05日

    #12 楼 @ruby_sky 其实也还好了,像 KO 这种网站会接入多家网站,对于微信来说要多存一个 UnionID,存储数据结构要考虑一下。

    话说我看过 omniauth-wechat-oauth2 还有我们用的 omniauth-wechat 都没把 unionid 放到返回的结构体里,按照微信支付的文档来看应当会随着返回的。 另外这两个 Gem(后者我贡献过代码解决了)不支持动态定制 scope(scope 在配置写死或者根据传入 URL 参数)还有 state 参数(这个做返回后的页面跳转很有帮助)

    当然啦,是不是坑还是结合业务来看的。 首先,定制 scope 在一些场景下很有必要,比如,微信浏览器里的分享到___API,是需要 access_token 的,但此时如果 scope 为 snsapi_userinfo,那么就会弹出授权框,影响用户体验。但是用户注册的时候,还是希望告知用户授权并且这样也可以拿到更全面的用户信息,这时候就需要 snsapi_userinfo 了。

    另外,要为微信设计特别的授权流程(如果多网站接入的话),前边说了,从微信处授权有两种目的:1.方便调用分享 API 2.用户注册 要为这两种情况设计不同的行为和交互,而其他网站的接入回调的业务逻辑通常是统一的,这就引入了额外的开发成本。

  • 微信开放平台 Omniauth 探索 at 2015年05月04日

    话说 LZ 可以考虑再深入一步,讲讲开放平台 unionid 的问题,这个估计是对接微信时最大的坑

  • 准备自己写一个网站 at 2015年05月01日

    #5 楼 @kouunn 你这样跟写网站完全是两码事了,外挂翻译完全是不同的技术

  • 准备自己写一个网站 at 2015年05月01日

    #2 楼 @kouunn 这就是 i18n 做的事

  • 👍

  • #20 楼 @jicheng1014 笑来老师是投资人啦