wechatpay-java icon indicating copy to clipboard operation
wechatpay-java copied to clipboard

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

Open xy-peng opened this issue 2 years ago • 50 comments

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

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

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

image

描述您想要的解决方案

No response

您还有其他的方案吗?

No response

其他信息

No response

xy-peng avatar Jan 12 '23 08:01 xy-peng

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

lqqyyy avatar Mar 24 '23 03:03 lqqyyy

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

jsl1992 avatar Apr 13 '23 05:04 jsl1992

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

royalzzz avatar Apr 21 '23 09:04 royalzzz

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

aeman avatar Apr 26 '23 02:04 aeman

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

sandy1991 avatar Apr 26 '23 03:04 sandy1991

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

yanjingyun avatar May 02 '23 16:05 yanjingyun

wechatpay-java能否设置超时时间

xdaa avatar May 06 '23 10:05 xdaa

一个商户号只能初始化一个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);
        }
    }
}

BTMTimor avatar May 15 '23 13:05 BTMTimor

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

lupengji avatar Jun 13 '23 02:06 lupengji

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

jingjiuzcc avatar Jul 12 '23 09:07 jingjiuzcc

回调验签怎么用平台证书

narutocheen avatar Jul 21 '23 09:07 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)

narutocheen avatar Jul 21 '23 09:07 narutocheen

这个错误怎么解决

narutocheen avatar Jul 21 '23 09:07 narutocheen

这个错误怎么解决

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

QifanWang avatar Jul 27 '23 06:07 QifanWang

一次接上,很好用啊 👍

dyc87112 avatar Aug 06 '23 17:08 dyc87112

看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.

ca0t avatar Aug 23 '23 10:08 ca0t

看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.

虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。

Eric-Lee-Handyman avatar Aug 23 '23 10:08 Eric-Lee-Handyman

看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.

虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。

你说的很有道理让我瞬间没了脾气,那么我就一个问题: 你们sdk内的api有相关文档吗? 这个托管项目也就两三个使用示例, 你们官网上“API字典概览”里的接口都有列举出来吗? 说回”API字典概览“, 这里所有接口没有一个有用sdk方式调用, 给的出入参也好, 给的api接口也好,都是http + json请求调用, sdk相应的接口在哪儿呢? 好,在源码使用实例是吧, 一个在官方文档上写着“wechatpay-java (推荐)”两个字的sdk,结果在官方文档上找不到使用实例, 还得去翻源码里的使用实例去用? 谁家对接sdk要去源码里翻使用实例? 我上面说的那三家公司没有一个. 另外, 一个相同对象放在三、四个不同包里我都懒得吐槽了 拿一个分账举例, 没有任何文档告诉我在sdk中怎么调用分账接口, 我只能打开源码, 在项目里一个个找,直到找到profitssharing包, 因为这个包名跟你们接口路径/profitsharing对上了,再去找service请求入参,对照,确保和文档一致.一个接口能对接一小时

ca0t avatar Aug 23 '23 12:08 ca0t

看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.

虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。

你说的很有道理让我瞬间没了脾气,那么我就一个问题: 你们sdk内的api有相关文档吗? 这个托管项目也就两三个使用示例, 你们官网上“API字典概览”里的接口都有列举出来吗? 说回”API字典概览“, 这里所有接口没有一个有用sdk方式调用, 给的出入参也好, 给的api接口也好,都是http + json请求调用, sdk相应的接口在哪儿呢? 好,在源码使用实例是吧, 一个在官方文档上写着“wechatpay-java (推荐)”两个字的sdk,结果在官方文档上找不到使用实例, 还得去翻源码里的使用实例去用? 谁家对接sdk要去源码里翻使用实例? 我上面说的那三家公司没有一个. 另外, 一个相同对象放在三、四个不同包里我都懒得吐槽了 拿一个分账举例, 没有任何文档告诉我在sdk中怎么调用分账接口, 我只能打开源码, 在项目里一个个找,直到找到profitssharing包, 因为这个包名跟你们接口路径/profitsharing对上了,再去找service请求入参,对照,确保和文档一致.一个接口能对接一小时

感谢反馈,我理解这里有两个问题:

  1. SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
  2. 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。

Eric-Lee-Handyman avatar Aug 23 '23 12:08 Eric-Lee-Handyman

你们不要在吵了啦,会出人命的~

royalzzz avatar Aug 23 '23 13:08 royalzzz

不要吵了,觉得哪里不好可以考虑PR一起改进下 ^_^

dyc87112 avatar Aug 23 '23 17:08 dyc87112

感谢反馈,我理解这里有两个问题:

  1. SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
  2. 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。

目前我们用到了: 基础支付中的H5支付、app支付、小程序支付、合单支付、退款、支付以及退款相关 查询和回调 资金应用中的分账(11个全部接口) 营销工具中的商家优惠券:小程序、h5、图片上传(营销专用) 风险合规中的投诉、回复、反馈 其他能力中的图片上传 不过昨天晚上我们把这些都接完了, 所以也不再需要什么支持了, 基本上都是翻源码然后对照普通api文档的方式去对接, 我想这20多个接口这么接下来你也能理解我为什么又急又气了吧

ca0t avatar Aug 24 '23 03:08 ca0t

感谢反馈,我理解这里有两个问题:

  1. SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
  2. 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。

目前我们用到了: 基础支付中的H5支付、app支付、小程序支付、合单支付、退款、支付以及退款相关 查询和回调 资金应用中的分账(11个全部接口) 营销工具中的商家优惠券:小程序、h5、图片上传(营销专用) 风险合规中的投诉、回复、反馈 其他能力中的图片上传 不过昨天晚上我们把这些都接完了, 所以也不再需要什么支持了, 基本上都是翻源码然后对照普通api文档的方式去对接, 我想这20多个接口这么接下来你也能理解我为什么又急又气了吧

可以理解,感谢反馈~

Eric-Lee-Handyman avatar Aug 24 '23 04:08 Eric-Lee-Handyman

可以把有关微信收付通相关的所有api都完善一下吗?一方面推收付通,不接入这个整合方案,就禁用我们当前微信支付方式,还只给两个月。另一方面接入微信收付通一堆问题(sdk不完善、申请流程坑多)。真的谢了

987423093 avatar Sep 07 '23 11:09 987423093

请求模型同名源码结构是好看了,但是实际开发难受的不是一星半点,私以为使用大驼峰的api接口命名相关请求模型要好得多,毕竟不可能要求所有场景都上微服务,想要抽象一层Service作为api的统一不同支付能力的调用的情况是很合理的

DazeCake avatar Sep 07 '23 17:09 DazeCake

jsapi支付成功了 回调验签按照文档步骤做的 一直验签失败 我真的累死了

h353617145 avatar Oct 13 '23 14:10 h353617145

苟使中的苟使

niuu-u avatar Oct 24 '23 09:10 niuu-u

你们要整SDK不整个完整的Demo出来,让人怎么开发?就给个对象,里面的参数让开发者猜是干嘛的? 还有,你们整个微信事业群不沟通的?一个地方字段叫这个名字,另一个叫另一个名字,变量名还都不一样,CR做了没? 就这样子验收的?你要不看看人家支付宝的写的? 顺带再提一嘴,微信小程序的文档也是一坨🫵!还卡!

HappyAxin avatar Oct 25 '23 13:10 HappyAxin

扫描付款码支付这块是需要我们自己手写一个吗?

rayliu8499 avatar Nov 21 '23 05:11 rayliu8499

扫描付款码支付这块是需要我们自己手写一个吗?

Native支付就是生成二维码 😂

Zhang668-z avatar Nov 29 '23 08:11 Zhang668-z