编写官方微信支付 Java SDK 的同学领下工单! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
Ziav
V2EX    全球工单系统

编写官方微信支付 Java SDK 的同学领下工单!

  •  
  •   Ziav 2018 年 7 月 5 日
    这是一个创建于 2837 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于昨天微信被爆官方的 Java SDK 存在支付漏洞,于是今天官方就放出了最新的 SDK。刚好正在接支付这块,立马就 down 了最新的 SDK,maven install,然后项目引入。然后项目就报错了。。。看到里面各种奇葩的写法,让我对鹅厂的 Java 水平表示严重的怀疑。

    首先,更新后多了一个 IWXPayDomain 接口,BUT,里面定义的 abstract 是什么鬼??这特么到是接口还是抽象类???真是我孤陋寡闻了,第一次见到这么神奇的写法。

    package com.github.wxpay.sdk; /** * 域名管理,实现主备域名自动切换 */ public abstract interface IWXPayDomain { /** * 上报域名网络状况 * @param domain 域名。 比如:api.mch.weixin.qq.com * @param elapsedTimeMillis 耗时 * @param ex 网络请求中出现的异常。 * null 表示没有异常 * ConnectTimeoutException,表示建立网络连接异常 * UnknownHostException, 表示 dns 解析异常 */ abstract void report(final String domain, long elapsedTimeMillis, final Exception ex); /** * 获取域名 * @param config 配置 * @return 域名 */ abstract DomainInfo getDomain(final WXPayConfig config); static class DomainInfo{ public String domain; //域名 public boolean primaryDomain; //该域名是否为主域名。例如:api.mch.weixin.qq.com 为主域名 public DomainInfo(String domain, boolean primaryDomain) { this.domain = domain; this.primaryDomain = primaryDomain; } @Override public String toString() { return "DomainInfo{" + "domain='" + domain + '\'' + ", primaryDomain=" + primaryDomain + '}'; } } } 

    然后,接下来神奇的地方来了,原来的 WXPayConfig 接口改成了抽象类,然鹅。。。里面抽象方法的访问控制权限是 default ??额。。你让别人怎么在不同的 package 下 Override 这个抽象类???

    public abstract class WXPayConfig { /** * 获取 App ID * * @return App ID */ abstract String getAppID(); /** * 获取 Mch ID * * @return Mch ID */ abstract String getMchID(); /** * 获取 API 密钥 * * @return API 密钥 */ abstract String getKey(); /** * 获取商户证书内容 * * @return 商户证书内容 */ abstract InputStream getCertStream(); } 

    欢迎鉴赏,SDK 下载地址: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

    6 条回复    2018-07-06 09:51:08 +08:00
    ingin
        1
    ingin  
       2018 年 7 月 5 日 via Android   1
    心平气和点,你写的东西让他们看,你会被喷死的!
    Ziav
        2
    Ziav  
    OP
       2018 年 7 月 5 日 via Android
    @ingin 就事论事而已,写的不好被喷很正常
    zpxshl
        3
    zpxshl  
       2018 年 7 月 5 日 via Android
    abstract interface ...这怎么过 cr 的......
    rubycedar
        4
    rubycedar  
       2018 年 7 月 6 日 via iPhone
    @zpxshl 反正在编译的时候会简化,怕什么? [手动滑稽
    Mogugugugu
        5
    Mogugugugu  
       2018 年 7 月 6 日 via Adroid
    企鹅家的 JAVA 并不是长项,很有可能是 C++ 或者某些语言的人过来临时凑个数写的。。。
    doudouwu
        6
    doudouwu  
       2018 年 7 月 6 日
    abstract interface 编译后就是 interface ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     861 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 20:45 PVG 04:45 LAX 13:45 JFK 16:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86