zwhui 3 роки тому
батько
коміт
5ae360e514

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -77,6 +77,11 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private String refundDesc;
 
+    /**
+     * 加密货币用户钱包地址
+     */
+    private String cryptomusFrom;
+
     /**
      * 优惠金额
      */

+ 0 - 4
netflix-dao/src/main/java/com/cyksj/model/request/OrderRefundReq.java

@@ -35,8 +35,4 @@ public class OrderRefundReq {
 	 */
 	private String refundType;
 
-	/**
-	 * 加密货币退款地址
-	 */
-	private String address;
 }

+ 5 - 7
netflix-service/src/main/java/com/cyksj/service/cryptomus/CryptomusService.java

@@ -112,6 +112,7 @@ public class CryptomusService {
             //更新订单支付状态
             OrderDon orderDon = orderDonService.getById(orderId);
             orderDon.setTransactionId(transationId);
+            orderDon.setCryptomusFrom(cryptomusReturnRep.getFrom());
             orderDon.setPayTime(new Date());
             orderDon.setAbroadTransactionFee(new BigDecimal(commission).multiply(BigDecimal.valueOf(100)));
             orderDonService.orderNotify(orderDon);
@@ -121,24 +122,21 @@ public class CryptomusService {
     }
 
 
-    public Boolean refund(OrderRefundReq refundReq, OrderDon orderDon) throws Exception {
+    public void refund(OrderRefundReq refundReq, OrderDon orderDon) throws Exception {
         BigDecimal net = refundReq.getRefundMoney().subtract(orderDon.getAbroadTransactionFee());
         log.info("cryptomus return order:{},money:{}",orderDon.getId(),net);
         CryptomusRefundReq cryptomusRefundReq = new CryptomusRefundReq();
-        cryptomusRefundReq.setAddress(refundReq.getAddress());
+        cryptomusRefundReq.setAddress(orderDon.getCryptomusFrom());
         cryptomusRefundReq.setUuid(orderDon.getTransactionId());
         cryptomusRefundReq.setOrder_id(orderDon.getId().toString());
         cryptomusRefundReq.setIs_subtract(false);
         String json = Jsons.toJson(cryptomusRefundReq);
         String result = HttpRequest.post("https://api.cryptomus.com/v1/payment/refund").header("merchant", shopId).header("sign", MD5.create().digestHex(Base64.encode(json) + shopKey)).body(json).execute().body();
         CryptomusRefundRep cryptomusRefundRep = Jsons.parseObject(result, CryptomusRefundRep.class);
-        if (cryptomusRefundRep.getState() == 0){
-            orderDon.setStatus(OrderDon.Status.refund);
-            orderDonService.updateById(orderDon);
-            return true;
+        if (cryptomusRefundRep.getState() != 0){
+            throw BusinessRuntimeException.getInstance("退款失败,e:{0}", cryptomusRefundRep.getMessage());
         }
         log.info("cryptomus return refund:{}",cryptomusRefundRep);
-        return false;
     }
 
 

+ 0 - 3
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -560,9 +560,6 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         if (OrderDon.Status.noPayment == orderDon.getStatus() || OrderDon.Status.close == orderDon.getStatus()) {
             throw BusinessRuntimeException.getInstance("订单{0}状态不支持退款", orderDon.getStatus());
         }
-        if (OrderDon.Type.CRYPTOMUS.getType().equals(refundType) && StringUtil.isEmpty(refundReq.getAddress())) {
-            throw BusinessRuntimeException.getInstance("请填写退款地址");
-        }
         if (goodsDon.getType() == 1) {
             //虚拟原订单是否已过期
             Integer months = sku.getMonths();

+ 3 - 6
netflix-service/src/main/java/com/cyksj/service/paypal/PayPalService.java

@@ -183,7 +183,7 @@ public class PayPalService{
     }
 
 
-    public Boolean refund(OrderRefundReq refundReq, OrderDon orderDon) throws PayPalRESTException {
+    public void refund(OrderRefundReq refundReq, OrderDon orderDon) throws PayPalRESTException {
         BigDecimal net = refundReq.getRefundMoney().subtract(orderDon.getAbroadTransactionFee());
         log.info("paypal return order:{},money:{}",orderDon.getId(),net);
         PaypalPayConfig paypalPayConfig = paypalPayConfigService.getById(1);
@@ -193,12 +193,9 @@ public class PayPalService{
         refund.setAmount(new Amount("USD", net.divide(new BigDecimal(100),2,RoundingMode.HALF_DOWN).toString()));
         refund = sale.refund(apiContext, refund);
         log.info("paypal return refund:{}",refund);
-        if ("completed".equals(refund.getState())){
-            orderDon.setStatus(OrderDon.Status.refund);
-            orderDonService.updateById(orderDon);
-            return true;
+        if (!"completed".equals(refund.getState())) {
+            throw BusinessRuntimeException.getInstance("退款失败,e:{0}", refund.getDescription());
         }
-        return false;
     }
 
 }

+ 3 - 6
netflix-service/src/main/java/com/cyksj/service/stripe/StripeService.java

@@ -120,7 +120,7 @@ public class StripeService {
         System.out.println(balanceTransaction);
     }
 
-    public Boolean refund(OrderRefundReq refundReq, OrderDon orderDon) throws StripeException {
+    public void refund(OrderRefundReq refundReq, OrderDon orderDon) throws StripeException {
         BigDecimal net = refundReq.getRefundMoney().subtract(orderDon.getAbroadTransactionFee());
         log.info("stripe return order:{},money:{}",orderDon.getId(),net);
         StripePayConfig stripePayConfig = stripePayConfigMapper.selectById(1);
@@ -132,12 +132,9 @@ public class StripeService {
                         .build();
         Refund refund = Refund.create(params);
         log.info("stripe return refund:{}",refund);
-        if ("succeeded".equals(refund.getStatus())){
-            orderDon.setStatus(OrderDon.Status.refund);
-            orderDonService.updateById(orderDon);
-            return true;
+        if (!"succeeded".equals(refund.getStatus())){
+            throw BusinessRuntimeException.getInstance("退款失败,e:{0}", refund.getDescription());
         }
-        return false;
     }
 
 }