收藏
回答

微信支付V3 JSAPI 支付签名验证失败?

后台加密算法:

/**
 * 获取签名
 *
 * @param appId          小程序ID
 * @param timeStamp      时间戳
 * @param nonceStr       随机字符串
 * @param prepayId       订单详情扩展字符串
 * @param privateKeyPath 私钥路径
 * @return String
 */
public static String generatePaySign(String appId, String timeStamp, String nonceStr, String prepayId, String privateKeyPath) {
    try {
        // wx4*********36\n1698200889\nI861W82KHVUTZWRUIEV286NNBR1X3LRS\nprepay_id=wx2510280927566122c3d35b6b2273710000\n
        String originStr = """
                %s\\n%s\\n%s\\n%s\\n
                """.formatted(appId, timeStamp, nonceStr, prepayId).trim();
        PrivateKey privateKey = PemUtil.loadPrivateKeyFromPath(privateKeyPath);
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privateKey);
        signature.update(originStr.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(signature.sign());
    } catch (NoSuchAlgorithmException e) {
        log.error("[创建订单]获取签名失败", e);
        throw new RuntimeException(e.getMessage());
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        throw new RuntimeException(e.getMessage());
    }
}


使用官方工具验证通过

小程序无法拉起支付(参数对应没问题)


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

5 个回答

  • Memory
    Memory
    2023-10-25

    用工具验证的时候是需要回车换行,而不是\n

    2023-10-25
    有用 1
    回复 10
    • null
      null
      2023-10-25
      那我生成签名的时候要换行吗?
      2023-10-25
      回复
    • null
      null
      2023-10-25
      拼接的\n也行吧
      2023-10-25
      回复
    • Memory
      Memory
      2023-10-25回复null
      自己生成签名的时候是需要换行的
      2023-10-25
      回复
    • null
      null
      2023-10-25
      也通过了
      2023-10-25
      回复
    • Memory
      Memory
      2023-10-25回复null
      你用工具生成的信息,前端写固定参数调起支付看下
      2023-10-25
      回复
    查看更多(5)
  • 东记水果捞
    东记水果捞
    发表于移动端
    09-18
    是的
    09-18
    有用
    回复
  • 我是小辣椒
    我是小辣椒
    发表于移动端
    06-24
    0! ←ri÷
    06-24
    有用
    回复
  • m
    m
    05-24

    这个签名现在还在困扰我

    05-24
    有用
    回复
  • 正青春
    正青春
    2023-10-25

    调起支付签名方式要与统一下单签名方式保持一致

    

    2023-10-25
    有用
    回复 5
    • null
      null
      2023-10-25
      v3不是RSA么?
      2023-10-25
      回复
    • 正青春
      正青春
      2023-10-25回复null
      调起的支付签名和统一下单签名保持一致
      2023-10-25
      回复
    • null
      null
      2023-10-25回复正青春
      是一致的
      2023-10-25
      回复
    • 神经蛙
      神经蛙
      03-15回复null
      楼主解决了吗,怎么解决的
      03-15
      回复
    • 梁达毅
      梁达毅
      03-25
      楼主,问题解决了吗
      03-25
      回复
登录 后发表内容