收藏
回答

微信支付使用api处理回调,解密失败?

String wechatSignature = request.getHeader("Wechatpay-Signature");
String wechatPaySerial = request.getHeader("Wechatpay-Serial");
String wechatpayNonce = request.getHeader("Wechatpay-Nonce");
String wechatTimestamp = request.getHeader("Wechatpay-Timestamp");

// inputSteam转为string
String requestBody = null;
InputStream inputStream = null;
try {
    inputStream = request.getInputStream();
    StringBuilder sb = new StringBuilder();
    String line;

    BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
    while ((line = br.readLine()) != null) {
        sb.append(line);
    }
    requestBody = sb.toString();
} catch (IOException e) {
    e.printStackTrace();
}

// 构造 RequestParam
RequestParam requestParam = new RequestParam.Builder()
        .serialNumber(wechatPaySerial)
        .nonce(wechatpayNonce)
        .signature(wechatSignature)
        .timestamp(wechatTimestamp)
        .body(requestBody)
        .build();

// 如果已经初始化了 RSAAutoCertificateConfig,可直接使用
// 没有的话,则构造一个
NotificationConfig config = new RSAAutoCertificateConfig.Builder()
        .merchantId(merchantId)
        .privateKeyFromPath(privateKeyPath)
        .merchantSerialNumber(merchantSerialNumber)
        .apiV3Key(apiV3Key)
        .build();

// 初始化 NotificationParser
NotificationParser parser = new NotificationParser(config);
这是回调的代码。用的官方api 
<dependency>
    <groupId>com.github.wechatpay-apiv3</groupId>
    <artifactId>wechatpay-java</artifactId>
    <version>0.2.12</version>
</dependency>

关键的地方是 我在商户平台看不到这个报错触发的时间的附近 2个小时之内 都没有支付的订单,因为功能是早上的。报错是晚上报错的。

有没有可能别人的回调到我这里来了?然后解密失败。我在报错之后 自己尝试了一下支付 是没有问题的。

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

1 个回答

登录 后发表内容