code: private Map<String, String> buildApplyParams(RefundApplyRequest request) {
          Map<String, String> refundParams = new TreeMap<>();
  
          // 配置参数
          buildConfigParams(refundParams);
  
          // 业务参数
          putIfNotEmpty(refundParams, WepayField.TRANSACTION_ID, request.getTransactionId());
          putIfNotEmpty(refundParams, WepayField.OUT_TRADE_NO, request.getOutTradeNo());
          put(refundParams, WepayField.OUT_REFUND_NO, request.getOutRefundNo());
          put(refundParams, WepayField.TOTAL_FEE, request.getTotalFee() + "");
          put(refundParams, WepayField.REFUND_FEE, request.getRefundFee() + "");
          put(refundParams, WepayField.NONCE_STR, RandomStrs.generate(16));
          put(refundParams, WepayField.OP_USER_ID, request.getOpUserId());
          putIfNotEmpty(refundParams, WepayField.DEVICE_INFO, request.getDeviceInfo());
          if (request.getRefundFeeType() != null){
              put(refundParams, WepayField.REFUND_FEE_TYPE, request.getRefundFeeType().type());
          }
  
          // 签名参数
          buildSignParams(refundParams);
  
          return refundParams;
      }
docs: 构建退款参数
  @param request 退款请求
  @return 退款参数