Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IllegalArgumentException: Last unit does not have enough valid bits #319

Open
ylx19931228 opened this issue Dec 2, 2024 · 13 comments
Open
Labels
bug Something isn't working

Comments

@ylx19931228
Copy link

错误描述

有关微信探测流量问题。服务端已发送4xx/5xx http返回code。
微信请求参数:
header signature 参数:WECHATPAY/SIGNTEST/2sWfO+6tVVsZonOXBXHOrle0TugJ31jDV3iGpjFchMYEyEZ48LxAmfW2gMXkP7Ce1OLORt7wHxkgBwTBHn9/JpPBwDFjiHMhSQCEYkk/gIXdO1E7dz6fnMmMqmI2urSR8WDWAG0jdIGFbnykjVFrQa7E1RhNNEIz476tmfj5Zp7W/kE1q7cxZIPumELjwfZHXybvrFMuYNEcf8Eq50V+I1e5onuIAa3RIuIIy30Kl2RANQJx1inQ0SirJjFtONAcPnLDWpeJuVCfRPLXE4ra5qsSwxbUDvnCAbTkz4L1mSZ/zyv80hd9t8upwSLbLiYJWV97N04Pb74zCg==

header timestamp 参数:1733109540

header nonce 参数:xQWHK22dufHjLYg07545neOg4llwMJCJ

header serial 参数:51856640BA57CBD6343BA9EA2D409A9E9AC5EB65

body 参数:{"id":"7442f44b-aa13-5a7c-b6a9-51c5c8ace319","create_time":"2024-12-02T11:18:54+08:00","resource_type":"encrypt-resource","event_type":"MCHTRANSFER.BATCH.FINISHED","summary":"商家转账批次完成通知","resource":{"original_type":"mch_payment","algorithm":"AEAD_AES_256_GCM","ciphertext":"xZxoYIF+iotAhrQ7O0iTVLEuVqqRQscDHXww3bZjO1YmFBAtNADtC+R/4z0ZHsub086VImQpjoeDAlWoS1xVuHquTGaG7ozNjzFOT742/cBcARUw4zFVqX4CZWpMoqfCYuztO6BvtowDHNbXcz7IdrOwAHW1f7nZJb3hOHaiXrfX+s8YSZ8uLFRLljqWH7ZqeciJBt0qyApwnDCzLYrga6QG1pBxxOFVlQIgAXknS3uoRHoj9ddb2uVTwFgTFT12e1q6gg1mMtRD/wsbyQsg1HWsj5Pw4pxrXMtp+8Ho4VFuJ0susbpBrklpn6UMP8ezfcZGv/OnBfz2XMYE4kjsdC1u9fn3VSQTVl7UQNUEAcaWHOGNxduhmV5L/cXuX/hOmzwEzzrCG4OAxeMKBwEqNWRxkLtVfYRMmRJMNmWBPoJUTQ==","associated_data":"mch_payment","nonce":"PCnxcpKD3eQZ"}}

返回参数为:
123
400

重现bug的步骤

  1. 微信探测流量 header。
  2. 解密出现错误,进行捕捉。
  3. 捕捉完成后,返回http code 为 400
  4. 返回成功后,微信商户未再次给服务端发送正确的签名。
    123

预期行为

  1. 探测流量发送后,服务端已返回400 请求码。
  2. 微信支付,再次发送正确参数。给到服务端。

导致错误的代码片段

try {
            WechatRedPacket transaction = notificationParser.parse(requestParam, WechatRedPacket.class);
            log.info("解析后的数据为:{}", JSON.toJSONString(transaction));
        } catch (ValidationException e) {
            // 签名验证失败,返回 401 UNAUTHORIZED 状态码
            log.error("sign verification failed", e);
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
        } catch (IllegalArgumentException e) {
            log.error("sign verification failed", e);
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
        }

操作系统

linux

Java 版本

Java 8

wechatpay-java 版本

v0.2.15

其他信息

No response

@ylx19931228 ylx19931228 added the bug Something isn't working label Dec 2, 2024
@wswdavid
Copy link

wswdavid commented Dec 2, 2024

https://support.pay.weixin.qq.com/online-service
可以用订单号等信息,通过在线技术支持渠道反馈问题排查

@ylx19931228
Copy link
Author

https://support.pay.weixin.qq.com/online-service 可以用订单号等信息,通过在线技术支持渠道反馈问题排查

AI开发助手? 这个没有用

@Memory-9527
Copy link

探测流量不会因为你给400/500 就会重复下发

@ylx19931228
Copy link
Author

探测流量不会因为你给400/500 就会重复下发

那怎么办 给用户发送的金额. 后面也没有通知发给我

@Memory-9527
Copy link

探测流量不会因为你给400/500 就会重复下发

那怎么办 给用户发送的金额. 后面也没有通知发给我

正常的通知下发和探测流量不冲突,不是一回事

@ylx19931228
Copy link
Author

探测流量不会因为你给400/500 就会重复下发

那怎么办 给用户发送的金额. 后面也没有通知发给我

正常的通知下发和探测流量不冲突,不是一回事

那这个就有BUG了 后续我也没看见签名进来. 我现在差不多50%的订单都卡在中间状态

@Memory-9527
Copy link

探测流量不会因为你给400/500 就会重复下发

那怎么办 给用户发送的金额. 后面也没有通知发给我

正常的通知下发和探测流量不冲突,不是一回事

那这个就有BUG了 后续我也没看见签名进来. 我现在差不多50%的订单都卡在中间状态

收不到回调要先看是自己没有收到还是自己代码写的有问题没有正常处理,可以拿420单号找在线技术支持查日志

@ylx19931228
Copy link
Author

420

现在有个疑问, 微信文档写的很清楚. 流量探测会因为服务端发送400后, 会发送正确的签名? 那这句话写了跟白写一样?

@ylx19931228
Copy link
Author

探测流量不会因为你给400/500 就会重复下发

那怎么办 给用户发送的金额. 后面也没有通知发给我

正常的通知下发和探测流量不冲突,不是一回事

那这个就有BUG了 后续我也没看见签名进来. 我现在差不多50%的订单都卡在中间状态

收不到回调要先看是自己没有收到还是自己代码写的有问题没有正常处理,可以拿420单号找在线技术支持查日志

321

@Memory-9527
Copy link

Memory-9527 commented Dec 2, 2024

你这一半以上收不到回调,大概率不是探测流量的问题,无论你对探测流量回复什么,都不影响正常的通知下发,正常流量是400后会重试;探测流量是非40x/50x会重试,最多试过-2次每天

@ylx19931228
Copy link
Author

你这一半以上收不到回调,大概率不是探测流量的问题,无论你对探测流量回复什么,都不影响正常的通知下发,正常流量是400后会重试;探测流量是非40x/50x会重试,最多试过-2次每天

那我这个情况不止了.
1.目前在测试阶段. 正常签名已经返过200. 后续没有再发. 这个是正确的.
2.在打款成功后,我查看过日志.只有流量探测. 没有正常签名进入过.

我再贴一张.controller的操作.帮忙看下是否这个的问题.
1233

@Memory-9527
Copy link

你这是什么接口?商家转账?品牌红包?

@yibanyangcong
Copy link

你这是什么接口?商家转账?品牌红包?

商户转账零钱,遇到一样问题,每天都会有一个签名探测,验证失败后没有回调正常签名

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants