diff --git a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java index 47a7c8b..fa05920 100644 --- a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java +++ b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/api/BaiduPayService.java @@ -2,6 +2,12 @@ package com.egzosn.pay.baidu.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.egzosn.pay.baidu.bean.BaiduPayOrder; +import com.egzosn.pay.baidu.bean.BaiduRefundOrder; +import com.egzosn.pay.baidu.bean.BaiduTransactionType; +import com.egzosn.pay.baidu.bean.type.AuditStatus; +import com.egzosn.pay.baidu.util.Asserts; +import com.egzosn.pay.baidu.util.NoNullMap; import com.egzosn.pay.common.api.BasePayService; import com.egzosn.pay.common.bean.*; import com.egzosn.pay.common.http.HttpConfigStorage; @@ -9,12 +15,6 @@ import com.egzosn.pay.common.http.UriVariables; import com.egzosn.pay.common.util.DateUtils; import com.egzosn.pay.common.util.sign.SignUtils; import com.egzosn.pay.common.util.str.StringUtils; -import com.egzosn.pay.baidu.bean.BaiduPayOrder; -import com.egzosn.pay.baidu.bean.BaiduRefundOrder; -import com.egzosn.pay.baidu.bean.BaiduTransactionType; -import com.egzosn.pay.baidu.bean.type.AuditStatus; -import com.egzosn.pay.baidu.util.Asserts; -import com.egzosn.pay.baidu.util.NoNullMap; import java.math.BigDecimal; import java.util.Date; @@ -52,6 +52,12 @@ public class BaiduPayService extends BasePayService params) { if (!RESPONSE_SUCCESS.equals(params.get(RESPONSE_STATUS))) { @@ -60,9 +66,15 @@ public class BaiduPayService extends BasePayService params, String sign) { - String keyPrivate = payConfigStorage.getKeyPrivate(); String rsaSign = String.valueOf(params.get(RSA_SIGN)); String targetRsaSign = getRsaSign(params, RSA_SIGN); LOG.debug("百度返回的签名: " + rsaSign + " 本地产生的签名: " + targetRsaSign); @@ -74,13 +86,19 @@ public class BaiduPayService extends BasePayService orderInfo(PayOrder order) { if (!(order instanceof BaiduPayOrder)) { throw new UnsupportedOperationException("请使用 " + BaiduPayOrder.class.getName()); } NoNullMap params = getUseOrderInfoParams(order); - String rsaSign = getRsaSignUserOrderInfo(params, payConfigStorage.getKeyPrivate()); + String rsaSign = getRsaSign(params, RSA_SIGN); params.putIfNoNull(RSA_SIGN, rsaSign); return params; } @@ -119,6 +137,13 @@ public class BaiduPayService extends BasePayService orderInfo, @@ -232,29 +264,64 @@ public class BaiduPayService extends BasePayService microPay(PayOrder order) { throw new UnsupportedOperationException("百度不支持刷卡付"); } + /** + * 查询订单 + * + * @param tradeNo 支付平台订单号 + * @param outTradeNo 商户单号 + * @return + */ @Override public Map query(String tradeNo, String outTradeNo) { return secondaryInterface(tradeNo, outTradeNo, BaiduTransactionType.PAY_QUERY); } + /** + * 百度不支持该操作 + * + * @param tradeNo 支付平台订单号 + * @param outTradeNo 商户单号 + * @return + */ @Override @Deprecated public Map close(String tradeNo, String outTradeNo) { throw new UnsupportedOperationException("不支持该操作"); } + /** + * 退款, 请使用 {@link com.egzosn.pay.baidu.api.BaiduPayService#refundUseBaidu} + * + * @param orderId + * @param userId + * @param refundAmount 退款金额 + * @param totalAmount 总金额 + * @return + */ @Override @Deprecated public Map refund(String orderId, @@ -264,6 +331,16 @@ public class BaiduPayService extends BasePayService refundUseBaidu(Long orderId, Long userId, Integer refundType, @@ -272,12 +349,24 @@ public class BaiduPayService extends BasePayService refund(RefundOrder refundOrder) { throw new UnsupportedOperationException("请使用 " + getClass().getName() + "#refundUseBaidu"); } + /** + * 退款, 请使用 {@link com.egzosn.pay.baidu.api.BaiduPayService#refundUseBaidu} + * + * @param refundOrder + * @return + */ public Map refundUseBaidu(BaiduRefundOrder refundOrder) { Map parameters = getUseQueryPay(); BaiduTransactionType transactionType = BaiduTransactionType.APPLY_REFUND; @@ -295,6 +384,8 @@ public class BaiduPayService extends BasePayService refundquery(RefundOrder refundOrder) { return refundquery(refundOrder.getTradeNo(), refundOrder.getOutTradeNo()); } + /** + * 下载资金账单 + * + * @param billDate 账单时间:日账单格式为yyyy-MM-dd,月账单格式为yyyy-MM。 + * @param access_token + * @return + */ @Override public Map downloadbill(Date billDate, String access_token) { Map parameters = new HashMap<>(); @@ -327,6 +431,13 @@ public class BaiduPayService extends BasePayService downloadOrderBill(Date billDate, String access_token) { Map parameters = new HashMap<>(); parameters.put("access_token", access_token); @@ -335,6 +446,14 @@ public class BaiduPayService extends BasePayService secondaryInterface(Object orderId, String siteId, @@ -350,24 +469,24 @@ public class BaiduPayService extends BasePayService params, String privateKey) { - Map signParams = new HashMap<>(); - signParams.put(APP_KEY, String.valueOf(params.get(APP_KEY))); - signParams.put(DEAL_ID, String.valueOf(params.get(DEAL_ID))); - signParams.put(TP_ORDER_ID, String.valueOf(params.get(TP_ORDER_ID))); - signParams.put(TOTAL_AMOUNT, String.valueOf(params.get(TOTAL_AMOUNT))); - if (signParams.containsValue(null)) { - throw new IllegalArgumentException("参数 " + signParams.keySet().toString() + " 均为必填"); - } - - return SignUtils.RSA.sign(params, privateKey, "UTF-8"); - } - + /** + * 签名 + * + * @param params + * @param ignoreKeys + * @return + */ private String getRsaSign(Map params, String... ignoreKeys) { String waitSignVal = SignUtils.parameterText(params, "&", false, ignoreKeys); return SignUtils.RSA.createSign(waitSignVal, payConfigStorage.getKeyPrivate(), "UTF-8"); diff --git a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduRefundOrder.java b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduRefundOrder.java index ee68440..6386be8 100644 --- a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduRefundOrder.java +++ b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduRefundOrder.java @@ -5,9 +5,21 @@ import com.egzosn.pay.common.bean.RefundOrder; import java.math.BigDecimal; public class BaiduRefundOrder extends RefundOrder { + /** + * 平台用户ID + */ private Long userId; + /** + * 退款类型 + */ private Integer refundType; + /** + * 退款原因 + */ private String refundReason; + /** + * 平台订单ID + */ private String tpOrderId; /** * 退款金额,单位:分,发起部分退款时必传 diff --git a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduTransactionType.java b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduTransactionType.java index 3e23333..3c3838f 100644 --- a/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduTransactionType.java +++ b/pay-java-baidu/src/main/java/com/egzosn/pay/baidu/bean/BaiduTransactionType.java @@ -3,15 +3,25 @@ package com.egzosn.pay.baidu.bean; import com.egzosn.pay.common.bean.TransactionType; public enum BaiduTransactionType implements TransactionType { - // 查询支付状态 + /** + * 查询支付状态 + */ PAY_QUERY("https://dianshang.baidu.com/platform/entity/openapi/queryorderdetail", "PAY_QUERY"), - // 取消核销 + /** + * 取消核销 + */ REFUND_QUERY("https://nop.nuomi.com/nop/server/rest", "nuomi.cashier.syncorderstatus"), - // 下载资金账单 + /** + * 下载资金账单 + */ DOWNLOAD_BILL("https://openapi.baidu.com/rest/2.0/smartapp/pay/paymentservice/capitaBill", "DOWNLOAD_BILL"), - // 下载订单对账单 + /** + * 下载订单对账单 + */ DOWNLOAD_ORDER_BILL("https://openapi.baidu.com/rest/2.0/smartapp/pay/paymentservice/orderBill", "DOWNLOAD_ORDER_BILL"), - // 申请退款 + /** + * 申请退款 + */ APPLY_REFUND("https://nop.nuomi.com/nop/server/rest", "nuomi.cashier.applyorderrefund"); private final String method; private final String url;