收藏
回答

在微信Native支付的回调函数里如何获得Description?

商户号
1718054156
transaction没有getDescription函数,如何获得Description

            String privateKeyContent = new String(Files.readAllBytes(Paths.get(rootPath + wxpayCertPath)), StandardCharsets.UTF_8);

            // 动态获取序列号

            String serialNo = getCertificateSerialNo();


            RSAAutoCertificateConfig config = new RSAAutoCertificateConfig.Builder()

                    .merchantId(WxpayConfig.mchId)

                    .privateKey(privateKeyContent)

                    .merchantSerialNumber(serialNo)

                    .apiV3Key(WxpayConfig.apiKey)

                    .build();


            // 修复1:使用新的NotificationParser方式(推荐)

            // =============== 推荐方式:使用NotificationParser ===============

            NotificationParser parser = new NotificationParser(config);


            // 构建请求参数

            com.wechat.pay.java.core.notification.RequestParam requestParam = new com.wechat.pay.java.core.notification.RequestParam.Builder()

                    .serialNumber(request.getHeader("Wechatpay-Serial"))

                    .nonce(request.getHeader("Wechatpay-Nonce"))

                    .signature(request.getHeader("Wechatpay-Signature"))

                    .timestamp(request.getHeader("Wechatpay-Timestamp"))

                    .body(requestBody)

                    .build();


            // 解析为Transaction对象

            Transaction transaction = parser.parse(requestParam, Transaction.class);


            System.out.println("微信回调验签成功!");

            System.out.println("requestBody=");

            System.out.println(requestBody);


            System.out.println("requestParam=");

            System.out.println(requestParam);


            // 转换微信支付回调数据为Wxpay对象

            Wxpay wxpay = new Wxpay();

            wxpay.setOut_trade_no(transaction.getOutTradeNo());

            wxpay.setTransaction_id(transaction.getTransactionId());



            // 金额处理:分转元

            float totalAmount = (float) transaction.getAmount().getTotal() / 100;

            wxpay.setTotal_fee(totalAmount);


            String description = transaction.getDescription(); // 关键修正!

            String[] parts = description.split(";", 2); // 按分号分割


最后一次编辑于  06-08
回答关注问题邀请回答
收藏
登录 后发表内容