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

2018-07-05 21:51:15 +08:00
 Ziav

由于昨天微信被爆官方的 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

5185 次点击
所在节点    全球工单系统
6 条回复
ingin
2018-07-05 22:34:02 +08:00
心平气和点,你写的东西让他们看,你会被喷死的!
Ziav
2018-07-05 22:45:11 +08:00
@ingin 就事论事而已,写的不好被喷很正常
zpxshl
2018-07-05 23:45:29 +08:00
abstract interface ...这怎么过 cr 的......
rubycedar
2018-07-06 03:53:27 +08:00
@zpxshl 反正在编译的时候会简化,怕什么? [手动滑稽
Mogugugugu
2018-07-06 08:50:20 +08:00
企鹅家的 JAVA 并不是长项,很有可能是 C++ 或者某些语言的人过来临时凑个数写的。。。
doudouwu
2018-07-06 09:51:08 +08:00
abstract interface 编译后就是 interface ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/468486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX