wechatpay-apiv3 / wechatpay-java

微信支付 APIv3 的官方 Java Library
Apache License 2.0
869 stars 195 forks source link

wechatpay-java 调用nativePay支付接口报错 #60

Closed xl277541808 closed 1 year ago

xl277541808 commented 1 year ago

错误描述

我用的版本是: image 调用的接口是: image 我跟进去看了是: image image 看起来参数的顺序都不对。 请问,我的是不是不是最新版本的wechatpay-java呀? image 现在该怎么办呢?

重现bug的步骤

如上

预期行为

如上

导致错误的代码片段

No response

操作系统

windows

Java 版本

java 17

wechatpay-java 版本

0.2.0

其他信息

如上

xy-peng commented 1 year ago

wechatpay-java 依赖的是 OkHttp 4.x,你项目中引入的是 3.x。

建议谨慎地升级,参考adding-constraints-transitive-deps 指定 OkHttp 4.x 版本。按照 OkHttp 官方的迁移指南,OkHttp 4.x 和 OkHttp 3.x 是二进制和 Java 源代码兼容。

希望收到你兼容性的报告。

xl277541808 commented 1 year ago

可是我是直接引的jar包呀, image

com.github.wechatpay-apiv3 wechatpay-java 0.2.0

意思是这个打好的jar里面引用错了,需要我自己去引OkHttp 4.x 版本?

xy-peng commented 1 year ago

猜测是你在项目主动依赖了 OkHttp 3.x 或者依赖的其他组件依赖了。你用 IDE 或者 gradle 查看下项目的依赖就知道了。

也可以参考下其他项目 类似问题的指引

zijianrs commented 1 year ago

@xl277541808 我跟你遇到了一样的问题 按照如下所示修改 pom 文件得以解决

        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-java</artifactId>
            <version>0.2.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>okhttp</artifactId>
                    <groupId>com.squareup.okhttp3</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.10.0</version>
        </dependency>

@xy-peng 我查看了下依赖树 发现 wechatpay-java-core 引入的 okhttp 版本是 3.14.9 如下图所示 image

xl277541808 commented 1 year ago

@xl277541808 我跟你遇到了一样的问题 按照如下所示修改 pom 文件得以解决

        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-java</artifactId>
            <version>0.2.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>okhttp</artifactId>
                    <groupId>com.squareup.okhttp3</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.10.0</version>
        </dependency>

@xy-peng 我查看了下依赖树 发现 wechatpay-java-core 引入的 okhttp 版本是 3.14.9 如下图所示 image

@zijianrs 大佬,我按照你说的试过。原本是这样, wechatpay-java-core 自身内部依赖的是okhttp 3.14.9 image 然后,改了之后: image 运行报错,提示同样的问题 image

xl277541808 commented 1 year ago

@zijianrs 后来,为了赶时间,没有研究了。用了另一种方式:wechatpay-apache-httpclient image 这个感觉挺简单的。拿进来就能用了, image 然后是调用接口,二维码地址一下就出来了 image 我猜,是不是环境不一样。我是在spring-boot api 里面使用的