Skip to content

统一下单签名值与返回值不一致 #284

@ivancxj

Description

@ivancxj

https://github.com/Wechat-Group/weixin-java-tools/blob/master/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java#L203
WxPayServiceImpl的200行-213行

      configMap.put("prepayid", prepayId);
      configMap.put("partnerid", partnerid);
      configMap.put("package", "Sign=WXPay");
      configMap.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000));
      configMap.put("noncestr", String.valueOf(System.currentTimeMillis()));
      configMap.put("appid", appId);
      // 此map用于客户端与微信服务器交互
      payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey()));
      payInfo.put("prepayId", prepayId);
      payInfo.put("partnerId", partnerid);
      payInfo.put("appId", appId);
      payInfo.put("packageValue", "Sign=WXPay");
      payInfo.put("timeStamp", String.valueOf(System.currentTimeMillis() / 1000));
      payInfo.put("nonceStr", String.valueOf(System.currentTimeMillis()));

在configMap生成签名需要字段timestamp和noncestr是实时生成,但是返回的时候payInfo又重新生成一个新的,实际签名用两个字段与返回的不一致,导致客户端签名失败
可以改成

      String timestamp =  String.valueOf(System.currentTimeMillis() / 1000);
      String nonceStr =  String.valueOf(System.currentTimeMillis());
      configMap.put("prepayid", prepayId);
      configMap.put("partnerid", partnerid);
      configMap.put("package", "Sign=WXPay");
      configMap.put("timestamp", timestamp); // 同一个timestamp
      configMap.put("noncestr", nonceStr); // 同一个nonceStr
      configMap.put("appid", appId);
      // 此map用于客户端与微信服务器交互
      payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey()));
      payInfo.put("prepayId", prepayId);
      payInfo.put("partnerId", partnerid);
      payInfo.put("appId", appId);
      payInfo.put("packageValue", "Sign=WXPay");
      payInfo.put("timeStamp", timestamp); // 同一个timestamp
      payInfo.put("nonceStr", nonceStr); // 同一个nonceStr

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions