收藏
回答

微信支付退款通知中的加密串req_info如何解密?


1)官方的文档和demo没有提供了方法?


2)搞这么复杂干什么,多此一举


3)网上搜的那些方法基本不能用。


我用的是java,在mac 电脑上调试。

回答关注问题邀请回答
收藏

8 个回答

  • Skyland
    Skyland
    2023-08-12

    不要转base64

        public static String decryptData(String base64Data,String key) throws Exception {
          System.out.println(key);
          SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("utf-8"), "AES");
          Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
          cipher.init(Cipher.DECRYPT_MODE, keySpec);
          return new String(cipher.doFinal(Base64Util.decodeByte(base64Data)),"utf-8");
       }
    
       public static void main(String[] args) {
          String reqInfo="xxxxxx";
    //    String reqInfoB=Base64Util.encode(reqInfo);
    //    System.out.println(Base64Util.decode(reqInfoB));
          try {
             String jiemi=WxApiV3AesUtil.decryptData(reqInfo,MD5Util.getMd5("key").toLowerCase());
             System.out.println(jiemi);
          } catch (Exception e) {
             e.printStackTrace();
          }
       }
    


    2023-08-12
    有用
    回复
  • 石磊
    石磊
    2021-02-05

    2021了,各位老板这个问题解决了吗

    2021-02-05
    有用
    回复 4
  • 王康
    王康
    2020-12-25

    参考这个:

    微信公众号退款通知(Java)_weixin_39407297的博客-CSDN博客

    https://blog.csdn.net/weixin_39407297/article/details/79261800


    2020-12-25
    有用
    回复
  • anno
    anno
    2020-05-08

    为何我一直都是 ` illegal base64 data at input byte 1110` ,只有我一个人是这样嘛?

    2020-05-08
    有用
    回复
  • Bear  学军、
    Bear 学军、
    2020-04-10

    有没有解决了的(java),搞个这加密,心累

    2020-04-10
    有用
    回复
  • ZXK^O^😄
    ZXK^O^😄
    2019-03-19

    现在也遇到这个解密问题,无限制包什么的都下载解决了  结果一直报javax.crypto.BadPaddingException: pad block corrupted

    网上搜了各种方法 尝试完了还是报这个错   请问大佬有解决这个问题吗?

    2019-03-19
    有用
    回复
  • 波
    2019-01-18

    解密方式

    解密步骤如下: 

    (1)对加密串A做base64解码,得到加密串B

    (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )

    (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)

    解密demo:https://github.com/btbxbob/wxpay-refund-notify-decrypt-helper

    2019-01-18
    有用
    回复 2
    • 杜海亮
      杜海亮
      2019-01-18

      1)我说的是java下的,不是php的,所以下面在java下讨论问题

      2)步骤中的 base64界面和MD5都没什么问题

      3)关键是 AES-256-ECB解密(PKCS7Padding)这个东西很复杂,网上说什么TMD美国出口限制,要从oracle官网下载 无限制包,修改jre下的  /jre/lib/security/US_export_policy.jar,local_policy.jar,每个jre版本还下的都不一样。

      4)最可恨的是,我都按照上面要求做了,还是不行,出现异常 Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/PKCS7Padding

      5)所以疯掉,最关键做这个没有意义。。。一个退款通知要单独加密,而其他都不加密,搞不懂为什么啊



      2019-01-18
      3
      回复
    • May
      May
      2020-12-31回复杜海亮
      楼主,最后你们用什么方式解决的这个问题,我换了jre下的jar包还是找不到AES/WXV/PKXA7Padding
      2020-12-31
      回复
  • 小阳
    小阳
    2019-01-18

    一样,也不给个示例代码。太垃圾了

    2019-01-18
    有用
    回复 3
    • 波
      2019-01-18

      解密方式

      解密步骤如下: 

      (1)对加密串A做base64解码,得到加密串B

      (2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )

      (3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)

      解密demo:https://github.com/btbxbob/wxpay-refund-notify-decrypt-helper


      2019-01-18
      回复
    • 小阳
      小阳
      2019-01-18回复

      只有php,没有java吗??

      2019-01-18
      回复
    • 波
      2019-01-18回复小阳

      您好,现在只有这个,请作为参考,后续有别的语言,会通知到各位的。

      2019-01-18
      回复
登录 后发表内容