【官方调查问卷】微信支付 APIv3 Java SDK 开发者体验调查
xy-peng opened this issue · 48 comments
您的功能请求与问题有关吗? 请描述您遇到的问题
为了向广大开发者提供更好的使用体验,微信支付诚挚邀请您将使用微信支付 APIv3 Java SDK中的感受反馈给我们。本问卷可能会占用您不超过2分钟的时间,感谢您的支持。
问卷系统使用的腾讯问卷,您可以点击这里,或者扫描以下小程序码参与调查。
描述您想要的解决方案
No response
您还有其他的方案吗?
No response
其他信息
No response
写的一坨屎,对接微信能他妈对接两天,什么垃圾东西,看的我折寿
看看其他的写得sdk,或者让其他同事看看。官方文档写得让人看不太明白,sdk也是。我看着都闷了。
自动下载证书,不能多个启动那是啥。
这是让人看的,不是让人猜的。
要写就写好一点
v3支付功能的推出可不可以给一个时间表,很多功能API字典概览都无法通过这个SDK调用,项目里面还需要引入wechatpay-apache-httpclient来实现其他功能真的很不舒服。
写的很好,能把写文档这个人开了吗?
一个商户号只能初始化一个RSAAutoCertificateConfig 如果商户号参数发生变化 怎么重载RSAAutoCertificateConfig呢
写的真的像坨屎啊,一个回调的test都不知道你们想干嘛,服了。
wechatpay-java能否设置超时时间
一个商户号只能初始化一个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);
}
}
}
写的啥垃圾玩意,怎么接口调用都不全 怎么还好意思发出来
我建议让马化腾马总来按照你们的文档开发试试,看看你们第二天还能上班不
回调验签怎么用平台证书
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)
这个错误怎么解决
这个错误怎么解决
这个 Illegal base64 character 2d 对应是 '-' ,可以看下是不是证书和密钥搞混了。SDK代码从字符串加载私钥时会替换头部,如 '-----BEGIN PRIVATE KEY-----' 和尾部等,这里应该是没有成功替换,才抛这个异常。
一次接上,很好用啊 👍
看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档
要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.
看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.
虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。
看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.
虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。
你说的很有道理让我瞬间没了脾气,那么我就一个问题: 你们sdk内的api有相关文档吗?
这个托管项目也就两三个使用示例, 你们官网上“API字典概览”里的接口都有列举出来吗?
说回”API字典概览“, 这里所有接口没有一个有用sdk方式调用, 给的出入参也好, 给的api接口也好,都是http + json请求调用, sdk相应的接口在哪儿呢?
好,在源码使用实例是吧, 一个在官方文档上写着“wechatpay-java (推荐)”两个字的sdk,结果在官方文档上找不到使用实例, 还得去翻源码里的使用实例去用?
谁家对接sdk要去源码里翻使用实例? 我上面说的那三家公司没有一个.
另外, 一个相同对象放在三、四个不同包里我都懒得吐槽了
拿一个分账举例, 没有任何文档告诉我在sdk中怎么调用分账接口, 我只能打开源码, 在项目里一个个找,直到找到profitssharing包, 因为这个包名跟你们接口路径/profitsharing对上了,再去找service请求入参,对照,确保和文档一致.一个接口能对接一小时
看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.
虽然这里是 SDK 使用调研,不过,是哪个文档写得差让您这么愤怒?可以给下链接&指出具体的问题,我们反馈给对应的业务团队。
你说的很有道理让我瞬间没了脾气,那么我就一个问题: 你们sdk内的api有相关文档吗? 这个托管项目也就两三个使用示例, 你们官网上“API字典概览”里的接口都有列举出来吗? 说回”API字典概览“, 这里所有接口没有一个有用sdk方式调用, 给的出入参也好, 给的api接口也好,都是http + json请求调用, sdk相应的接口在哪儿呢? 好,在源码使用实例是吧, 一个在官方文档上写着“wechatpay-java (推荐)”两个字的sdk,结果在官方文档上找不到使用实例, 还得去翻源码里的使用实例去用? 谁家对接sdk要去源码里翻使用实例? 我上面说的那三家公司没有一个. 另外, 一个相同对象放在三、四个不同包里我都懒得吐槽了 拿一个分账举例, 没有任何文档告诉我在sdk中怎么调用分账接口, 我只能打开源码, 在项目里一个个找,直到找到profitssharing包, 因为这个包名跟你们接口路径/profitsharing对上了,再去找service请求入参,对照,确保和文档一致.一个接口能对接一小时
感谢反馈,我理解这里有两个问题:
- SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
- 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。
你们不要在吵了啦,会出人命的~
不要吵了,觉得哪里不好可以考虑PR一起改进下 ^_^
感谢反馈,我理解这里有两个问题:
- SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
- 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。
目前我们用到了:
基础支付中的H5支付、app支付、小程序支付、合单支付、退款、支付以及退款相关 查询和回调
资金应用中的分账(11个全部接口)
营销工具中的商家优惠券:小程序、h5、图片上传(营销专用)
风险合规中的投诉、回复、反馈
其他能力中的图片上传
不过昨天晚上我们把这些都接完了, 所以也不再需要什么支持了, 基本上都是翻源码然后对照普通api文档的方式去对接, 我想这20多个接口这么接下来你也能理解我为什么又急又气了吧
感谢反馈,我理解这里有两个问题:
- SDK 使用示例不全。目前确实只有部分业务提供了示例,我们也在推动这块的完善;请问,您目前比较需要的是哪个能力的使用示例,我们反馈给对应的业务团队;
- 在不同包里含同一个对象。这里本质是由于 API 能力在不同的 API 产品中都有使用导致的,我们已经在规划这块能力的聚合。
目前我们用到了: 基础支付中的H5支付、app支付、小程序支付、合单支付、退款、支付以及退款相关 查询和回调 资金应用中的分账(11个全部接口) 营销工具中的商家优惠券:小程序、h5、图片上传(营销专用) 风险合规中的投诉、回复、反馈 其他能力中的图片上传 不过昨天晚上我们把这些都接完了, 所以也不再需要什么支持了, 基本上都是翻源码然后对照普通api文档的方式去对接, 我想这20多个接口这么接下来你也能理解我为什么又急又气了吧
可以理解,感谢反馈~
可以把有关微信收付通相关的所有api都完善一下吗?一方面推收付通,不接入这个整合方案,就禁用我们当前微信支付方式,还只给两个月。另一方面接入微信收付通一堆问题(sdk不完善、申请流程坑多)。真的谢了
请求模型同名源码结构是好看了,但是实际开发难受的不是一星半点,私以为使用大驼峰的api接口命名相关请求模型要好得多,毕竟不可能要求所有场景都上微服务,想要抽象一层Service作为api的统一不同支付能力的调用的情况是很合理的
jsapi支付成功了 回调验签按照文档步骤做的 一直验签失败 我真的累死了
苟使中的苟使
你们要整SDK不整个完整的Demo出来,让人怎么开发?就给个对象,里面的参数让开发者猜是干嘛的?
还有,你们整个微信事业群不沟通的?一个地方字段叫这个名字,另一个叫另一个名字,变量名还都不一样,CR做了没?
就这样子验收的?你要不看看人家支付宝的写的?
顺带再提一嘴,微信小程序的文档也是一坨🫵!还卡!
扫描付款码支付这块是需要我们自己手写一个吗?
扫描付款码支付这块是需要我们自己手写一个吗?
Native支付就是生成二维码 😂
这个错误怎么解决
这个 Illegal base64 character 2d 对应是 '-' ,可以看下是不是证书和密钥搞混了。SDK代码从字符串加载私钥时会替换头部,如 '-----BEGIN PRIVATE KEY-----' 和尾部等,这里应该是没有成功替换,才抛这个异常。
看到这个回答醍醐灌顶,把Certificate.pem和privateKey搞错了。导致头尾没有替换掉。
我就想问问 平台首付通模块的能力,官方推荐SDK,完了我都开干了,集成进来支付都对接完了,才发现 进件 相关的接口居然没有。。我以为是我眼花,找了半天还真没有
我来说句好的,东西还是挺不错的,对接起来很快,除开证书一直错误捣鼓了一两天后发现自己的证书确实有问题外,就是一些功能得翻源码来找,能完善文档就很好了,像是退款业务都没在文档里说明
建议参考一些海外支付平台提供的独立测试环境功能 (恢复沙箱功能), 这个测试环境里配套的功能和配置都可以配合 SDK 附带的样本工程进行调试, 开发者只需要将样本工程里的配置改成测试环境的配置, 部署好就可以跑通主要流程.
这样一来开发者就可以基于这个测试环境和样本工程进行自检, 省去了很多沟通的环节.
参考:
建议参考一些海外支付平台提供的独立测试环境功能 (恢复沙箱功能), 这个测试环境里配套的功能和配置都可以配合 SDK 附带的样本工程进行调试, 开发者只需要将样本工程里的配置改成测试环境的配置, 部署好就可以跑通主要流程. 这样一来开发者就可以基于这个测试环境和样本工程进行自检, 省去了很多沟通的环节.
参考:
国内的支付基本都直接接生产,文档能完善就好了,沙箱就不要求了。
privateKeyPath 能不能动态加载多个不相同的文件
比如多个商户号 多个证书文件
看看阿里的文档,不行去看看易宝、宝付、连连这些小公司的文档 要不是我是21世纪受过教育的好青年, 碰见你们这种把屎放在放在盘子里端出来给用户看的团队, 我高低得上去问候一遍你们亲人.
家人,支付宝和阿里的一些文档写的也跟x一样....之前对接支付宝的一边对接一边骂街。
所以咱先来评论区看看这东西能不能用