Skip to content

【官方调查问卷】微信支付 APIv3 Java SDK 开发者体验调查 #121

Open

Description

@xy-peng

您的功能请求与问题有关吗? 请描述您遇到的问题

为了向广大开发者提供更好的使用体验,微信支付诚挚邀请您将使用微信支付 APIv3 Java SDK中的感受反馈给我们。本问卷可能会占用您不超过2分钟的时间,感谢您的支持。

问卷系统使用的腾讯问卷,您可以点击这里,或者扫描以下小程序码参与调查。

image

描述您想要的解决方案

No response

您还有其他的方案吗?

No response

其他信息

No response

Activity

  1. pinned this issue on Jan 12, 2023
  2. lqqyyy commented on Mar 24, 2023

    @lqqyyy

    写的一坨屎,对接微信能他妈对接两天,什么垃圾东西,看的我折寿

  3. jisl1024 commented on Apr 13, 2023

    @jisl1024

    看看其他的写得sdk,或者让其他同事看看。官方文档写得让人看不太明白,sdk也是。我看着都闷了。
    自动下载证书,不能多个启动那是啥。
    这是让人看的,不是让人猜的。
    要写就写好一点

  4. royalzzz commented on Apr 21, 2023

    @royalzzz

    v3支付功能的推出可不可以给一个时间表,很多功能API字典概览都无法通过这个SDK调用,项目里面还需要引入wechatpay-apache-httpclient来实现其他功能真的很不舒服。

  5. aeman commented on Apr 26, 2023

    @aeman

    写的很好,能把写文档这个人开了吗?

  6. sandy1991 commented on Apr 26, 2023

    @sandy1991

    一个商户号只能初始化一个RSAAutoCertificateConfig 如果商户号参数发生变化 怎么重载RSAAutoCertificateConfig呢

  7. yanjingyun commented on May 2, 2023

    @yanjingyun

    写的真的像坨屎啊,一个回调的test都不知道你们想干嘛,服了。

  8. xdaa commented on May 6, 2023

    @xdaa

    wechatpay-java能否设置超时时间

  9. BTMTimor commented on May 15, 2023

    @BTMTimor

    一个商户号只能初始化一个RSAAutoCertificateConfig,项目热部署时会导致项目重启失败!!!要么改掉这个垃圾,要么给个钩子在热部署前处理下......很讨厌用反射处理这些琐事
    version:wechatpay-java:0.2.7
    stack trace:
    java.lang.IllegalStateException: The corresponding provider for the merchant already exists.
    at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.(AbstractAutoCertificateProvider.java:72)
    at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.(AbstractAutoCertificateProvider.java:49)
    at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:32)
    at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:21)
    at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider$Builder.build(RSAAutoCertificateProvider.java:111)
    at com.wechat.pay.java.core.RSAAutoCertificateConfig$Builder.build(RSAAutoCertificateConfig.java:114)

    public abstract class AbstractAutoCertificateProvider implements CertificateProvider {
        // ......
        private final Map<String, Map<String, X509Certificate>> certificateMap;
        // ......
    
        protected AbstractAutoCertificateProvider(
          String requestUrl,
          CertificateHandler certificateHandler,
          AeadCipher aeadCipher,
          HttpClient httpClient,
          String merchantId,
          Map<String, Map<String, X509Certificate>> wechatPayCertificateMap,
          int updateInterval) {
        this.merchantId = merchantId;
        synchronized (AbstractAutoCertificateProvider.class) {
          if (!wechatPayCertificateMap.containsKey(merchantId)) {
            wechatPayCertificateMap.put(merchantId, new HashMap<>());
          } else {
            throw new IllegalStateException(
                "The corresponding provider for the merchant already exists.");
          }
        }
    }
    
    
    
    /** RSA自动更新平台证书提供器 */
    public class RSAAutoCertificateProvider extends AbstractAutoCertificateProvider {
    
      private static final Map<String, Map<String, X509Certificate>> wechatPayCertificateMap =
          new ConcurrentHashMap<>(); // 证书Map
      private static final CertificateHandler rsaCertificateHandler =
          new RSACertificateHandler(); // 证书处理器
      private static final String REQUEST_URL =
          "https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA"; // 下载证书url
    
      private RSAAutoCertificateProvider(
          String merchantId, AeadCipher aeadCipher, HttpClient httpClient) {
        super(
            REQUEST_URL,
            rsaCertificateHandler,
            aeadCipher,
            httpClient,
            merchantId,
            wechatPayCertificateMap);
      }
    
    // ...
    }

    fixed:

    public class Application {
        public void onStop() {
            try {
                // 清空证书缓存:RSAAutoCertificateProvider -> static:wechatPayCertificateMap
                final Map<String, Map<String, X509Certificate>> certificateMap =
                        ReflectUtil.getDeclaredFieldValue(RSAAutoCertificateProvider.class, "wechatPayCertificateMap");
    
                certificateMap.clear();
            } catch (IllegalAccessException | NoSuchFieldException e) {
                LOG.warn("清除微信支付证书失败!", e);
            }
        }
    }
  10. lupengji commented on Jun 13, 2023

    @lupengji

    写的啥垃圾玩意,怎么接口调用都不全 怎么还好意思发出来

  11. jingjiuzcc commented on Jul 12, 2023

    @jingjiuzcc

    我建议让马化腾马总来按照你们的文档开发试试,看看你们第二天还能上班不

  12. narutocheen commented on Jul 21, 2023

    @narutocheen

    回调验签怎么用平台证书

  13. narutocheen commented on Jul 21, 2023

    @narutocheen

    java.lang.IllegalArgumentException: Illegal base64 character 2d
    at java.util.Base64$Decoder.decode0(Base64.java:714)
    at java.util.Base64$Decoder.decode(Base64.java:526)
    at java.util.Base64$Decoder.decode(Base64.java:549)
    at com.wechat.pay.java.core.util.PemUtil.loadPrivateKeyFromString(PemUtil.java:41)
    at com.wechat.pay.java.core.util.PemUtil.loadPrivateKeyFromPath(PemUtil.java:81)
    at com.wechat.pay.java.core.AbstractRSAConfigBuilder.privateKeyFromPath(AbstractRSAConfigBuilder.java:31)

  14. narutocheen commented on Jul 21, 2023

    @narutocheen

    这个错误怎么解决

  15. QifanWang commented on Jul 27, 2023

    @QifanWang

    这个错误怎么解决

    这个 Illegal base64 character 2d 对应是 '-' ,可以看下是不是证书和密钥搞混了。SDK代码从字符串加载私钥时会替换头部,如 '-----BEGIN PRIVATE KEY-----' 和尾部等,这里应该是没有成功替换,才抛这个异常。

  16. 40 remaining items

  17. 243573077 commented on Jan 1, 2025

    @243573077

    官方能出 具体 Android、IOS、JS、H5、小程序、Native的 完整示例Demo吗?

  18. to-explore-future commented on Jan 30, 2025

    @to-explore-future

    写教程的蠢货, 你们他妈的用不用 glide,看看人家 glide.load.into, 多么的简洁, 你们写的什么狗屎文档,你们他妈的给我秀什么 各种定义,谁在乎,大傻逼, 来这里的程序员在乎的是用最少的时间 完成支付的集成, 蠢货 让我来叫你们 怎么做才能扭转被骂的局面 1.来这里的程序员 无非是各种职业的 android ios uniapp h5 kmp 然后是 后台 Java php python , 给每个角色一个指定的入口 , 这个入口有这个程序员对应的所有的代码, 无法就是那么几种功能吗 登录 支付 下单 回调通知,不要写你妈的狗屎文档, 对于程序员来说 我只需要配置 各种id ,配置好之后,把这些id 传入sdk, sdk 对外只开放那种方法 登录 支付 下单 回调通知... , 就像glide一样 glide.load.into,

    写的这狗屎文档,浪费多少人大量的时间, 我日你妈

  19. zsf513 commented on Feb 18, 2025

    @zsf513

    我从未见过如此狗屎的垃圾文档

  20. feidao158 commented on Mar 11, 2025

    @feidao158

    狗屎一样的文档SDK,就这水平写出来还不赶紧裁掉?

  21. cxp4 commented on Mar 18, 2025

    @cxp4

    public static PublicKey loadPublicKeyFromString(String keyString) {
    try {
    keyString =
    keyString
    .replace("-----BEGIN PUBLIC KEY-----", "")
    .replace("-----END PUBLIC KEY-----", "")

    .replaceAll("\s+", "");
    return KeyFactory.getInstance("RSA")
    .generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(keyString)));
    } catch (NoSuchAlgorithmException e) {
    throw new UnsupportedOperationException(e);
    } catch (InvalidKeySpecException e) {
    throw new IllegalArgumentException(e);
    }

    证书公钥的头信息读取是谁写的。。。谁告诉你这个东西是替换这个的

    -----BEGIN CERTIFICATE-----
    MIIEITCCAwmgAwIBAgIUI
    。。。。。
    -----END CERTIFICATE-----
    这段证书是我今天从微信平台上申请下来的东西。你告诉我是不是有病。
    最最主要是这东西是写死在代码里的。写死的!!!!

  22. ca0t commented on Mar 18, 2025

    @ca0t

    还是值得鼓励的,这个托管项目里readme比我去年开喷的时候已经详细很多了

  23. xiazhe commented on Apr 3, 2025

    @xiazhe

    写的什么狗屎

  24. qiuhengyu commented on Apr 16, 2025

    @qiuhengyu

    狗屎一样的文档,不管是官网的还是这里的。

  25. cxp4 commented on May 12, 2025

    @cxp4
  26. lorry-913 commented on May 28, 2025

    @lorry-913

    我打电话去你们公司投诉,你们这种水平还能写sdk?你们这个sdk能调通?劝你们多学学阿里

  27. GSSYVGEG commented on Aug 7, 2025

    @GSSYVGEG

    建议参考一些海外支付平台提供的独立测试环境功能 (恢复沙箱功能), 这个测试环境里配套的功能和配置都可以配合 SDK 附带的样本工程进行调试, 开发者只需要将样本工程里的配置改成测试环境的配置, 部署好就可以跑通主要流程. 这样一来开发者就可以基于这个测试环境和样本工程进行自检, 省去了很多沟通的环节.

    参考:

    2025年8月了,还是没有。体验过海外一些支付平台比如stripe的对接开发,真的幸福太多了。
    微信支付官方应该是没多少资源和意愿去升级开发体验。毕竟微信支付的使用量摆在那,开发者多难受都得自适应

  28. lyzxhero commented on Dec 7, 2025

    @lyzxhero

    微信的支付sdk写的很糟糕

  29. hydzzxka commented on Dec 29, 2025

    @hydzzxka

    2025年12月29。23年我看你们说推进,文档你们有一点改进吗?不影响你们KPI就不管了对吧。垃圾

  30. cxp4 commented on Dec 29, 2025

    @cxp4
  31. luckbyte commented on Mar 23, 2026

    @luckbyte

    付款码支付让用 V2 的,V2 又不维护了,搁这玩你妈呢,垃圾东西

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions