Explorar el Código

第三方支付

qin hace 2 años
padre
commit
4d09af8b17

+ 10 - 0
src/main/java/com/poteviohealth/ym/ipos/controller/SettlementController.java

@@ -7,7 +7,9 @@ import com.poteviohealth.cgp.common.integrated.StringParams;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
+import com.poteviohealth.ym.ipos.model.split.back.WithdrawBack;
 import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
+import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
 import com.poteviohealth.ym.ipos.service.ISplitService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -44,4 +46,12 @@ public class SettlementController extends BaseWebController {
     public VaultsResponse<AccountBalanceBack> accountBalanceQuery(@RequestBody StringParams params) {
         return splitService.accountBalanceQuery(params.getId());
     }
+
+
+    @PostMapping("/withdraw")
+    @ApiOperation(value = "取现")
+    @OperationLog(type = OperateType.SELECT, description ="取现")
+    public VaultsResponse<WithdrawBack> withdraw(@RequestBody WithdrawDto dto) {
+        return splitService.withdraw(dto);
+    }
 }

+ 20 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/Withdraw.java

@@ -0,0 +1,20 @@
+package com.poteviohealth.ym.ipos.model.split;
+
+import com.poteviohealth.ym.ipos.model.base.Base;
+import com.poteviohealth.ym.ipos.model.split.detail.WithdrawDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 4.53.取现
+ * https://open.wangcaio2o.com/docs/ipos-sa/4.53.md
+ * @author Qin
+ */
+@Data
+public class Withdraw extends Base {
+    @ApiModelProperty(value = "请求类型,固定值:merchant_withdraw_request",required = true)
+    private String request_type = "merchant_withdraw_request";
+
+    @ApiModelProperty(value = "取现明细")
+    private WithdrawDetail merchant_withdraw_request;
+}

+ 37 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/back/WithdrawBack.java

@@ -0,0 +1,37 @@
+package com.poteviohealth.ym.ipos.model.split.back;
+
+import com.poteviohealth.ym.ipos.model.back.BaseBack;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 提现返回值
+ * @author Qin
+ */
+@Data
+public class WithdrawBack extends BaseBack {
+
+    @ApiModelProperty(value = "取现流水号")
+    private String withdraw_seq;
+
+    @ApiModelProperty(value = "取现金额(分)")
+    private Long amount;
+
+    @ApiModelProperty(value = "取现手续费(分)")
+    private Long fee;
+
+    @ApiModelProperty(value = "取现日期,格式 yyyyMMdd")
+    private String trans_date;
+
+    @ApiModelProperty(value = "交易状态:s-成功 p-处理中 f-失败")
+    private String trans_status;
+
+    @ApiModelProperty(value = "账务状态:s-成功 p-处理中 f-失败 b-回账成功")
+    private String acct_status;
+
+    @ApiModelProperty(value = "失败原因")
+    private String error_msg;
+
+    @ApiModelProperty(value = "备注(同请求原样返回)")
+    private String remark;
+}

+ 22 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/detail/WithdrawDetail.java

@@ -0,0 +1,22 @@
+package com.poteviohealth.ym.ipos.model.split.detail;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 取现明细
+ * @author Qin
+ */
+@Data
+public class WithdrawDetail {
+
+    @ApiModelProperty(value = "分账接收方的分账商户号,当支付单类型不是账户支付时必填")
+    private String merchant_id;
+
+    @ApiModelProperty(value = "取现金额(分)")
+    private Long amount;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+}

+ 18 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/dto/WithdrawDto.java

@@ -0,0 +1,18 @@
+package com.poteviohealth.ym.ipos.model.split.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 取现dto
+ * @author Qin
+ */
+@Data
+public class WithdrawDto {
+
+    @ApiModelProperty(value = "商户号")
+    private String merchantId;
+
+    @ApiModelProperty(value = "金额(分)")
+    private Long amount;
+}

+ 9 - 0
src/main/java/com/poteviohealth/ym/ipos/service/ISplitService.java

@@ -7,7 +7,9 @@ import com.poteviohealth.ym.ipos.model.split.SplitRecords;
 import com.poteviohealth.ym.ipos.model.split.SplitRecordsDetail;
 import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
+import com.poteviohealth.ym.ipos.model.split.back.WithdrawBack;
 import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
+import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
 
 import java.util.List;
 
@@ -61,4 +63,11 @@ public interface ISplitService {
      * @return
      */
     VaultsResponse<AccountBalanceBack> accountBalanceQuery(String merchantId);
+
+    /**
+     * 取现
+     * @param dto
+     * @return
+     */
+    VaultsResponse<WithdrawBack> withdraw(WithdrawDto dto);
 }

+ 25 - 4
src/main/java/com/poteviohealth/ym/ipos/service/impl/SplitServiceImpl.java

@@ -9,11 +9,9 @@ import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.back.BaseBack;
 import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
 import com.poteviohealth.ym.ipos.model.split.*;
-import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
-import com.poteviohealth.ym.ipos.model.split.back.PayConfirmBack;
-import com.poteviohealth.ym.ipos.model.split.back.PayConfirmQueryBack;
-import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
+import com.poteviohealth.ym.ipos.model.split.back.*;
 import com.poteviohealth.ym.ipos.model.split.detail.*;
+import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
 import com.poteviohealth.ym.ipos.service.ISplitRecordsDetailService;
 import com.poteviohealth.ym.ipos.service.ISplitRecordsService;
 import com.poteviohealth.ym.ipos.service.ISplitService;
@@ -209,4 +207,27 @@ public class SplitServiceImpl implements ISplitService {
 
         return VaultsResponse.failed(back.getResult().getComment());
     }
+
+    @Override
+    public VaultsResponse<WithdrawBack> withdraw(WithdrawDto dto) {
+        Withdraw withdraw =  new Withdraw();
+        WithdrawDetail detail = new WithdrawDetail();
+        detail.setMerchant_id(dto.getMerchantId());
+        detail.setAmount(dto.getAmount());
+        withdraw.setMerchant_withdraw_request(detail);
+        WithdrawBack back = null;
+        try {
+            back = (WithdrawBack) YmUtil.resultBack(withdraw,new WithdrawBack());
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+            return VaultsResponse.failed(e.getMessage());
+        }
+
+        if(YmUtil.SUCCESS.equals(back.getResult().getId())){
+            return VaultsResponse.success(back);
+        }
+
+        return VaultsResponse.failed(back.getResult().getComment());
+
+    }
 }