xiaoqiang 4 lat temu
rodzic
commit
6feffd76a2
88 zmienionych plików z 6708 dodań i 0 usunięć
  1. 6 0
      pom.xml
  2. 155 0
      src/main/java/org/springblade/common/config/yeepay/OpenProduct.java
  3. 45 0
      src/main/java/org/springblade/yeePay/api/YeepayCommon.java
  4. 30 0
      src/main/java/org/springblade/yeePay/api/YeepayMerchant.java
  5. 402 0
      src/main/java/org/springblade/yeePay/api/YeepaySaas.java
  6. 20 0
      src/main/java/org/springblade/yeePay/common/YeePayConst.java
  7. 23 0
      src/main/java/org/springblade/yeePay/common/YeePayProductFeeState.java
  8. 349 0
      src/main/java/org/springblade/yeePay/common/YeepayApiConstant.java
  9. 74 0
      src/main/java/org/springblade/yeePay/common/YeepayProduct.java
  10. 217 0
      src/main/java/org/springblade/yeePay/controller/YeepayController.java
  11. 89 0
      src/main/java/org/springblade/yeePay/entity/BatchTransferDto.java
  12. 126 0
      src/main/java/org/springblade/yeePay/entity/ChargeDto.java
  13. 40 0
      src/main/java/org/springblade/yeePay/entity/ConfigAppDto.java
  14. 56 0
      src/main/java/org/springblade/yeePay/entity/CreateCodeDto.java
  15. 101 0
      src/main/java/org/springblade/yeePay/entity/InitOrderDto.java
  16. 11 0
      src/main/java/org/springblade/yeePay/entity/KeyAndValue.java
  17. 29 0
      src/main/java/org/springblade/yeePay/entity/MerchantInfo.java
  18. 45 0
      src/main/java/org/springblade/yeePay/entity/PayGateWayDto.java
  19. 107 0
      src/main/java/org/springblade/yeePay/entity/TransferDto.java
  20. 239 0
      src/main/java/org/springblade/yeePay/entity/saas/AggpayPayDto.java
  21. 40 0
      src/main/java/org/springblade/yeePay/entity/saas/AuthStateQueryDto.java
  22. 266 0
      src/main/java/org/springblade/yeePay/entity/saas/InvitationDto.java
  23. 177 0
      src/main/java/org/springblade/yeePay/entity/saas/MicroInvitationDto.java
  24. 62 0
      src/main/java/org/springblade/yeePay/entity/saas/PayLinkOrderDto.java
  25. 157 0
      src/main/java/org/springblade/yeePay/entity/saas/WechatApplyDto.java
  26. 43 0
      src/main/java/org/springblade/yeePay/entity/saas/WechatAuthDto.java
  27. 54 0
      src/main/java/org/springblade/yeePay/entity/saas/WechatConfigAddDto.java
  28. 30 0
      src/main/java/org/springblade/yeePay/entity/saas/WechatConfigQueryDto.java
  29. 33 0
      src/main/java/org/springblade/yeePay/entity/saas/WechatViolationChannelDto.java
  30. 142 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayBatchOrderDto.java
  31. 30 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayCancelDto.java
  32. 111 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayOrderDto.java
  33. 29 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayQueryDto.java
  34. 30 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleCancelDto.java
  35. 27 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleQueryDto.java
  36. 64 0
      src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleSetDto.java
  37. 51 0
      src/main/java/org/springblade/yeePay/entity/saas/account/BankRechargeOrderDto.java
  38. 60 0
      src/main/java/org/springblade/yeePay/entity/saas/account/OnlineBankRechargeOrderDto.java
  39. 35 0
      src/main/java/org/springblade/yeePay/entity/saas/account/RechargeQueryDto.java
  40. 98 0
      src/main/java/org/springblade/yeePay/entity/saas/account/SupplierApplyDto.java
  41. 101 0
      src/main/java/org/springblade/yeePay/entity/saas/account/SupplierPayOrderDto.java
  42. 29 0
      src/main/java/org/springblade/yeePay/entity/saas/account/TransferB2bQueryDto.java
  43. 51 0
      src/main/java/org/springblade/yeePay/entity/saas/account/TransferOrderDto.java
  44. 44 0
      src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawCardBindDto.java
  45. 44 0
      src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawCardModifyDto.java
  46. 73 0
      src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawOrderDto.java
  47. 28 0
      src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawQueryDto.java
  48. 31 0
      src/main/java/org/springblade/yeePay/entity/saas/changeservice/MerchantDisposeQueryDto.java
  49. 37 0
      src/main/java/org/springblade/yeePay/entity/saas/changeservice/MerchantDisposeUnfreezeDto.java
  50. 86 0
      src/main/java/org/springblade/yeePay/entity/saas/changeservice/ProductFeeModifyDto.java
  51. 37 0
      src/main/java/org/springblade/yeePay/entity/saas/changeservice/ProductFeeQueryDto.java
  52. 24 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/BillDivideDayDownloadDto.java
  53. 28 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/BillDownloadDto.java
  54. 27 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/BillTradeDayDownloadDto.java
  55. 40 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/FundBillApplyDto.java
  56. 26 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/FundBillDownloadDto.java
  57. 37 0
      src/main/java/org/springblade/yeePay/entity/saas/receipt/ReceiptGetDto.java
  58. 40 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleBalanceQueryDto.java
  59. 57 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleCardAddDto.java
  60. 57 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleCardModifyDto.java
  61. 32 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleFileGetDto.java
  62. 38 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleRecordsQueryDto.java
  63. 50 0
      src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleSelfSettleApplyDto.java
  64. 85 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideApplyDto.java
  65. 63 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideBackDto.java
  66. 38 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideBackQueryDto.java
  67. 40 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideCompleteDto.java
  68. 38 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideQueryDto.java
  69. 36 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/DivideReceiptDownloadDto.java
  70. 75 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAccountPayOrderDto.java
  71. 59 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAutoPaymentOrderDto.java
  72. 32 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAutoPaymentQueryDto.java
  73. 60 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/RefundDto.java
  74. 33 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/RefundEndDto.java
  75. 81 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/RefundFastDto.java
  76. 37 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/RefundQueryDto.java
  77. 38 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/RefundSupplyDto.java
  78. 34 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderCloseDto.java
  79. 26 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderCombineQueryDto.java
  80. 106 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderDto.java
  81. 31 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderQueryDto.java
  82. 36 0
      src/main/java/org/springblade/yeePay/entity/saas/trade/TradeReceiptDownloadDto.java
  83. 118 0
      src/main/java/org/springblade/yeePay/service/YeePayService.java
  84. 118 0
      src/main/java/org/springblade/yeePay/service/YeepayCommonService.java
  85. 686 0
      src/main/java/org/springblade/yeePay/service/YeepaySaasService.java
  86. 46 0
      src/main/java/org/springblade/yeePay/utils/Sm4GcmUtils.java
  87. 52 0
      src/main/java/org/springblade/yeePay/utils/YeepayUtils.java
  88. 20 0
      src/main/resources/payConfig.properties

+ 6 - 0
pom.xml

@@ -181,6 +181,12 @@
             <version>1.7</version>
             <scope>provided</scope>
         </dependency>
+        <!--  易宝支付SDK   -->
+        <dependency>
+            <groupId>com.yeepay.yop.sdk</groupId>
+            <artifactId>yop-java-sdk</artifactId>
+            <version>4.1.4-jdk7</version>
+        </dependency>
         <!--Oss-->
         <dependency>
             <groupId>org.springblade</groupId>

+ 155 - 0
src/main/java/org/springblade/common/config/yeepay/OpenProduct.java

@@ -0,0 +1,155 @@
+package org.springblade.common.config.yeepay;
+
+import com.alibaba.fastjson.JSON;
+import org.springblade.yeePay.common.YeepayProduct;
+import org.springblade.yeePay.entity.saas.InvitationDto;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.springblade.yeePay.common.YeepayProduct.*;
+
+
+/**
+ * @author: lianghanqiang
+ * @description: 联兑通入驻平台需要开通的易宝的产品列表
+ * @since: 9/29/21 -- 11:56 AM
+ */
+public class OpenProduct {
+
+	/**
+	 * 平台商
+	 * */
+	public static final YeepayProduct[] PRODUCTS = {
+		USER_SCAN_WECHAT_OFFLINE,
+		USER_SCAN_WECHAT_ONLINE,
+		USER_SCAN_ALIPAY_OFFLINE,
+//		MERCHANT_SCAN_WECHAT_OFFLINE,
+//		MERCHANT_SCAN_ALIPAY_OFFLINE,
+		WECHAT_OFFIACCOUNT_WECHAT_OFFLINE,
+		WECHAT_OFFIACCOUNT_WECHAT_ONLINE,
+		ALIPAY_LIFE_ALIPAY_OFFLINE,
+		MINI_PROGRAM_WECHAT_OFFLINE,
+		MINI_PROGRAM_WECHAT_ONLINE,
+		MINI_PROGRAM_ALIPAY_OFFLINE,
+//		BINDCARDPAY_DEBIT,
+//		BINDCARDPAY_CREDIT,
+//		BINDCARDPAY_BINDCARD,
+		ONEKEYPAY_DEBIT,
+		ONEKEYPAY_CREDIT,
+//		ONEKEYPAY_DEBIT_CMBCHINA,
+//		ONEKEYPAY_DEBIT_BOCO,
+//		ONEKEYPAY_CREDIT_CMBCHINA,
+//		ONEKEYPAY_CREDIT_BOCO,
+//		E_BANK_B2B,
+//		E_BANK_B2C,
+//		BANKTRANSFERPAY,
+		D1_MANUAL,
+		ENTERPRISE_RECHARGE_STANDARD_B2B,
+//		ENTERPRISE_RECHARGE_STANDARD_B2C,
+//		ENTERPRISE_RECHARGE_STANDARD_BANK_TRASFER,
+		ENTERPRISE_WITHDRAW_STANDARD_REALTIME,
+//		ENTERPRISE_WITHDRAW_STANDARD_TWOHOURS,
+//		ENTERPRISE_WITHDRAW_STANDARD_TOMORROW,
+//		ENTERPRISE_TRANSFER_B2B,
+//		ENTERPRISE_PAY_TWOHOURS,
+//		ENTERPRISE_PAY_REALTIME,
+//		ENTERPRISE_PAY_TOMORROW,
+	};
+
+	/**
+	 * 商户
+	 * */
+	public static final YeepayProduct[] MERCHANT_PRODUCTS = {
+		USER_SCAN_WECHAT_OFFLINE,
+		USER_SCAN_WECHAT_ONLINE,
+		USER_SCAN_ALIPAY_OFFLINE,
+//		MERCHANT_SCAN_WECHAT_OFFLINE,
+//		MERCHANT_SCAN_ALIPAY_OFFLINE,
+		WECHAT_OFFIACCOUNT_WECHAT_OFFLINE,
+		WECHAT_OFFIACCOUNT_WECHAT_ONLINE,
+		ALIPAY_LIFE_ALIPAY_OFFLINE,
+		MINI_PROGRAM_WECHAT_OFFLINE,
+		MINI_PROGRAM_WECHAT_ONLINE,
+		MINI_PROGRAM_ALIPAY_OFFLINE,
+//		BINDCARDPAY_DEBIT,
+//		BINDCARDPAY_CREDIT,
+//		BINDCARDPAY_BINDCARD,
+		ONEKEYPAY_DEBIT,
+		ONEKEYPAY_CREDIT,
+//		ONEKEYPAY_DEBIT_CMBCHINA,
+//		ONEKEYPAY_DEBIT_BOCO,
+//		ONEKEYPAY_CREDIT_CMBCHINA,
+//		ONEKEYPAY_CREDIT_BOCO,
+//		E_BANK_B2B,
+//		E_BANK_B2C,
+//		BANKTRANSFERPAY,
+		D1_MANUAL,
+		ENTERPRISE_RECHARGE_STANDARD_B2B,
+//		ENTERPRISE_RECHARGE_STANDARD_B2C,
+//		ENTERPRISE_RECHARGE_STANDARD_BANK_TRASFER,
+		ENTERPRISE_WITHDRAW_STANDARD_REALTIME,
+//		ENTERPRISE_WITHDRAW_STANDARD_TWOHOURS,
+//		ENTERPRISE_WITHDRAW_STANDARD_TOMORROW,
+//		ENTERPRISE_TRANSFER_B2B,
+//		ENTERPRISE_PAY_TWOHOURS,
+//		ENTERPRISE_PAY_REALTIME,
+//		ENTERPRISE_PAY_TOMORROW,
+	};
+
+	/**
+	 * 小微
+	 * */
+	public static final YeepayProduct[] MICRO_PRODUCTS = {
+		USER_SCAN_WECHAT_OFFLINE,
+//		USER_SCAN_WECHAT_ONLINE,
+		USER_SCAN_ALIPAY_OFFLINE,
+//		MERCHANT_SCAN_WECHAT_OFFLINE,
+//		MERCHANT_SCAN_ALIPAY_OFFLINE,
+		WECHAT_OFFIACCOUNT_WECHAT_OFFLINE,
+//		WECHAT_OFFIACCOUNT_WECHAT_ONLINE,
+//		ALIPAY_LIFE_ALIPAY_OFFLINE,
+		MINI_PROGRAM_WECHAT_OFFLINE,
+//		MINI_PROGRAM_WECHAT_ONLINE,
+		MINI_PROGRAM_ALIPAY_OFFLINE,
+//		BINDCARDPAY_DEBIT,
+//		BINDCARDPAY_CREDIT,
+//		BINDCARDPAY_BINDCARD,
+//		ONEKEYPAY_DEBIT,
+//		ONEKEYPAY_CREDIT,
+//		ONEKEYPAY_DEBIT_CMBCHINA,
+//		ONEKEYPAY_DEBIT_BOCO,
+//		ONEKEYPAY_CREDIT_CMBCHINA,
+//		ONEKEYPAY_CREDIT_BOCO,
+//		E_BANK_B2B,
+//		E_BANK_B2C,
+//		BANKTRANSFERPAY,
+		D1_MANUAL,
+//		ENTERPRISE_RECHARGE_STANDARD_B2B,
+//		ENTERPRISE_RECHARGE_STANDARD_B2C,
+//		ENTERPRISE_RECHARGE_STANDARD_BANK_TRASFER,
+		ENTERPRISE_WITHDRAW_STANDARD_REALTIME,
+//		ENTERPRISE_WITHDRAW_STANDARD_TWOHOURS,
+//		ENTERPRISE_WITHDRAW_STANDARD_TOMORROW,
+//		ENTERPRISE_TRANSFER_B2B,
+//		ENTERPRISE_PAY_TWOHOURS,
+//		ENTERPRISE_PAY_REALTIME,
+//		ENTERPRISE_PAY_TOMORROW,
+	};
+
+	public static void main(String[] args) {
+		List<InvitationDto.ProductInfo> productInfos = new ArrayList<>();
+		Arrays.stream(PRODUCTS).forEach(item -> {
+			InvitationDto.ProductInfo productInfo =  new InvitationDto.ProductInfo();
+			productInfo.setProductCode(item);
+			productInfo.setPercentRate("0.21");
+			productInfo.setFixedRate("");
+			productInfo.setRateType("SINGLE_PERCENT");
+			productInfo.setPaymentMethod("REAL_TIME");
+			productInfo.setUndertaker("PLATFORM_MERCHANT");
+			productInfos.add(productInfo);
+		});
+		System.out.println(JSON.toJSONString(productInfos));
+	}
+}

+ 45 - 0
src/main/java/org/springblade/yeePay/api/YeepayCommon.java

@@ -0,0 +1,45 @@
+package org.springblade.yeePay.api;
+
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+import lombok.Getter;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝--通用api
+ * @since: 9/6/21 -- 11:14 AM
+ */
+@Getter
+public enum  YeepayCommon {
+
+	/**
+	 *  添加图片到易宝服务器
+	 * */
+	ADD_FILE_TO_YEEPAY("/yos/v1.0/sys/merchant/qual/upload","POST"),
+
+	/**
+	 *  添加图片到易宝服务器
+	 * */
+	ADD_WECHAT_CONFIG("/rest/v2.0/aggpay/wechat-config/add","POST"),
+
+	/**
+	 *  添加图片到易宝服务器
+	 * */
+	QUERY_WECHAT_CONFIG("/rest/v2.0/aggpay/wechat-config/query","GET"),
+
+
+
+
+	;
+
+	String requestUrl;
+	String requestMethods;
+
+	YeepayCommon(String url,String requestMethods){
+		this.requestMethods = requestMethods;
+		this.requestUrl = url;
+	}
+
+	public YopRequest buildRequest(){
+		return new YopRequest(requestUrl,requestMethods);
+	}
+}

+ 30 - 0
src/main/java/org/springblade/yeePay/api/YeepayMerchant.java

@@ -0,0 +1,30 @@
+package org.springblade.yeePay.api;
+
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+import lombok.Getter;
+
+/**
+ * @author: lianghanqiang
+ * @description: 商户交易接口API
+ * @since: 9/15/21 -- 11:44 AM
+ */
+@Getter
+public enum  YeepayMerchant {
+
+	/**
+	 *  添加图片到易宝服务器
+	 * */
+	ADD_FILE_TO_YEEPAY("/yos/v1.0/sys/merchant/qual/upload","POST");
+
+	String requestUrl;
+	String requestMethods;
+
+	YeepayMerchant(String url,String requestMethods){
+		this.requestMethods = requestMethods;
+		this.requestUrl = url;
+	}
+
+	public YopRequest buildRequest(){
+		return new YopRequest(requestUrl,requestMethods);
+	}
+}

+ 402 - 0
src/main/java/org/springblade/yeePay/api/YeepaySaas.java

@@ -0,0 +1,402 @@
+package org.springblade.yeePay.api;
+
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+import lombok.Getter;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝--平台商API
+ * @since: 9/6/21 -- 11:14 AM
+ */
+@Getter
+public enum YeepaySaas {
+
+	//----------------------------聚合支付start--------------------------------------
+	/**
+	 * 查询商户入网进度
+	 */
+	Query_Invitation("/rest/v2.0/mer/register/query", "GET"),
+
+	/**
+	 * 聚合支付统一下单
+	 */
+	AGGPAY_PREPAY("/rest/v1.0/aggpay/pre-pay", "POST"),
+
+	/**
+	 * 微信实名认证申请单申请
+	 */
+	WECHAT_AUTH_APPLY("/rest/v1.0/mer/merchant/wechatauth/apply", "POST"),
+
+	/**
+	 * 特约商户入网(企业/个体)
+	 */
+	Invitation_TO_YEEPAY("/rest/v2.0/mer/register/saas/merchant", "POST"),
+
+	/**
+	 * 特约商户入网(小微)
+	 */
+	MICRO_Invitation_TO_YEEPAY("/rest/v2.0/mer/register/saas/micro", "POST"),
+
+	/**
+	 * 生成聚合订单码
+	 */
+	PAY_LINK_ORDER("/rest/v1.0/cashier/pay-link/order", "POST"),
+
+	/**
+	 * 付款码支付
+	 */
+	AGG_PAY_PAY("/rest/v1.0/aggpay/pay", "POST"),
+
+	/**
+	 * 撤销微信实名认证申请单
+	 */
+	WECHAT_AUTH_CANCEL("/rest/v1.0/mer/merchant/wechatauth/cancel", "POST"),
+
+	/**
+	 * 查询微信实名认证状态
+	 */
+	WECHAT_AUTH_QUERY("/rest/v1.0/mer/merchant/wechatauth/query", "GET"),
+
+	/**
+	 * 商户授权状态查询接口
+	 */
+	AUTH_STATE_QUERY("/rest/v2.0/mer/auth/state/query", "GET"),
+
+	/**
+	 * 微信违规查询接口(服务商/平台商版)
+	 */
+	WECHAT_VIOLATION_CHANNEL("/rest/v1.0/aggpay/violation/wechat/channel", "GET"),
+
+	/**
+	 *公众号配置接口
+	 */
+	WECHAT_CONFIG_ADD("/rest/v2.0/aggpay/wechat-config/add","POST"),
+
+	/**
+	 *公众号配置查询
+	 */
+	WECHAT_CONFIG_QUERY("/rest/v2.0/aggpay/wechat-config/query","GET"),
+
+	//----------------------------聚合支付end--------------------------------------
+
+	//----------------------------账户服务start--------------------------------------
+	/**
+	 * 充值-网银下单
+	 */
+	ONLINE_BANK_RECHARGE_ORDER("/rest/v1.0/account/recharge/onlinebank/order", "POST"),
+
+	/**
+	 * 充值-银行汇款下单
+	 */
+	BANK_RECHARGE_ORDER("/rest/v1.0/account/recharge/order", "POST"),
+
+	/**
+	 * 充值-查询
+	 */
+	RECHARGE_QUERY("/rest/v1.0/account/recharge/query", "GET"),
+
+	/**
+	 * 转账-下单
+	 */
+	TRANSFER_ORDER("/rest/v1.0/account/transfer/b2b/order", "POST"),
+
+	/**
+	 * 转账-查询
+	 */
+	TRANSFER_B2B_QUERY("/rest/v1.0/account/transfer/b2b/query", "GET"),
+
+	/**
+	 * 提现-查询
+	 */
+	WITHDRAW_QUERY("/rest/v1.0/account/withdraw/query", "GET"),
+
+	/**
+	 * 提现-下单
+	 */
+	WITHDRAW_ORDER("/rest/v1.0/account/withdraw/order", "POST"),
+
+	/**
+	 * 提现卡查询
+	 */
+	WITHDRAW_CARD_QUERY("/rest/v1.0/account/withdraw/card/query", "GET"),
+
+	/**
+	 * 提现卡-添加
+	 */
+	WITHDRAW_CARD_BIND("/rest/v1.0/account/withdraw/card/bind", "POST"),
+
+	/**
+	 * 提现卡-修改/注销
+	 */
+	WITHDRAW_CARD_MODIFY("/rest/v1.0/account/withdraw/card/modify", "POST"),
+
+	/**
+	 * 自动提现-规则设置
+	 */
+	AUTO_WITHDRAW_RULE_SET("/rest/v1.0/account/auto-withdraw-rules/set", "POST"),
+
+	/**
+	 * 自动提现-规则查询
+	 */
+	AUTO_WITHDRAW_RULE_QUERY("/rest/v1.0/account/auto-withdraw-rules/query", "GET"),
+
+	/**
+	 * 自动提现-规则作废
+	 */
+	AUTO_WITHDRAW_RULE_CANCEL("/rest/v1.0/account/auto-withdraw-rules/cancel", "POST"),
+
+	/**
+	 * 账户余额的查询
+	 */
+	ACCOUNT_INFOS_QUERY("/rest/v1.0/account/accountinfos/query", "GET"),
+
+	/**
+	 * 资金账户余额查询
+	 */
+	ACCOUNT_BALANCE_QUERY("/rest/v1.0/account/balance/query", "GET"),
+
+	/**
+	 * 付款-下单
+	 */
+	ACCOUNT_PAY_ORDER("/rest/v1.0/account/pay/order", "POST"),
+
+	/**
+	 * 付款-撤销
+	 */
+	ACCOUNT_PAY_CANCEL("/rest/v1.0/account/pay/cancel", "POST"),
+
+	/**
+	 * 付款-查询
+	 */
+	ACCOUNT_PAY_QUERY("/rest/v1.0/account/pay/query", "GET"),
+
+	/**
+	 * 付款-批量下单
+	 */
+	ACCOUNT_PAY_BATCH_ORDER("/rest/v1.0/account/pay/batch-order", "POST"),
+
+	/**
+	 * 付款-批次查询
+	 */
+	ACCOUNT_PAY_BATCH_QUERY("/rest/v1.0/account/pay/batch-query", "GET"),
+
+	/**
+	 * 付款到供应商--申请添加供应商
+	 */
+	SUPPLIER_APPLY("/rest/v1.0/account/supplier/apply", "POST"),
+
+	/**
+	 * 付款到供应商--查询申请进度
+	 */
+	SUPPLIER_QUERY_PROGRESS("/rest/v1.0/account/supplier/query-progress", "GET"),
+
+	/**
+	 * 付款到供应商--查询已添加的供应商
+	 */
+	SUPPLIER_QUERY("/rest/v1.0/account/supplier/query", "GET"),
+
+	/**
+	 * 付款到供应商-下单
+	 */
+	SUPPLIER_PAY_ORDER("/rest/v1.0/account/supplier/pay/order", "POST"),
+	//----------------------------账户服务end--------------------------------------
+
+	//----------------------------交易start--------------------------------------
+	/**
+	 * 交易下单
+	 */
+	TRADE_ORDER("/rest/v1.0/trade/order", "POST"),
+
+	/**
+	 * 企业账户支付-下单
+	 */
+	ENTERPRISE_ACCOUNT_PAY_ORDER("/rest/v1.0/account/enterprise/account-pay/order", "POST"),
+
+	/**
+	 * 企业账户支付-自动付款
+	 */
+	ENTERPRISE_AUTO_PAYMENT_ORDER("/rest/v1.0/account/enterprise/auto-payment/order", "POST"),
+
+	/**
+	 * 企业账户支付-自动付款订单查询
+	 */
+	ENTERPRISE_AUTO_PAYMENT_QUERY("/rest/v1.0/account/enterprise/auto-payment/query", "GET"),
+
+	/**
+	 * 查询合并订单
+	 */
+	TRADE_ORDER_COMBINE_QUERY("/rest/v1.0/trade/order/combine-query", "GET"),
+
+	/**
+	 * 关闭订单
+	 */
+	TRADE_ORDER_CLOSE("/rest/v1.0/trade/order/close", "POST"),
+
+	/**
+	 * 查询订单
+	 */
+	TRADE_ORDER_QUERY("/rest/v1.0/trade/order/query", "GET"),
+
+	/**
+	 * 申请分账
+	 */
+	DIVIDE_APPLY("/rest/v1.0/divide/apply", "POST"),
+
+	/**
+	 * 完结分账
+	 */
+	DIVIDE_COMPLETE("/rest/v1.0/divide/complete", "POST"),
+
+	/**
+	 * 查询分账资金归还结果
+	 */
+	DIVIDE_BACK_QUERY("/rest/v1.0/divide/back/query", "GET"),
+
+	/**
+	 * 申请分账资金归还
+	 */
+	DIVIDE_BACK("/rest/v1.0/divide/back", "POST"),
+
+	/**
+	 * 查询分账结果
+	 */
+	DIVIDE_QUERY("/rest/v1.0/divide/query", "GET"),
+
+	/**
+	 * 申请极速退款
+	 */
+	REFUND_FAST("/rest/v1.0/trade/refund/fast", "POST"),
+
+	/**
+	 * 上送卡信息退款
+	 */
+	REFUND_SUPPLY("/rest/v1.0/trade/refund/supply", "POST"),
+
+	/**
+	 * 结束退款
+	 */
+	REFUND_END("/rest/v1.0/trade/refund/end", "POST"),
+
+	/**
+	 * 申请退款
+	 */
+	REFUND("/rest/v1.0/trade/refund", "POST"),
+
+	/**
+	 * 查询退款
+	 */
+	REFUND_QUERY("/rest/v1.0/trade/refund/query", "GET"),
+
+	/**
+	 * 交易回单
+	 */
+	TRADE_RECEIPT_DOWNLOAD("/yos/v1.0/trade/receipt/download", "GET"),
+
+	/**
+	 * 分账回单
+	 */
+	DIVIDE_RECEIPT_DOWNLOAD("/yos/v1.0/divide/receipt/download", "GET"),
+	//----------------------------交易end----------------------------------------
+
+	//----------------------------结算start--------------------------------------
+	/**
+	 * 待结算金额查询
+	 */
+	SETTLE_BALANCE_QUERY("/rest/v1.0/settle/balance/query", "GET"),
+
+	/**
+	 * 自助结算申请
+	 */
+	SETTLE_SELF_SETTLE_APPLY("/rest/v1.0/settle/self-settle/apply", "POST"),
+
+	/**
+	 * 结算记录查询
+	 */
+	SETTLE_RECORDS_QUERY("/rest/v1.0/settle/records/query", "GET"),
+
+	/**
+	 * 结算对账文件获取接口
+	 */
+	SETTLE_FILE_GET("/yos/v1.0/settle/file/get", "GET"),
+
+	/**
+	 * 新增结算卡
+	 */
+	SETTLE_CARD_ADD("/rest/v1.0/settle/settle-card/add", "POST"),
+
+	/**
+	 * 修改结算卡
+	 */
+	SETTLE_CARD_MODIFY("/rest/v1.0/settle/settle-card/modify", "POST"),
+	//----------------------------结算end----------------------------------------
+
+	//----------------------------对账start--------------------------------------
+	/**
+	 * 电子回单-下载
+	 */
+	RECEIPT_GET("/rest/v1.0/account/receipt/get", "GET"),
+
+	/**
+	 * 资金账单下载
+	 */
+	FUND_BILL_DOWNLOAD("/yos/v1.0/std/bill/fundbill/download", "GET"),
+
+	/**
+	 * 资金账单申请
+	 */
+	FUND_BILL_APPLY("/rest/v1.0/std/bill/fundbill/apply", "POST"),
+
+	/**
+	 * 交易日对账下载
+	 */
+	BILL_TRADE_DAY_DOWNLOAD("/yos/v1.0/std/bill/tradedaydownload", "POST"),
+
+	/**
+	 * 账户对账单-下载
+	 */
+	BILL_DOWNLOAD("/yos/v1.0/bill/download", "GET"),
+
+	/**
+	 * 分账日对账下载
+	 */
+	BILL_DIVIDE_DAY_DOWNLOAD("/yos/v1.0/std/bill/dividedaydownload", "GET"),
+	//----------------------------对账end----------------------------------------
+
+	//----------------------------变更服务start-----------------------------------
+	/**
+	 * 商户产品费率变更
+	 */
+	PRODUCT_FEE_MODIFY("/rest/v2.0/mer/product/fee/modify", "POST"),
+
+	/**
+	 * 商户产品费率查询
+	 */
+	PRODUCT_FEE_QUERY("/rest/v2.0/mer/product/fee/query", "GET"),
+
+	/**
+	 * 沉默商户解冻申请
+	 */
+	MERCHANT_DISPOSE_UNFREEZE("/rest/v1.0/mer/merchant/dispose/unfreeze","POST"),
+
+	/**
+	 * 沉默商户解冻申请进度查询
+	 */
+	MERCHANT_DISPOSE_QUERY("/rest/v1.0/mer/merchant/dispose/query","GET"),
+
+
+	//----------------------------变更服务end  -----------------------------------
+	;
+
+
+	String requestUrl;
+	String requestMethods;
+
+	YeepaySaas(String url, String requestMethods) {
+		this.requestMethods = requestMethods;
+		this.requestUrl = url;
+	}
+
+	public YopRequest buildRequest() {
+		return new YopRequest(requestUrl, requestMethods);
+	}
+}

+ 20 - 0
src/main/java/org/springblade/yeePay/common/YeePayConst.java

@@ -0,0 +1,20 @@
+package org.springblade.yeePay.common;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component
+@Data
+@PropertySource(value = {"payConfig.properties"})
+@ConfigurationProperties(prefix = "yee-pay")
+public class YeePayConst {
+	String parentMerchantNo;
+	String sm4Key;
+	String appKey;
+	String privateKey;
+	String serviceUrl;
+	String platformServiceNo;
+	String rechargeReturnUrl;
+}

+ 23 - 0
src/main/java/org/springblade/yeePay/common/YeePayProductFeeState.java

@@ -0,0 +1,23 @@
+package org.springblade.yeePay.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Author: Silent
+ * @Description
+ * @Date: Created in 16:28 2021/10/19
+ * @Modified By:
+ */
+@Getter
+@AllArgsConstructor
+public enum YeePayProductFeeState {
+	REVIEWING("申请审核中"),
+	REVIEW_BACK("申请已驳回"),
+	AGREEMENT_SIGNING("协议待签署"),
+	BUSINESS_OPENING("业务开通中"),
+	AUTHENTICITY_VERIFYING("真实性验证中"),
+	COMPLETED("申请已完成");
+
+	private String name;
+}

+ 349 - 0
src/main/java/org/springblade/yeePay/common/YeepayApiConstant.java

@@ -0,0 +1,349 @@
+package org.springblade.yeePay.common;
+
+import lombok.Getter;
+
+/**
+ * @author: lianghanqiang
+ * @description: YEEPAY 常量
+ * @since: 9/6/21 -- 1:41 PM
+ */
+public interface YeepayApiConstant {
+
+	/**
+	 * 入网商户的业务角色:
+	 * SETTLED_MERCHANT:入驻商户;
+	 * SHARE_MERCHANT:分账接收方(仅允许开通结算产品,到银行账户)
+	 */
+	@Getter
+	enum businessRole {
+		/*
+		 a. 入驻商户:
+		1、只能入驻到特定平台商的下级;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户;
+		*/
+		SETTLED_MERCHANT,
+		/*
+		* 分账接收方:
+		1、只能作为特定平台商的下级商户;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户。
+		* */
+		SHARE_MERCHANT,
+		/*
+		* 平台商:
+		1、经营线上或者线下交易撮合平台,可入驻上下游;2、目前仅支持事业单位/社会团体/企业的签约类型商户;
+		* */
+		PLATFORM_MERCHANT,
+	}
+
+	/**
+	 * 商户签约类型
+	 */
+	@Getter
+	enum signType {
+
+		/*(个体工商户):一般为个体户、个体工商户、个体经营。*/
+		INDIVIDUAL,
+		/*(企业):一般为有限公司、有限责任公司。INSTITUTION(事业单位):包括国内各级、各类政府机构、事业单位等(如:公安、党 团、司法、交通、旅游、工商税务、市政、医疗、教育、学校等机构)*/
+		ENTERPRISE,
+		/*(社会团体)*/
+		COMMUNITY
+	}
+
+	/**
+	 * 法人证件类型
+	 */
+	@Getter
+	enum legalLicenceType {
+		ID_CARD,    //(法人身份证)
+		PASSPORT,    //(护照)
+		HM_VISITORPASS,    //(港澳居民往来内地通行证)
+		TAIWAN,    //(台胞证)
+		SOLDIER,    //(士兵证)
+		OFFICERS,    //(军官证)
+	}
+
+	/**
+	 * 计费策略
+	 */
+	enum rateType {
+		SINGLE_PERCENT, //单笔百分比
+		SINGLE_FIXED, //单笔固定值
+		FIXED_MIX_PERCENT, //单笔固定值+单笔百分比
+		PERCENT_MIX_CAP //单笔百分比+封顶值。
+	}
+
+	/**
+	 * 手续费承担方
+	 */
+	enum undertaker {
+		SETTLED_MERCHANT,//(入驻商户,即本身)、
+		USER,//(用户)
+		ORDINARY_MERCHANT,//(标准商户)
+		PLATFORM_MERCHANT, //平台商
+		SAAS_SERVICE_PROVIDER // 服务商
+	}
+
+	/**
+	 * 手续费收取方式
+	 */
+	enum paymentMethod {
+		REAL_TIME,//(实收)、
+		PREPAID_REAL,//(预付实扣)
+		UN_REAL_TIME,//(后收,部分行业商户不支持,以跟商务约定的实际情况为准)
+	}
+
+	/**
+	 * 结算账户信息---结算方向
+	 */
+	enum settlementDirection {
+		ACCOUNT,//(结算到支付账户)
+		BANKCARD //(结算到银行账户,对公账户/单位结算卡账户名称默认为商户签约名称;借记卡/存折账户名称默认为商户经营者/法人姓名。)
+	}
+
+	/**
+	 * 结算账户信息---银行账户类型
+	 */
+	enum bankAccountType {
+		UNIT_SETTLEMENT_CARD,//(单位结算卡)
+		ENTERPRISE_ACCOUNT,//(对公账户)
+		DEBIT_CARD,//(借记卡)
+		PASSBOOK,//(存折)
+		CREDIT_CARD,//贷记卡
+		QUASI_CREDIT_CARD,//准贷卡
+		PUBLIC_CARD,//对公卡
+	}
+
+	/**
+	 * 生成聚合订单码---场景
+	 */
+	enum sceneType {
+		ONLINE,//线上
+		OFFLINE,//线下
+		BAOXIAN,//保险
+	}
+
+	/**
+	 * 付款码支付---分账订单标记
+	 */
+	enum fundProcessType {
+		DELAY_SETTLE,//需要分账
+		REAL_TIME,//不需要分账
+	}
+
+	/**
+	 * 付款码支付---支付方式类型
+	 */
+	enum payWayType {
+		MERCHANT_SCAN,//付款码支付
+		USER_SCAN,//用户扫码
+		MINI_PROGRAM,//小程序支付
+		WECHAT_OFFIACCOUNT,//微信公众号
+		ALIPAY_LIFE,//支付宝生活号
+		JS_PAY,//JS支付
+		SDK_PAY,//SDK支付
+		H5_PAY,//H5支付
+	}
+
+	/**
+	 * 付款码支付---渠道类型
+	 */
+	enum channelType {
+		WECHAT,//微信
+		ALIPAY,//支付宝
+		UNIONPAY,//银联云闪付
+		APPLEPAY,//苹果闪付
+	}
+
+	/**
+	 * 付款码支付---是否限制贷记卡
+	 */
+	enum limitCredit {
+		Y,//仅借记卡可以支付
+		N,//借贷记卡均可支付
+	}
+
+	/**
+	 * 撤销微信实名认证申请单---报告费
+	 */
+	enum reportFeeType {
+		GONGYI,// 微信公益
+		GONGJIAO,//微信公缴
+		XIANXIA,// 微信线下
+		BAOXIAN,// 微信保险
+		XIANSHANG,// 微信线上
+		OLDLVZHOU,// 微信老绿洲
+		LVZHOU,// 微信绿洲
+		XIAOYUAN,// 微信校园
+	}
+
+	/**
+	 * 充值-网银下单---充值支付方式
+	 */
+	enum payType {
+		B2C,//:个人网银
+		B2B,//企业网银
+		BANK_TRANSFER,//银行汇款
+	}
+
+	/**
+	 * 转账-下单--手续费承担方
+	 */
+	enum feeChargeSide {
+		OUTSIDE,//转出方承担,
+		INSIDE,//转入方承担(若不传默认转出方承担)
+	}
+
+	/**
+	 * 提现-下单---到账类型
+	 */
+	enum receiveType {
+		REAL_TIME,//实时
+		TWO_HOUR,//2小时到账
+		NEXT_DAY,//次日到账(无特殊情况资金于次日上午7点左右到提现银行账户中)
+	}
+
+	/**
+	 * 提现-下单---终端类型
+	 */
+	enum terminalType {
+		PC,//电脑
+		PHONE,//手机
+		PAD,//平板
+		NFC,//可穿戴设备
+		DTV,//数字电视
+		MPOS,//条码支付受理终端
+		OTHER,//其他
+	}
+
+	/**
+	 * 小微经营类型
+	 */
+	enum microBizType {
+		MICRO_TYPE_STORE,//门店场所
+		MICRO_TYPE_MOBILE,//流动经营/便民服务
+		MICRO_TYPE_ONLINE,//线上商品/服务交易
+	}
+
+
+	/**
+	 * 提现卡-修改/注销---银行卡操作类型
+	 */
+	enum bankCardOperateType {
+		MODIFY,//修改
+		CANCELLED,//注销
+	}
+
+	/**
+	 * 付款-下单---手续费承担方
+	 */
+	enum feeSide {
+		PAYER,//付款方
+		PAYEE,//收款方
+	}
+
+	/**
+	 * 付款到供应商--申请添加供应商---付款原因类型
+	 */
+	enum reasonType {
+		SHFY,//商户返佣,
+		GYSDK,//供应商打款,
+		XJDWDK,//下级单位打款,
+		QT,//其他
+	}
+
+	/**
+	 * 付款到供应商--申请添加供应商---供应商类型
+	 */
+	enum supplierType {
+		PERSON,//个人
+		BUSINESS,//企业
+	}
+
+	/**
+	 * 申请极速退款---退款资金来源
+	 */
+	enum refundAccountType {
+		FUND_ACCOUNT,//支付账户余额
+	}
+
+	/**
+	 * 微信实名认证状态
+	 */
+	enum applymentState {
+		APPLYMENT_STATE_WAITTING_FOR_AUDIT,//审核中
+		APPLYMENT_STATE_EDITTING,//编辑中
+		APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT,//待确认联系信息
+		APPLYMENT_STATE_WAITTING_FOR_CONFIRM_LEGALPERSON,//待账户验证
+		APPLYMENT_STATE_PASSED,//审核通过
+		APPLYMENT_STATE_REJECTED,//审核驳回
+		APPLYMENT_STATE_FREEZED,//已冻结(该主体已完成过商家注册,无需重复注册)
+		APPLYMENT_STATE_CANCELED,//已作废
+		COMPLETED,//完成
+	}
+
+	/**
+	 * 自助结算申请---结算时间范围
+	 */
+	enum operatePeriod {
+		PERIOD,//按照指定的时间区间结算
+		ALL,//结算当前全部未结算可结算交易
+	}
+
+	/**
+	 * 电子回单-下载---交易类型
+	 */
+	enum tradeType {
+		TRANSFER,//企业账户转账
+		PAY,//企业付款
+		RECHARGE,//企业账户充值
+	}
+
+	/**
+	 * 资金账单申请---账户类型
+	 */
+	enum accountType {
+		FUND_ACCOUNT,//资金账户
+		SETTLE_ACCOUNT,//待结算账户
+		DIVIDE_ACCOUNT,//待分账账户
+		FEE_ACCOUNT,//手续费账户
+		BASIC_ACCOUNT,//基本账户
+		SPECIAL_FUND_ACCOUNT,//专款账户
+	}
+
+	/**
+	 * 账户对账单-下载---账单类型
+	 */
+	enum bizType {
+		UA_PAY,//企业付款
+		UA_PAY_REFUND,//企业付款冲退
+		UA_WITHDRAW,//企业账户提现
+		UA_WITHDRAW_REFUND,//企业账户提现冲退
+		UA_TRANSFER,//企业账户转账
+		UA_RECHARGE,//企业账户充值
+		TOGETHERANDALLOCATE,//集团资金划拨
+	}
+
+	/**
+	 * ypPromotionInfo 营销收款类型
+	 */
+	enum ypPromotionInfo {
+		/**
+		 * 自定义金额立减
+		 * 用户支付金额=订单金额-自定义立减金额
+		 * 商户入账金额=订单金额
+		 */
+		CUSTOM_REDUCTION,
+		/**
+		 * 自定义金额补贴用户
+		 * 支付金额=订单金额商户
+		 * 入账金额=订单金额+自定义补贴金额
+		 */
+		CUSTOM_ALLOWANCE
+	}
+
+	/**
+	 * 公众号配置接口---appId类型
+	 */
+	enum appIdType {
+		OFFICIAL_ACCOUNT,//公众号;
+		MINI_PROGRAM//小程序
+	}
+}

+ 74 - 0
src/main/java/org/springblade/yeePay/common/YeepayProduct.java

@@ -0,0 +1,74 @@
+package org.springblade.yeePay.common;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝开通的产品列表
+ * @since: 9/29/21 -- 11:48 AM
+ */
+@Getter
+@AllArgsConstructor
+public enum YeepayProduct {
+	USER_SCAN_WECHAT_OFFLINE("用户扫码_微信_线下"),
+	USER_SCAN_WECHAT_ONLINE("用户扫码_微信_线上"),
+	USER_SCAN_ALIPAY_OFFLINE("用户扫码_支付宝_线下"),
+	MERCHANT_SCAN_WECHAT_OFFLINE("商家扫码_微信_线下"),
+	MERCHANT_SCAN_ALIPAY_OFFLINE("商家扫码_支付宝_线下"),
+	WECHAT_OFFIACCOUNT_WECHAT_OFFLINE("公众号支付_微信_线下"),
+	WECHAT_OFFIACCOUNT_WECHAT_ONLINE("公众号支付_微信_线上"),
+	ALIPAY_LIFE_ALIPAY_OFFLINE("生活号支付_支付宝_线下"),
+	MINI_PROGRAM_WECHAT_OFFLINE("小程序支付_微信_线下"),
+	MINI_PROGRAM_WECHAT_ONLINE("小程序支付_微信_线上"),
+	MINI_PROGRAM_ALIPAY_OFFLINE("小程序支付_支付宝_线下"),
+	SDK_PAY_WECHAT_OFFLINE("SDK支付_微信_特费版"),
+	SDK_PAY_WECHAT_ONLINE("SDK支付_微信_标准版"),
+	STATICQR_UNIONPAY_CREDIT("静态台牌_银联_贷记卡"),
+	STATICQR_UNIONPAY_DEBIT("静态台牌_银联_借记卡"),
+	STATICQR_ALIPAY_OFFLINE("静态台牌_支付宝_线下"),
+	STATICQR_WECHAT_OFFLINE("静态台牌_微信_线下"),
+	USER_SCAN_UNIONPAY_CREDIT("用户扫码_银联_贷记卡"),
+	USER_SCAN_UNIONPAY_DEBIT("用户扫码_银联_借记卡"),
+	MERCHANT_SCAN_UNIONPAY_CREDIT("商家扫码_银联_贷记卡"),
+	MERCHANT_SCAN_UNIONPAY_DEBIT("商家扫码_银联_借记卡"),
+	H5_PAY_UNIONPAY_DEBIT("H5支付_银联_借记卡"),
+	H5_PAY_UNIONPAY_CREDIT("H5支付_银联_贷记卡"),
+	JS_PAY_UNIONPAY_CREDIT("JS支付_银联_贷记卡"),
+	JS_PAY_UNIONPAY_DEBIT("JS支付_银联_借记卡"),
+	SDK_PAY_UNIONPAY_CREDIT("SDK支付_银联_贷记卡"),
+	SDK_PAY_UNIONPAY_DEBIT("SDK支付_银联_借记卡"),
+	SDK_PAY_APPLEPAY_CREDIT("SDK支付_苹果支付_贷记卡"),
+	SDK_PAY_APPLEPAY_DEBIT("SDK支付_苹果支付_借记卡"),
+	BINDCARDPAY_DEBIT("绑卡支付_借记卡"),
+	BINDCARDPAY_CREDIT("绑卡支付_贷记卡"),
+	BINDCARDPAY_BINDCARD("绑卡支付_绑卡"),
+	ONEKEYPAY_DEBIT("一键支付_借记卡"),
+	ONEKEYPAY_CREDIT("一键支付_贷记卡"),
+	ONEKEYPAY_DEBIT_CMBCHINA("一键支付_借记卡_招商银行"),
+	ONEKEYPAY_DEBIT_BOCO("一键支付_借记卡_交通银行"),
+	ONEKEYPAY_CREDIT_CMBCHINA("一键支付_贷记卡_招商银行"),
+	ONEKEYPAY_CREDIT_BOCO("一键支付_贷记卡_交通银行"),
+	E_BANK_B2B("网银支付_企业网银"),
+	E_BANK_B2C("网银支付_个人网银"),
+	BANKTRANSFERPAY("银行转账支付"),
+	ENTERPRISE_ACCOUNT_PAY("企业账户支付"),
+	T1("T1_自动结算"),
+	D1("D1_自动结算"),
+	T1_MANUAL("T1_自助结算"),
+	D1_MANUAL("D1_自助结算"),
+	ENTERPRISE_RECHARGE_STANDARD_B2B("企业账户充值标准版_网银B2B"),
+	ENTERPRISE_RECHARGE_STANDARD_B2C("企业账户充值标准版_网银B2C"),
+	ENTERPRISE_RECHARGE_STANDARD_BANK_TRASFER("企业账户充值标准版_银行汇款"),
+	ENTERPRISE_WITHDRAW_STANDARD_REALTIME("企业账户提现标准版_实时到账"),
+	ENTERPRISE_WITHDRAW_STANDARD_TWOHOURS("企业账户提现标准版_2小时到账"),
+	ENTERPRISE_WITHDRAW_STANDARD_TOMORROW("企业账户提现标准版_次日到账"),
+	ENTERPRISE_TRANSFER_B2B("企业账户转账_公对公"),
+	ENTERPRISE_PAY_TWOHOURS("企业付款_2小时到账"),
+	ENTERPRISE_PAY_REALTIME("企业付款_实时到账"),
+	ENTERPRISE_PAY_TOMORROW("企业付款_次日到账"),
+
+	;
+
+	String text;
+}

+ 217 - 0
src/main/java/org/springblade/yeePay/controller/YeepayController.java

@@ -0,0 +1,217 @@
+package org.springblade.yeePay.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.yeepay.yop.sdk.service.common.response.YopResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.common.config.yeepay.OpenProduct;
+import org.springblade.core.log.annotation.ApiLog;
+import org.springblade.core.log.logger.BladeLogger;
+import org.springblade.core.tool.api.R;
+import org.springblade.yeePay.common.YeePayConst;
+import org.springblade.yeePay.entity.ConfigAppDto;
+import org.springblade.yeePay.entity.InitOrderDto;
+import org.springblade.yeePay.entity.saas.*;
+import org.springblade.yeePay.entity.saas.account.*;
+import org.springblade.yeePay.entity.saas.changeservice.ProductFeeModifyDto;
+import org.springblade.yeePay.entity.saas.changeservice.ProductFeeQueryDto;
+import org.springblade.yeePay.entity.saas.receipt.BillTradeDayDownloadDto;
+import org.springblade.yeePay.entity.saas.settlement.SettleBalanceQueryDto;
+import org.springblade.yeePay.entity.saas.settlement.SettleSelfSettleApplyDto;
+import org.springblade.yeePay.entity.saas.trade.TradeOrderQueryDto;
+import org.springblade.yeePay.service.YeepayCommonService;
+import org.springblade.yeePay.service.YeepaySaasService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝支付控制层
+ * @since: 9/6/21 -- 2:18 PM
+ */
+@RestController
+@RequestMapping("/yeepay")
+@Api(tags = "易宝支付")
+@AllArgsConstructor
+public class YeepayController {
+	private YeepaySaasService yeepaySaasService;
+	private YeePayConst yeePayConst;
+	private YeepayCommonService yeepayCommonService;
+	private BladeLogger logger;
+
+	@PostMapping("/invite")
+	@ApiOperation("商户入驻")
+	public R invite(@RequestBody InvitationDto invitationDto) {
+		return R.data(yeepaySaasService.inviteMerchant(invitationDto));
+	}
+
+	@PostMapping("/inviteMicro")
+	@ApiOperation("小微入驻")
+	public R inviteMicro(@RequestBody MicroInvitationDto microInvitationDto) {
+		return R.data(yeepaySaasService.inviteMicro(microInvitationDto));
+	}
+
+	@PostMapping("wechatApply")
+	@ApiOperation("微信实名认证")
+	public R wechatApply(@RequestBody WechatApplyDto wechatApplyDto) {
+		return R.data(yeepaySaasService.wechatApply(wechatApplyDto));
+	}
+
+	@PostMapping("querywechatApply")
+	@ApiOperation("微信实名认证查询")
+	public R querywechatApply(WechatAuthDto wechatAuthDtow) {
+		return R.data(yeepaySaasService.wechatAuthQuery(wechatAuthDtow));
+	}
+
+	@PostMapping("cancelWechatApply")
+	@ApiOperation("撤销微信实名认证")
+	public R cancelWechatApply(WechatAuthDto wechatAuthDtow) {
+		return R.data(yeepaySaasService.wechatAuthCancel(wechatAuthDtow));
+	}
+
+	@PostMapping("queryShopStatus")
+	@ApiOperation("商户开户意愿查询")
+	public R queryShopStatus(AuthStateQueryDto authStateQueryDto) {
+		return R.data(yeepaySaasService.authStateQuery(authStateQueryDto));
+	}
+
+	@PostMapping("queryInvitation")
+	@ApiOperation("入驻查询")
+	public R queryInvitation(String requestId) {
+		return R.data(yeepaySaasService.queryInvitation(requestId));
+	}
+
+	@PostMapping("orderInit")
+	@ApiOperation("聚合支付下单")
+	public R orderInit(@RequestBody InitOrderDto initOrderDto) {
+		return R.data(yeepaySaasService.aggPrepay(initOrderDto));
+	}
+
+	@PostMapping("payLinkOrder")
+	@ApiOperation("聚合码支付下单")
+	public R payLinkOrder(@RequestBody PayLinkOrderDto payLinkOrderDto) {
+		return R.data(yeepaySaasService.payLinkOrder(payLinkOrderDto));
+	}
+
+	@PostMapping("configApp")
+	@ApiOperation("配置小程序")
+	public R configApp(@RequestBody ConfigAppDto configAppDto) {
+		return R.data(yeepayCommonService.configApp(configAppDto));
+	}
+
+	@GetMapping("queryAppStatus")
+	@ApiOperation("查询小程序配置信息")
+	public R queryAppStatus(String appIdType, String parentMerchantNo, String merchantNo) {
+		return R.data(yeepayCommonService.queryApp(parentMerchantNo, merchantNo, appIdType));
+	}
+
+	@PostMapping("/upload")
+	@ApiOperation("上传文件")
+	public R upload(MultipartFile file) {
+		return R.data(yeepayCommonService.addFileToYeepay(file));
+	}
+
+	@GetMapping("/queryBalance")
+	@ApiOperation("账户余额查询")
+	public JSONObject queryBalance(String merchant) {
+		return JSON.parseObject(yeepaySaasService.accountInfosQuery(merchant).getStringResult());
+	}
+
+
+	@PostMapping("/withdrawCardBind")
+	@ApiOperation("银行卡绑卡")
+	public R withdrawCardBind(@RequestBody WithdrawCardBindDto withdrawCardBindDto) {
+		return R.data(yeepaySaasService.withdrawCardBind(withdrawCardBindDto));
+	}
+
+	@GetMapping("/withdrawCardQuery")
+	@ApiOperation("提现卡查询")
+	public R withdrawCardQuery(String merchantNo) {
+		return R.data(yeepaySaasService.withdrawCardQuery(merchantNo));
+	}
+
+	@GetMapping("/settleBalanceQuery")
+	@ApiOperation("待结算金额查询")
+	public R settleBalanceQuery(SettleBalanceQueryDto settleBalanceQueryDto) {
+		return R.data(yeepaySaasService.settleBalanceQuery(settleBalanceQueryDto));
+	}
+
+	@PostMapping("/withdraw")
+	@ApiOperation("提现")
+	public R withdraw(WithdrawOrderDto withdrawOrderDto) {
+		return R.data(yeepaySaasService.withdrawOrder(withdrawOrderDto));
+	}
+
+	@PostMapping("/withdrawQuery")
+	@ApiOperation("提现查询")
+	public R withdrawQuery(WithdrawQueryDto withdrawQueryDto) {
+		return R.data(yeepaySaasService.withdrawQuery(withdrawQueryDto));
+	}
+
+	@PostMapping("/settle")
+	@ApiOperation("结算")
+	public R settle(SettleSelfSettleApplyDto settleSelfSettleApplyDto) {
+		return R.data(yeepaySaasService.settleSelfSettleApply(settleSelfSettleApplyDto));
+	}
+
+	@GetMapping("/feeQuery")
+	@ApiOperation("产品费率查询")
+	public JSONObject feeQuery(ProductFeeQueryDto productFeeQueryDto) {
+		return JSON.parseObject(yeepaySaasService.productFeeQuery(productFeeQueryDto).getStringResult());
+	}
+
+	@GetMapping("/feeUpdate")
+	@ApiOperation("产品费率修改")
+	public JSONObject feeUpdate(ProductFeeModifyDto productFeeModifyDto) {
+		return JSON.parseObject(yeepaySaasService.productFeeModify(productFeeModifyDto).getStringResult());
+	}
+
+	@PostMapping("/transfer")
+	@ApiOperation("商户转账")
+	public JSONObject transfer(TransferOrderDto transferOrderDto) {
+		return JSON.parseObject(yeepaySaasService.transferOrder(transferOrderDto).getStringResult());
+	}
+
+	@PostMapping("/reCharge")
+	@ApiOperation("充值")
+	public JSONObject reCharge(OnlineBankRechargeOrderDto onlineBankRechargeOrderDto) {
+		return JSON.parseObject(yeepaySaasService.onlineBankRechargeOrder(onlineBankRechargeOrderDto).getStringResult());
+	}
+
+	@PostMapping("/queryOrder")
+	@ApiOperation("查询订单")
+	@ApiLog
+	public JSONObject queryOrder(TradeOrderQueryDto orderQueryDto) {
+		return JSON.parseObject(yeepaySaasService.tradeOrderQuery(orderQueryDto).getStringResult());
+	}
+
+	@GetMapping("/bill/tradedaydownload")
+	@ApiOperation("对账")
+	public YopResponse tradedaydownload(BillTradeDayDownloadDto billTradeDayDownloadDto) {
+		return yeepaySaasService.billTradeDayDownload(billTradeDayDownloadDto);
+	}
+
+	@GetMapping("/test")
+	@ApiOperation("测试")
+	@ApiLog
+	public R test() {
+		logger.info("log", "asdf");
+		return R.success("s");
+	}
+
+//	public static void main(String[] args) {
+//		List<InvitationDto.ProductInfo> productInfos = new ArrayList<>(32);
+//		Arrays.stream(OpenProduct.MICRO_PRODUCTS).forEach(item -> {
+//			InvitationDto.ProductInfo productInfo = PlatformCache.productInfo(item);
+//			productInfo.setProductName(null);
+//			productInfos.add(productInfo);
+//		});
+
+
+}

+ 89 - 0
src/main/java/org/springblade/yeePay/entity/BatchTransferDto.java

@@ -0,0 +1,89 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@Builder
+@ApiModel("批量转账入参")
+public class BatchTransferDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "批次号",required = true)
+	String batchNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "到账类型:REAL_TIME:实时\n" +
+		"TWO_HOUR:两小时\n" +
+		"NEXT_DAY:次日",required = true	)
+	String receiveType;
+
+	@NotNull
+	@ApiModelProperty(value = "订单详情",required = true,dataType="DetailList")
+	@Valid
+	List<DetailList> detailList;
+
+	@ApiModelProperty("回调地址")
+	String notifyUrl;
+
+	@ApiModelProperty("后台配置,忽略")
+	String parentMerchantNo;
+	@ApiModelProperty("后台配置,忽略")
+	String merchantNo;
+
+	@ApiModel("DetailList")
+	@Data
+	@AllArgsConstructor
+	@NoArgsConstructor
+	private static class DetailList {
+
+		@NotBlank
+		@ApiModelProperty(value = "订单号",required = true)
+		String requestNo;
+
+		@NotBlank
+		@ApiModelProperty(value = "收款方银行账号",required = true)
+		String receiverAccountNo;
+
+		@NotBlank
+		@ApiModelProperty(value = "收款方账号名",required = true)
+		String receiverAccountName;
+
+		@NotBlank
+		@ApiModelProperty(value = "银行卡所在开户行编号",required = true)
+		String receiverBankCode;
+
+		@NotNull
+		@ApiModelProperty(value = "付款金额",required = true)
+		Double orderAmount;
+
+		@NotBlank
+		@ApiModelProperty(value = "账户类型\n" +
+			"可选项如下:\n" +
+			"DEBIT_CARD:借记卡\n" +
+			"CREDIT_CARD:贷记卡\n" +
+			"QUASI_CREDIT_CARD:准贷卡\n" +
+			"PASSBOOK:存折\n" +
+			"UNIT_SETTLE_CARD:单位结算卡\n" +
+			"PUBLIC_CARD:对公卡",required = true)
+		String bankAccountType;
+
+		@NotBlank
+		@ApiModelProperty(value = "手续费承担方(若不传默认付款方)\n" +
+			"可选项如下:\n" +
+			"PAYER:付款方\n" +
+			"PAYEE:收款方",required = true)
+		String feeChargeSide;
+
+
+	}
+}

+ 126 - 0
src/main/java/org/springblade/yeePay/entity/ChargeDto.java

@@ -0,0 +1,126 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+/**
+ * @author: lianghanqiang
+ * @description:
+ * @since: 7/27/21 -- 5:44 PM
+ */
+@Data
+@Builder
+public class ChargeDto {
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号。商户系统内部生成的订单号,需要保持在同一个商户下唯一",required = true)
+	String orderId;
+
+	@NotNull
+	@ApiModelProperty(value = "订单金额。业务上是必须参数,单位: 元, 两位小数, 最低 0.01",required = true)
+	@DecimalMin(value = "0.01",message = "订单金额不可以小于0.01啊")
+	Double orderAmount;
+
+	@Pattern(message = "输入格式为 yyyy-MM-dd HH:mm:ss",regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$")
+//	@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "订单截止时间。格式\"yyyy-MM-dd HH:mm:ss\"\n" +
+		"不传默认一天",example = "yyyy-MM-dd HH:mm:ss")
+	String expiredTime;
+
+	@ApiModelProperty("场景\n" +
+		"OFFLINE:线下")
+	String scene;
+
+
+	@ApiModelProperty(value = "\t\n" +
+		"商家的公众号id")
+	String appId;
+
+	@ApiModelProperty(value = "业务上是必须参数,支付成功服务器回调地址:支付成功通知、超时通知、失败通知。",example = "https://notify.merchant.com/xxx")
+	String notifyUrl;
+
+	@ApiModelProperty("自定义对账备注。商户可以自定义自身业务需要使用的字段: 如对账时定义该订单应属的会计科目")
+	String memo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称,如:旺仔牛奶",required = true)
+	String goodsName;
+
+	@ApiModelProperty("分账订单标记\n" +
+		"DELAY_SETTLE:需要分账\n" +
+		"REAL_TIME:不需要分账")
+	String fundProcessType;
+
+	@NotBlank
+	@ApiModelProperty(value = "支付方式类型" +
+		"MERCHANT_SCAN:付款码支付",required = true)
+	String payWay;
+
+	@NotBlank
+	@ApiModelProperty(value = "渠道类型\n" +
+		"WECHAT:微信\n" +
+		"ALIPAY:支付宝\n" +
+		"UNIONPAY:银联云闪付\n" +
+		"APPLEPAY:苹果闪付",required = true)
+	String channel;
+
+	@NotBlank
+	@ApiModelProperty(value = "获取的用户授权码\n" +
+		"(ApplePay对应paymentToken解密后的emvData)",required =true)
+	String authCode;
+
+	@NotBlank
+	@ApiModelProperty(value = "用户真实IP地址",required = true,example = "123.123.123.123")
+	String userIp;
+
+	@NotBlank
+	@ApiModelProperty(value = "终端号id",required = true,example = "00000000")
+	String terminalId;
+
+	@ApiModelProperty("商家终端场景信息\n" +
+		"示例值:{\"storeId\":\"门店id\",\"storeName\":\"门店名称\",\"operatorId\":\"商户操作员编号\",\"alipayStoreId\":\"支付宝的店铺编号\",\"areaCode\":\"门店行政区划码\",\"address\":\"门店详细地址\"}")
+	String terminalSceneInfo;
+
+	@ApiModelProperty("渠道指定支付信息。支持花呗分期")
+	String channelSpecifiedInfo;
+
+	@ApiModelProperty("渠道优惠信息。订单需参与渠道指定优惠时传入,如微信单品券")
+	String channelPromotionInfo;
+
+	@ApiModelProperty("限制付款人信息。特殊行业需要支付实名场景下使用,如保险的特殊险种需要付款人和投保人实名条件下可以使用")
+	String identityInfop;
+
+	@ApiModelProperty("是否限制贷记卡\n" +
+		"Y:仅借记卡可以支付\n" +
+		"N:借贷记卡均可支付")
+	String limitCredit;
+
+	@ApiModelProperty("下单接口返回的token\n" +
+		"如果商户使用先下单再支付模式,请传入下单接口返回的token")
+	String token;
+
+	@ApiModelProperty("易宝订单号\n" +
+		"如果商户使用先下单再支付模式,请传入下单接口返回的易宝订单号\n" +
+		"同时传入易宝订单号和token,将以易宝订单号为准")
+	String uniqueOrderNo;
+
+	@ApiModelProperty("清算成功服务器回调地址,不传则不通知。")
+	String csUrl;
+
+	@ApiModelProperty("ApplePay支付密码,免密情况下可不填,对应paymentToken解密后的encryptedPINData")
+	String encryptedPINData;
+
+	@ApiModelProperty("卡号,ApplePay对应paymentToken解密后的emvData")
+	String payerAccountNo;
+
+	@ApiModelProperty("合作银行信息:\n" +
+		"JSON字符串;已获批开通账户通的平台商可传入此字段,否则请勿传值\n" +
+		"accountProvider:合作银行\n" +
+		"\u2028token:商户与银行约定令牌")
+	String accountLinkInfo;
+}

+ 40 - 0
src/main/java/org/springblade/yeePay/entity/ConfigAppDto.java

@@ -0,0 +1,40 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+
+
+@Data
+@Builder
+@Validated
+public class ConfigAppDto {
+	String [] tradeAuthDirList;
+	AppInfo [] appIdList;
+	String parentMerchantNo;
+	String merchantNo;
+
+		@ApiModel("App信息实体类,包括小程序以及公众号")
+		@Data
+		@Valid
+		public static class AppInfo{
+			@NotBlank
+			@ApiModelProperty(value = "公众号ID",required = true)
+			String appId;
+			@NotBlank
+			@ApiModelProperty(value = "公众号秘钥",required = true)
+			String appSecret;
+			@NotBlank
+			@ApiModelProperty(value = "appIdType appId类型(OFFICIAL_ACCOUNT:公众号;MINI_PROGRAM:小程序)",required = true)
+			String appIdType ;
+			@NotBlank
+			@ApiModelProperty(value = "推荐关注的公众号ID",required = true)
+			String subscribeAppId;
+		}
+
+}

+ 56 - 0
src/main/java/org/springblade/yeePay/entity/CreateCodeDto.java

@@ -0,0 +1,56 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+/**
+ * @author: lianghanqiang
+ * @description:  生成订单聚合码Dto
+ * @since: 7/27/21 -- 10:37 AM
+ */
+
+@Builder
+@Data
+@ApiModel("订单聚合码入参实体")
+public class CreateCodeDto {
+
+	@ApiModelProperty(value = "订单号",required = true)
+	@NotBlank
+	String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "简单描述订单信息或商品简介",required = true)
+	String goodsName;
+
+	@NotNull
+	@ApiModelProperty(value = "订单金额",required = true)
+	Double amount;
+
+	@NotNull
+	@Pattern(message = "输入格式为 yyyy-MM-dd HH:mm:ss",regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$")
+//	@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "订单过期时间",required = true,example = "yyyy-MM-dd HH:mm:ss")
+	String expiredTime;
+
+	@ApiModelProperty(value = "场景\n" +
+		"ONLINE:线上\n" +
+		"OFFLINE:线下\n" +
+		"BAOXIAN:保险")
+	String scene;
+
+	@ApiModelProperty(value = "分账标识。不传,默认不分账DELAY_SETTLE:分账合单收款场景中,请在子单域信息subOrderDetail里提供")
+	String fundProcessType;
+
+	@ApiModelProperty(value = "\t\n" +
+		"商家的公众号id")
+	String appId;
+
+	@ApiModelProperty("支付回调地址")
+	String notifyUrl;
+}

+ 101 - 0
src/main/java/org/springblade/yeePay/entity/InitOrderDto.java

@@ -0,0 +1,101 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@Builder
+public class InitOrderDto extends MerchantInfo {
+	@NotBlank
+	@ApiModelProperty(value = "商户订单号,保证订单唯一性", required = true)
+	String orderId;
+
+	@ApiModelProperty(value = "订单金额,单位: 元, 两位小数, 最低 0.01", required = true)
+	@NotNull
+	Double orderAmount;
+
+	@ApiModelProperty("订单截止时间: 格式: yyyy-MM-dd HH:mm:ss 不传默认一天")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	String expiredTime;
+
+	@NotBlank
+	@ApiModelProperty(value = "支付成功服务器回调地址", required = true)
+	String notifyUrl;
+
+	@ApiModelProperty("页面回调地址。如使用易宝收银台需要上送前端页面回调地址")
+	String redirectUrl;
+
+	@ApiModelProperty("自定义对账备注;商户可以自定义自身业务需要使用的字段: 如对账时定义该订单应属的会计科目")
+	String memo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称", required = true)
+	String goodsName;
+
+	@ApiModelProperty("分账订单标记,DELAY_SETTLE:需要分账;REAL_TIME:不需要分账,示例值:REAL_TIME")
+	String fundProcessType;
+
+	@NotBlank
+	@ApiModelProperty(value = "支付方式类型: USER_SCAN:用户扫码 ;MINI_PROGRAM:小程序支付 ; WECHAT_OFFIACCOUNT:微信公众号 ;ALIPAY_LIFE:支付宝生活号 ;JS_PAY:JS支付 ;SDK_PAY:SDK支付 ;H5_PAY:H5支付", required = true)
+	String payWay;
+
+	@NotBlank
+	@ApiModelProperty(value = "渠道类型 : WECHAT:微信 ; ALIPAY:支付宝 ;UNIONPAY:银联云闪付", required = true)
+	String channel;
+
+	@ApiModelProperty("场景: ONLINE:线上 ; OFFLINE:线下 ; BAOXIAN:保险 ; 渠道类型为银联时,不必传")
+	String scene;
+
+	@ApiModelProperty("支付渠道为微信时需要提供用户的openId")
+	String userId;
+
+	@NotBlank
+	@ApiModelProperty(value = "用户的真实IP地址", required = true)
+	String userIp;
+
+
+	/**
+	 * 渠道指定支付信息
+	 * 支持花呗分期
+	 * 示例值:{"hbFqNum":"3","hbFqSellerPercent":"0","sysServiceProviderId":""}
+	 * */
+	String channelSpecifiedInfo;
+
+	/**
+	 * 渠道优惠信息
+	 * 订单需参与渠道指定优惠时传入,如微信单品券
+	 * https://open.yeepay.com/docs/v2/products/fwssfk/others/5f59fc1720289f001ba82528/5fed4bc56d313b001b79abfd/index.html
+	 * */
+	String channelPromotionInfo;
+
+	String uniqueOrderNo;
+
+	/**
+	 * 清算成功服务器回调地址,不传则不通知。详见清算结果通知
+	 * */
+	String csUrl;
+
+	@ApiModelProperty("支付渠道为微信时需要提供appID")
+	String appId;
+
+
+	/**
+	 * 	营销配置信息
+	 * */
+	YpPromotionInfo [] ypPromotionInfo;
+
+	@Data
+	@AllArgsConstructor
+	@NoArgsConstructor
+	public class YpPromotionInfo{
+		String amount;
+		String type;
+	}
+}

+ 11 - 0
src/main/java/org/springblade/yeePay/entity/KeyAndValue.java

@@ -0,0 +1,11 @@
+package org.springblade.yeePay.entity;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class KeyAndValue {
+	String key;
+	String value;
+}

+ 29 - 0
src/main/java/org/springblade/yeePay/entity/MerchantInfo.java

@@ -0,0 +1,29 @@
+package org.springblade.yeePay.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: lianghanqiang
+ * @description: 商户号信息
+ * @since: 9/16/21 -- 11:36 AM
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MerchantInfo {
+	/**
+	 * 发起方商户编号。*标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 * */
+	String parentMerchantNo;
+
+
+	/**
+	 *	商户编号
+	 *  收单主体商编,平台商或服务商下的子商户,普通特约商户
+	 */
+	String merchantNo;
+}

+ 45 - 0
src/main/java/org/springblade/yeePay/entity/PayGateWayDto.java

@@ -0,0 +1,45 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@Builder
+@ApiModel("网关支付入参")
+public class PayGateWayDto {
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号",required = true)
+	String orderId;
+
+	@NotNull
+	@ApiModelProperty(value = "充值金额",required = true)
+	Double orderAmount;
+
+//	@NotBlank
+//	@ApiModelProperty(value = "可选项如下:" +
+//		"B2C:个人网银" +
+//		"B2B:企业网银",required = true)
+//	String payType;
+
+//	@NotBlank
+//	@ApiModelProperty(value = "银行编码",required = true)
+//	String bankCode;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户通知地址",required = true)
+	String notifyUrl;
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称",required = true)
+	String goodsName;
+
+	@ApiModelProperty(value = "支付成功跳转地址",required = false)
+	String redirectUrl;
+	@ApiModelProperty("小程序id")
+	String appId;
+}

+ 107 - 0
src/main/java/org/springblade/yeePay/entity/TransferDto.java

@@ -0,0 +1,107 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@Builder
+@ApiModel("转账入参实体")
+@NoArgsConstructor
+@AllArgsConstructor
+public class TransferDto {
+
+	@ApiModelProperty(value = "单位:元,非负浮点数,保留2位小数,示例值:1000.00",required = true)
+	@NotNull
+	Double orderAmount;
+
+	@ApiModelProperty(value = "手续费承担方(若不传默认付款方)\n" +
+		"可选项如下:\n" +
+		"PAYER:付款方\n" +
+		"PAYEE:收款方\n" +
+		"示例值:当商户承担且计费方式为预付实扣或后收时,不支持收款方承担;当平台商或服务商承担时无需指定此手续费承担方;",required = false)
+	String feeChargeSide;
+
+	@NotBlank
+	@ApiModelProperty(value = "到账类型\n" +
+		"可选项如下:\n" +
+		"REAL_TIME:实时\n" +
+		"TWO_HOUR:两小时到账\n" +
+		"NEXT_DAY:次日到账(无特殊情况资金于次日上午7点左右到收款银行账户中)\n" +
+		"示例值:REAL_TIME",required = true)
+	String receiveType;
+
+	@ApiModelProperty(value = "收款帐户的卡号",required = true)
+	@NotBlank
+	String receiverAccountNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户名",required = true)
+	String receiverAccountName;
+
+	@ApiModelProperty(value = "收款方开户行\n" +
+		"银行卡所在开户行编号,详见\n" +
+		"https://open.yeepay.com/attachments/2020/07/23/doc_FFTv15d8TY_1595490360236.xlsx?fileName=%E6%80%BB%E8%A1%8C%E5%8F%8A%E7%9B%B8%E5%BA%94%E6%94%AF%E8%A1%8C%E7%BC%96%E7%A0%81.xlsx\n" +
+		"示例值:ICBC",required = true)
+	@NotBlank
+	String receiverBankCode;
+
+	@NotBlank
+	@ApiModelProperty(value = "账户类型\n" +
+		"可选项如下:\n" +
+		"DEBIT_CARD:借记卡\n" +
+		"CREDIT_CARD:贷记卡\n" +
+		"QUASI_CREDIT_CARD:准贷卡\n" +
+		"PASSBOOK:存折\n" +
+		"UNIT_SETTLE_CARD:单位结算卡\n" +
+		"PUBLIC_CARD:对公卡\n" +
+		"示例值:DEBIT_CARD",required = true)
+	String bankAccountType;
+
+	@ApiModelProperty("支行编码\n" +
+		"详见 https://open.yeepay.com/attachments/2020/08/06/doc_6PhAgFxEau_1596701395666.xlsx?fileName=%E6%94%AF%E8%A1%8C%E4%BF%A1%E6%81%AF20200826.xlsx")
+	String branchBankCode;
+
+	@ApiModelProperty("银行附言\n" +
+		"展示在收款银行系统中的附言,由数字、字母、汉字组成(最终附言内容以银行实际账单为准)\n" +
+		"示例值:xx平台付款")
+	String comments;
+
+	@ApiModelProperty("终端类型\n" +
+		"可选项如下:\n" +
+		"PC:电脑\n" +
+		"PHONE:手机\n" +
+		"PAD:平板\n" +
+		"NFC:可穿戴设备\n" +
+		"DTV:数字电视\n" +
+		"MPOS:条码支付受理终端\n" +
+		"OTHER:其他\n" +
+		"示例值:PC")
+	String terminalType;
+
+	@ApiModelProperty("商户通知地址,不传则不通知回调内容请参看:付款结果通知\n" +
+		"示例值:http://www.baidu.com")
+	String notifyUrl;
+
+	@ApiModelProperty(value = "请求订单号,自定义生成,唯一",required = true)
+	String requestNo;
+
+
+	/**
+	 * 商户id
+	 */
+
+	private Long bussinessId;
+
+	/**
+	 * 代付单号,每个商户唯一
+	 */
+
+	private String bussinessOrderId;
+}

+ 239 - 0
src/main/java/org/springblade/yeePay/entity/saas/AggpayPayDto.java

@@ -0,0 +1,239 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款码支付入参")
+public class AggpayPayDto {
+	/**
+	 * 发起方商户编号。
+	 * 标准商户收付款方案中此参数与收款商户编号一致;
+	 * 平台商户收付款方案中此参数为平台商商户编号;
+	 * 服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号。收单主体商编,平台商或服务商下的子商户,普通特约商户", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "商户收款请求号。商户系统内部生成的订单号,需要保持在同一个商户下唯一")
+	private String orderId;
+
+	@ApiModelProperty(value = "订单金额。业务上是必须参数,单位: 元, 两位小数, 最低 0.01")
+	private BigDecimal orderAmount;
+
+	@ApiModelProperty(value = "订单截止时间。格式yyyy-MM-dd HH:mm:ss不传默认一天")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String expiredTime;
+
+	@ApiModelProperty(value = "业务上是必须参数,支付成功服务器回调地址:支付成功通知、超时通知、失败通知。")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "自定义对账备注。商户可以自定义自身业务需要使用的字段: 如对账时定义该订单应属的会计科目")
+	private String memo;
+
+	@ApiModelProperty(value = "商品名称")
+	private String goodsName;
+
+	/**
+	 * 分账订单标记
+	 * DELAY_SETTLE:需要分账
+	 * REAL_TIME:不需要分账
+	 */
+	@ApiModelProperty(value = "分账订单标记")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+	/**
+	 * 支付方式类型
+	 * MERCHANT_SCAN:付款码支付
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "支付方式类型", required = true)
+	private YeepayApiConstant.payWayType payWay;
+
+	/**
+	 * 渠道类型
+	 * WECHAT:微信
+	 * ALIPAY:支付宝
+	 * UNIONPAY:银联云闪付
+	 * APPLEPAY:苹果闪付
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "渠道类型", required = true)
+	private YeepayApiConstant.channelType channel;
+
+	/**
+	 * 场景
+	 * OFFLINE:线下
+	 * 渠道类型为银联时,不必传
+	 */
+	@ApiModelProperty(value = "场景")
+	private YeepayApiConstant.sceneType scene;
+
+	@NotBlank
+	@ApiModelProperty(value = "获取的用户授权码(ApplePay对应paymentToken解密后的emvData)", required = true)
+	private String authCode;
+
+	@ApiModelProperty(value = "微信公众号ID。如需获取付款用户的用户ID时需要传入")
+	private String appId;
+
+	@NotBlank
+	@ApiModelProperty(value = "用户真实IP地址", required = true)
+	private String userIp;
+
+	@NotBlank
+	@ApiModelProperty(value = "终端号id", required = true)
+	private String terminalId;
+
+	@ApiModelProperty(value = "商家终端场景信息")
+	private TerminalSceneInfo terminalSceneInfo;
+
+	@ApiModelProperty(value = "渠道指定支付信息。支持花呗分期")
+	private ChannelSpecifiedInfo channelSpecifiedInfo;
+
+	/**
+	 * 微信
+	 * {"goodsTag":"全场券订单优惠标识","costPrice":"单品券-订单原价","receiptId":"单品券-商品小票",
+	 * "goodsDetail":[
+	 * {"quantity":1,"goodsId":"商品编码","price":"2.1","goodsName":"商品名称","wxpayGoodsId":"渠道侧商品编码"},
+	 * {"quantity":2,"goodsId":"商品编码","price":"2.2","goodsName":"商品名称","wxpayGoodsId":"渠道侧商品编码"}
+	 * ]}
+	 * 银联云闪付
+	 * [{"channelGoodsId":"商品编号","goodsName":"商品名称","price":1,"quantity":1,"category":"商品类目","addnInfo":"附加信息"},
+	 * {"channelGoodsId":"商品编号","goodsName":"商品名称","price":1,"quantity":1,"category":"商品类目","addnInfo":"附加信息"}]
+	 */
+	@ApiModelProperty(value = "渠道优惠信息。订单需参与渠道指定优惠时传入,如微信单品券")
+	private String channelPromotionInfo;
+
+	@ApiModelProperty(value = "限制付款人信息。特殊行业需要支付实名场景下使用,如保险的特殊险种需要付款人和投保人实名条件下可以使用")
+	private IdentityInfo identityInfo;
+
+	@ApiModelProperty(value = "是否限制贷记卡")
+	private YeepayApiConstant.limitCredit limitCredit;
+
+	@ApiModelProperty(value = "下单接口返回的token如果商户使用先下单再支付模式,请传入下单接口返回的token")
+	private String token;
+
+	/**
+	 * 易宝订单号
+	 * 如果商户使用先下单再支付模式,请传入下单接口返回的易宝订单号
+	 * 同时传入易宝订单号和token,将以易宝订单号为准
+	 */
+	@ApiModelProperty(value = "易宝订单号")
+	private String uniqueOrderNo;
+
+	@ApiModelProperty(value = "清算成功服务器回调地址,不传则不通知")
+	private String csUrl;
+
+	@ApiModelProperty(value = "ApplePay支付密码,免密情况下可不填,对应paymentToken解密后的encryptedPINData")
+	private String encryptedPINData;
+
+	@ApiModelProperty(value = "卡号,ApplePay对应paymentToken解密后的emvData")
+	private String payerAccountNo;
+
+	/**
+	 * 合作银行信息:
+	 * JSON字符串;已获批开通账户通的平台商可传入此字段,否则请勿传值
+	 * accountProvider:合作银行
+	 * token:商户与银行约定令牌
+	 */
+	@ApiModelProperty(value = "合作银行信息")
+	private AccountLinkInfo accountLinkInfo;
+
+}
+
+@Data
+@Builder
+@ApiModel("商家终端场景信息")
+@NoArgsConstructor
+@AllArgsConstructor
+class TerminalSceneInfo {
+
+	@ApiModelProperty(value = "门店id")
+	private String storeId;
+
+	@ApiModelProperty(value = "门店名称")
+	private String storeName;
+
+	@ApiModelProperty(value = "商户操作员编号")
+	private String operatorId;
+
+	@ApiModelProperty(value = "支付宝的店铺编号")
+	private String alipayStoreId;
+
+	@ApiModelProperty(value = "门店行政区划码")
+	private String areaCode;
+
+	@ApiModelProperty(value = "门店详细地址")
+	private String address;
+}
+
+@Data
+@Builder
+@ApiModel("渠道指定支付信息。支持花呗分期")
+@NoArgsConstructor
+@AllArgsConstructor
+class ChannelSpecifiedInfo {
+
+	@ApiModelProperty(value = "花呗分期数量")
+	private Integer hbFqNum;
+
+	@ApiModelProperty(value = "花呗分期卖家百分比")
+	private Integer hbFqSellerPercent;
+
+	@ApiModelProperty(value = "")
+	private String sysServiceProviderId;
+}
+
+@Data
+@Builder
+@ApiModel("限制付款人信息")
+@NoArgsConstructor
+@AllArgsConstructor
+class IdentityInfo {
+
+	@ApiModelProperty("身份验证类型")
+	private String identityVerifyType;
+
+	@ApiModelProperty("付款人类型")
+	private String payerIdType;
+
+	@ApiModelProperty("付款人数量")
+	private String payerNumber;
+
+	@ApiModelProperty("付款人名")
+	private String payerName;
+
+	@ApiModelProperty("付款人手机")
+	private String payerPhone;
+}
+
+@Data
+@Builder
+@ApiModel("合作银行信息")
+@NoArgsConstructor
+@AllArgsConstructor
+class AccountLinkInfo{
+
+	@ApiModelProperty("合作银行")
+	private String accountProvider;
+
+	@ApiModelProperty("商户与银行约定令牌")
+	private String token;
+}

+ 40 - 0
src/main/java/org/springblade/yeePay/entity/saas/AuthStateQueryDto.java

@@ -0,0 +1,40 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("商户授权状态查询接口入参")
+public class AuthStateQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝商户编号",required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "报备商户编号")
+	private String reportMerchantNo;
+
+	/**
+	 * enum reportFeeType
+	 * GONGYI 微信公益
+	 * GONGJIAO 微信公缴
+	 * XIANXIA 微信线下
+	 * BAOXIAN 微信保险
+	 * XIANSHANG 微信线上
+	 * OLDLVZHOU 微信老绿洲
+	 * LVZHOU 微信绿洲
+	 * XIAOYUAN 微信校园
+	 */
+	@ApiModelProperty(value = "易宝商户编号")
+	private YeepayApiConstant.reportFeeType feeType;
+}

+ 266 - 0
src/main/java/org/springblade/yeePay/entity/saas/InvitationDto.java

@@ -0,0 +1,266 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayProduct;
+import org.springblade.yeePay.entity.MerchantInfo;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author: lianghanqiang
+ * @description: 入网申请Dto
+ * @since: 9/6/21 -- 10:57 AM
+ */
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("入网申请Dto")
+public class InvitationDto extends MerchantInfo {
+
+	@ApiModelProperty(value = "入网请求号",required = true)
+	private String requestNo;
+
+	@ApiModelProperty(value = "入网商户的业务角色",required = true)
+	private String businessRole;
+
+	@ApiModelProperty(value = "商户主体信息",required = true)
+	private MerchantSubjectInfo merchantSubjectInfo;
+
+	@ApiModelProperty(value = "商户法人信息",required = true)
+	private MerchantCorporationInfo merchantCorporationInfo;
+
+	@ApiModelProperty(value = "商户联系人信息",required = true)
+	private MerchantContactInfo merchantContactInfo;
+
+	@ApiModelProperty(value = "经营地址",required = true)
+	private BusinessAddressInfo businessAddressInfo;
+
+	@ApiModelProperty(value = "结算账户信息",required = false)
+	private SettlementAccountInfo settlementAccountInfo;
+
+	@ApiModelProperty(value = "开通产品信息",required = true)
+	private List<ProductInfo> productInfo;
+
+	@ApiModelProperty(value = "产品资质信息",required = false)
+	private ProductQualificationInfo productQualificationInfo;
+
+	/**
+	 * 1、用于接收电子签章地址,完成协议签署;
+	 * 		2、用于接收审核已驳回状态下的原因;
+	 * 		3、用于接收入网完成的通知。
+	 * */
+	@ApiModelProperty(value = "回调地址",required = true)
+	private String notifyUrl;
+
+
+	/**
+	 * @author: lianghanqiang
+	 * @description: 商户主体信息
+	 * @since: 9/6/21 -- 1:48 PM
+	 */
+	@Data
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@ApiModel("商户主体信息")
+	public class MerchantSubjectInfo {
+
+		@NotBlank
+		@ApiModelProperty(value = "商户签约类型",required = true)
+		private String signType;
+
+		@NotBlank
+		@ApiModelProperty(value = "商户证件编号",required = true)
+		private String licenceNo;
+
+		@NotBlank
+		@ApiModelProperty(value = "商户证件照片",required = true)
+		private String licenceUrl;
+
+		@NotBlank
+		@ApiModelProperty(value = "商户签约名称",required = true)
+		private String signName;
+
+		@NotBlank
+		@ApiModelProperty(value = "商户简称",required = true)
+		private String shortName;
+
+		@NotBlank
+		@ApiModelProperty(value = "开户许可证编号",required = true)
+		private String openAccountLicenceNo;
+
+		@NotBlank
+		@ApiModelProperty(value = "开户许可证照片",required = true)
+		private String openAccountLicenceUrl;
+
+		@NotBlank
+		@ApiModelProperty(value = "手持营业执照在经营场所的照片",required = true)
+		private String handLicenceUrl;
+	}
+
+
+	/**
+	 * @author: lianghanqiang
+	 * @description: 商户法人信息
+	 * @since: 9/6/21 -- 1:59 PM
+	 */
+	@Data
+	@ApiModel("商户法人信息")
+	@NoArgsConstructor
+	@AllArgsConstructor
+	public class MerchantCorporationInfo {
+
+		@ApiModelProperty(value = "法人姓名",required = true)
+		private String legalName;
+
+		@ApiModelProperty(value = "法人证件类型",required = true)
+		private String legalLicenceType;
+
+		@ApiModelProperty(value = "法人证件号码",required = true)
+		private String legalLicenceNo;
+
+		@ApiModelProperty(value = "法人身份证件正面照片",required = true)
+		private String legalLicenceFrontUrl;
+
+		@ApiModelProperty(value = "法人身份证件反面照片",required = true)
+		private String legalLicenceBackUrl;
+	}
+
+
+	/**
+	 * @author: lianghanqiang
+	 * @description: 商户联系人信息
+	 * @since: 9/6/21 -- 2:05 PM
+	 */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("商户联系人信息")
+	public class MerchantContactInfo {
+
+		@ApiModelProperty(value = "商户联系人姓名",required = true)
+		private String contactName;
+
+		@ApiModelProperty(value = "商户联系人证件号码",required = true)
+		private String contactLicenceNo;
+
+		@ApiModelProperty(value = "商户联系人手机号",required = true)
+		private String contactMobile;
+
+		@ApiModelProperty(value = "商户联系人邮箱",required = true)
+		private String contactEmail;
+
+		@ApiModelProperty(value = "客服电话",required = false)
+		private String servicePhone;
+	}
+
+
+	/**
+	 * 	经营地址
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("经营地址")
+	public class BusinessAddressInfo{
+
+		@ApiModelProperty(value = "商户实际经营地所在省",required = true)
+		private String province;
+
+		@ApiModelProperty(value = "商户实际经营地所在市",required = true)
+		private String city;
+
+		@ApiModelProperty(value = "商户实际经营地所在区",required = true)
+		private String district;
+
+		@ApiModelProperty(value = "商户实际经营详细地址",required = true)
+		private String address;
+	}
+
+
+	/**
+	 * 	开通产品信息
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("开通产品信息")
+	public static class ProductInfo{
+
+		@ApiModelProperty(value = "产品码",required = true)
+		private YeepayProduct productCode;
+
+		@ApiModelProperty(value = "计费策略",required = true)
+		private String rateType;
+
+		@ApiModelProperty(value = "单笔百分比",required = false)
+		private String percentRate;
+
+		@ApiModelProperty(value = "单笔固定值",required = false)
+		private String fixedRate;
+
+		@ApiModelProperty(value = "手续费承担方",required = false)
+		private String undertaker;
+
+		@ApiModelProperty(value = "手续费收取方式",required = false)
+		private String paymentMethod;
+
+		private String productName;
+
+	}
+
+	/**
+	 * 	结算账户信息
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("结算账户信息")
+	public class SettlementAccountInfo{
+
+		@ApiModelProperty(value = "结算方向",required = false)
+		private String settlementDirection;
+
+		@ApiModelProperty(value = "银行账户类型",required = false)
+		private String bankAccountType;
+
+		@ApiModelProperty(value = "银行账户号码",required = false)
+		private String bankCardNo;
+
+		@ApiModelProperty(value = "银行账户开户总行编码",required = false)
+		private String bankCode;
+
+	}
+
+	/**
+	 * 	产品资质信息
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("产品资质信息")
+	public class ProductQualificationInfo{
+
+		@ApiModelProperty(value = "MCC码",required = false)
+		private String mcc;
+
+		@ApiModelProperty(value = "付款场景",required = false)
+		private String paymentScene;
+
+		@ApiModelProperty(value = "付款业务协议图片/附件",required = false)
+		private String agreementPhotoUrl;
+
+		@ApiModelProperty(value = "付款业务系统截图/附件",required = false)
+		private String systemScreenshotUrl;
+
+		@ApiModelProperty(value = "特批开通流程/截图",required = false)
+		private String specialPermitProcessUrl;
+
+	}
+}

+ 177 - 0
src/main/java/org/springblade/yeePay/entity/saas/MicroInvitationDto.java

@@ -0,0 +1,177 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.entity.MerchantInfo;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author: lianghanqiang
+ * @description: 特约商户入网(小微)
+ * @since: 9/30/21 -- 1:58 PM
+ */
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("特约商户入网(小微)")
+public class MicroInvitationDto extends MerchantInfo {
+	@ApiModelProperty(value = "入网请求号",required = true)
+	private String requestNo;
+
+	@ApiModelProperty(value = "入网商户的业务角色",required = true)
+	private String businessRole;
+
+	@ApiModelProperty(value = "商户主体信息",required = true)
+	private MerchantSubjectInfo merchantSubjectInfo;
+
+	@ApiModelProperty(value = "商户法人信息",required = true)
+	private MerchantCorporationInfo merchantCorporationInfo;
+
+	@ApiModelProperty(value = "经营地址",required = true)
+	private BusinessAddressInfo businessAddressInfo;
+
+	@ApiModelProperty(value = "结算账户信息",required = false)
+	private SettlementAccountInfo accountInfo;
+
+	@ApiModelProperty(value = "开通产品信息",required = true)
+	private List<InvitationDto.ProductInfo> productInfo;
+
+	@ApiModelProperty(value = "产品资质信息",required = false)
+	private ProductQualificationInfo productQualificationInfo;
+
+	/**
+	 * 1、用于接收电子签章地址,完成协议签署;
+	 * 		2、用于接收审核已驳回状态下的原因;
+	 * 		3、用于接收入网完成的通知。
+	 * */
+	@ApiModelProperty(value = "回调地址",required = true)
+	private String notifyUrl;
+
+
+	/**
+	 * @author: lianghanqiang
+	 * @description: 商户主体信息
+	 * @since: 9/6/21 -- 1:48 PM
+	 */
+	@Data
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@ApiModel("商户主体信息")
+	public class MerchantSubjectInfo {
+
+		@NotBlank
+		@ApiModelProperty(value = "商户签约名称",required = true)
+		private String signName;
+
+		@NotBlank
+		@ApiModelProperty(value = "商户简称",required = true)
+		private String shortName;
+
+	}
+
+
+	/**
+	 * @author: lianghanqiang
+	 * @description: 商户法人信息
+	 * @since: 9/6/21 -- 1:59 PM
+	 */
+	@Data
+	@ApiModel("商户法人信息")
+	@NoArgsConstructor
+	@AllArgsConstructor
+	public class MerchantCorporationInfo {
+
+		@ApiModelProperty(value = "法人手机号",required = true)
+		private String mobile;
+
+		@ApiModelProperty(value = "法人证件类型",required = true)
+		private String legalLicenceType;
+
+		@ApiModelProperty(value = "法人证件号码",required = true)
+		private String legalLicenceNo;
+
+		@ApiModelProperty(value = "法人身份证件正面照片",required = true)
+		private String legalLicenceFrontUrl;
+
+		@ApiModelProperty(value = "法人身份证件反面照片",required = true)
+		private String legalLicenceBackUrl;
+	}
+
+
+	/**
+	 * 	经营地址
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("经营地址")
+	public class BusinessAddressInfo{
+
+		@ApiModelProperty(value = "商户实际经营地所在省",required = true)
+		private String province;
+
+		@ApiModelProperty(value = "商户实际经营地所在市",required = true)
+		private String city;
+
+		@ApiModelProperty(value = "商户实际经营地所在区",required = true)
+		private String district;
+
+		@ApiModelProperty(value = "商户实际经营详细地址",required = true)
+		private String address;
+	}
+
+	/**
+	 * 	结算账户信息
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("结算账户信息")
+	public class SettlementAccountInfo{
+
+		@ApiModelProperty(value = "银行账户类型",required = false)
+		private String bankAccountType;
+
+		@ApiModelProperty(value = "银行账户号码",required = false)
+		private String bankCardNo;
+
+		@ApiModelProperty(value = "银行账户开户总行编码",required = false)
+		private String bankCode;
+
+		@ApiModelProperty(value = "结算方向",required = false)
+		private String settlementDirection;
+	}
+
+	/**
+	 * 	产品资质信息
+	 * */
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Data
+	@ApiModel("产品资质信息")
+	public class ProductQualificationInfo{
+
+		@ApiModelProperty(value = "MCC码",required = false)
+		private String mcc;
+
+		@ApiModelProperty(value = "付款场景",required = false)
+		private String paymentScene;
+
+		@ApiModelProperty(value = "付款业务协议图片/附件",required = false)
+		private String agreementPhotoUrl;
+
+		@ApiModelProperty(value = "付款业务系统截图/附件",required = false)
+		private String systemScreenshotUrl;
+
+		@ApiModelProperty(value = "特批开通流程/截图",required = false)
+		private String specialPermitProcessUrl;
+
+	}
+}

+ 62 - 0
src/main/java/org/springblade/yeePay/entity/saas/PayLinkOrderDto.java

@@ -0,0 +1,62 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springblade.yeePay.entity.MerchantInfo;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("生成聚合订单码入参")
+public class PayLinkOrderDto extends MerchantInfo {
+
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号。可包含字母、数字、下划线;需保证在商户端不重复", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "简单描述订单信息或商品简介", required = true)
+	private String goodsName;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单金额", required = true)
+	private BigDecimal amount;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单过期时间,格式为yyyy-MM-dd HH:mm:ss", required = true)
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String expiredTime;
+
+	/**
+	 * 示例值:https://notify.merchant.com/xxx
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "业务上是必须参数,支付成功服务器回调地址:支付成功通知、超时通知、失败通知", required = true)
+	private String notifyUrl;
+
+	/**
+	 * 场景
+	 * ONLINE:线上
+	 * OFFLINE:线下
+	 * BAOXIAN:保险
+	 */
+	@ApiModelProperty(value = "场景")
+	private String scene;
+
+	@ApiModelProperty(value = "分账标识。不传,默认不分账DELAY_SETTLE:分账合单收款场景中,请在子单域信息subOrderDetail里提供")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+	@ApiModelProperty(value = "商家的公众号id")
+	private String appId;
+}

+ 157 - 0
src/main/java/org/springblade/yeePay/entity/saas/WechatApplyDto.java

@@ -0,0 +1,157 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author: lianghanqiang
+ * @description: 微信实名认证申请单申请
+ * @since: 9/16/21 -- 12:14 PM
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("微信实名认证申请单申请")
+public class WechatApplyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "请求号",required = true)
+	String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号",required = true)
+	String subMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "请填写申请人姓名,2~30个中文字符、英文字符、符号。",required = true)
+	String applicantName;
+
+	/**
+	 *	请填写申请人手机号,
+	 * 1、用于接收微信支付的重要管理信息及日常操作验证码。
+	 * 2、填写11位数字的手机号码。
+	 * */
+	@NotBlank
+	@ApiModelProperty(value = "申请人手机号",required = true)
+	String applicantPhone;
+
+	@NotBlank
+	@ApiModelProperty(value = "申请人身份证号码",required = true)
+	String applicantIdCard;
+
+	/**
+	 *	证书照片,
+	 * 主体类型为企业或个体:上传统一信用代码证照片;
+	 * 主体类型为事业单位或其他组织:上传登记证书照片;
+	 * 小微商户无需填写
+	 * */
+	@ApiModelProperty(value = "证书照片",required = false)
+	String certCopy;
+
+	/**
+	 * 注册地址,
+	 * 主体类型为企业或个体:请填写营业执照的注册地址;
+	 * 主体类型为事业单位或其他组织:请填写登记证书的注册地址。
+	 * 小微商户:填门店地址。
+	 * */
+	@NotBlank
+	@ApiModelProperty(value = "请求注册地址",required = true)
+	String companyAddress;
+
+	/**
+	 * 证书有效期,
+	 * 1、非小微商户必填,注意参照示例中的格式,长期用"forever"表示。
+	 * 2、结束时间需大于开始时间。
+	 * 3、有效期必须大于60天,即结束时间距当前时间需超过60天。
+	 * 4、主体类型为企业或个体,证书为营业执照;主体类型为事业单位或其他组织,证书为登记证书。
+	 * 示例值:[\"1970-01-01\",\"forever\"]
+	 * */
+	@ApiModelProperty(value = "证书有效期",required = false)
+	String licenceValidDate;
+
+	/**
+	 * 单位证明函照片,
+	 * 主体类型为事业单位时必填
+	 * */
+	@ApiModelProperty(value = "单位证明函照片",required = false)
+	String companyProveCopy;
+
+	/**
+	 * 证书有效期,
+	 * 1、非小微商户必填,注意参照示例中的格式,长期用"forever"表示。
+	 * 2、结束时间需大于开始时间。
+	 * 3、有效期必须大于60天,即结束时间距当前时间需超过60天。
+	 * 示例值:[\"1970-01-01\",\"forever\"]
+	 * */
+	@NotBlank
+	@ApiModelProperty(value = "证书有效期",required = true)
+	String identificationValidDate;
+
+	@NotBlank
+	@ApiModelProperty(value = "法人证件正面照片",required = true)
+	String identificationFrontCopy;
+
+	@ApiModelProperty(value = "法人证件反面照片",required = false)
+	String identificationBackCopy;
+
+	/**
+	 *GONGYI:微信公益
+	 * GONGJIAO:微信公缴
+	 * XIANXIA:微信线下
+	 * BAOXIAN: 微信保险
+	 * XIANSHANG:微信线上
+	 * OLDLVZHOU:微信老绿洲
+	 * LVZHOU:微信绿洲
+	 * XIAOYUAN:微信校园
+	 * reportFee与channelId二选一必填
+	 * */
+	@ApiModelProperty(value = "",required = false)
+	String reportFee;
+
+	@ApiModelProperty(value = "渠道编号",required = false)
+	String channelId;
+
+	/**
+	 * IDENTIFICATION_TYPE_IDCARD:身份证(限中国大陆居民)
+	 * IDENTIFICATION_TYPE_OVERSEA_PASSPORT:护照(限境外人士)
+	 * IDENTIFICATION_TYPE_HONGKONG_PASSPORT :中国香港居民-来往内地通行证
+	 * IDENTIFICATION_TYPE_MACAO_PASSPORT:中国澳门居民-来往内地通行证
+	 * IDENTIFICATION_TYPE_TAIWAN_PASSPORT:中国台湾居民-来往大陆通行证
+	 * */
+	@ApiModelProperty(value = "证件类型",required = false)
+	String identificationType;
+
+	/**
+	 *	小微经营类型,
+	 * 小微商户必填
+	 * 枚举值:
+	 * MICRO_TYPE_STORE:门店场所
+	 * MICRO_TYPE_MOBILE:流动经营/便民服务
+	 * MICRO_TYPE_ONLINE:线上商品/服务交易
+	 **/
+	@ApiModelProperty(value = "小微经营类型",required = false)
+	String microBizType;
+
+	@NotBlank
+	@ApiModelProperty(value = "门店名称,小微商户必填",required = false)
+	String storeName;
+
+
+	@ApiModelProperty(value = "门店省市编码,小微商户必填",required = false)
+	String storeAddressCode;
+
+	@NotBlank
+	@ApiModelProperty(value = "门店门头照片,小微商户必填",required = false)
+	String storeHeaderCopy;
+
+	@NotBlank
+	@ApiModelProperty(value = "店内环境照片,小微商户必填",required = false)
+	String storeIndoorCopy;
+}

+ 43 - 0
src/main/java/org/springblade/yeePay/entity/saas/WechatAuthDto.java

@@ -0,0 +1,43 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@ApiModel("撤销微信实名认证申请单入参")
+public class WechatAuthDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "申请单编号",required = true)
+	private String applymentId;
+
+	@ApiModelProperty(value = "请求号")
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号",required = true)
+	private String subMerchantNo;
+
+	/**
+	 * enum reportFeeType
+	 * GONGYI 微信公益
+	 * GONGJIAO 微信公缴
+	 * XIANXIA 微信线下
+	 * BAOXIAN 微信保险
+	 * XIANSHANG 微信线上
+	 * OLDLVZHOU 微信老绿洲
+	 * LVZHOU 微信绿洲
+	 * XIAOYUAN 微信校园
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "报告费",required = true)
+	private YeepayApiConstant.reportFeeType reportFee;
+}

+ 54 - 0
src/main/java/org/springblade/yeePay/entity/saas/WechatConfigAddDto.java

@@ -0,0 +1,54 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("公众号配置接口")
+public class WechatConfigAddDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	String merchantNo;
+
+	@ApiModelProperty(value = "支付授权目录列表")
+	List<String> tradeAuthDirList;
+
+	@ApiModelProperty(value = "支付appId目录列表JSON字符串;")
+	List<AppIdList> appIdList;
+}
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("支付appId目录")
+class AppIdList {
+
+	@ApiModelProperty(value = "支付appId")
+	String appId;
+
+	@ApiModelProperty(value = "支付appSecret")
+	String appSecret;
+
+	@ApiModelProperty(value = "appId类型(OFFICIAL_ACCOUNT:公众号;MINI_PROGRAM:小程序)")
+	YeepayApiConstant.appIdType appIdType;
+
+	@ApiModelProperty(value = "推荐关注appId")
+	String subscribeAppId;
+}

+ 30 - 0
src/main/java/org/springblade/yeePay/entity/saas/WechatConfigQueryDto.java

@@ -0,0 +1,30 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("公众号配置查询")
+public class WechatConfigQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	String merchantNo;
+
+	@ApiModelProperty(value = "appId类型(OFFICIAL_ACCOUNT:公众号;MINI_PROGRAM:小程序)")
+	YeepayApiConstant.appIdType appIdType;
+}

+ 33 - 0
src/main/java/org/springblade/yeePay/entity/saas/WechatViolationChannelDto.java

@@ -0,0 +1,33 @@
+package org.springblade.yeePay.entity.saas;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("微信违规查询接口(服务商/平台商版)入参")
+public class WechatViolationChannelDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "服务商/平台商商编",required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "查询的开始时间",required = true)
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String beginTime;
+
+	@NotBlank
+	@ApiModelProperty(value = "查询的结束时间",required = true)
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String endTime;
+}

+ 142 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayBatchOrderDto.java

@@ -0,0 +1,142 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款-批量下单入参")
+public class AccountPayBatchOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "交易主体商编", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "业务发起方商编", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "批次号,由商户自定义生成,需保证唯一", required = true)
+	private String batchNo;
+
+	/**
+	 * YeepayApiConstant---receiveType
+	 * 可选项如下:
+	 * REAL_TIME:实时
+	 * TWO_HOUR:两小时
+	 * NEXT_DAY:次日
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "到账类型", required = true)
+	private YeepayApiConstant.receiveType receiveType;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单明细", required = true)
+	private List<AccountPayBatchOrderDetail> detailList;
+
+	@ApiModelProperty("商户通知地址,不传则不通知")
+	private String notifyUrl;
+
+	@ApiModelProperty("扩展信息")
+	private ExtInfoDTO extInfoDTO;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("订单明细")
+class AccountPayBatchOrderDetail {
+
+	@NotBlank
+	@ApiModelProperty(value = "请求号,由商户自定义生成,需保证唯一", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方银行账号", required = true)
+	private String receiverAccountNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户名", required = true)
+	private String receiverAccountName;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户行;银行卡所在开户行编号", required = true)
+	private String receiverBankCode;
+
+	@NotBlank
+	@ApiModelProperty(value = "付款金额;单位:元(RMB)", required = true)
+	private String orderAmount;
+
+	@ApiModelProperty(value = "银行附言;展示在收款银行系统中的附言,由数字、字母、汉字组成(能否成功展示依赖银行系统支持)")
+	private String comments;
+
+	/**
+	 * YeepayApiConstant---bankAccountType
+	 * 账户类型
+	 * 可选项如下:
+	 * DEBIT_CARD:借记卡
+	 * CREDIT_CARD:贷记卡
+	 * QUASI_CREDIT_CARD:准贷卡
+	 * PASSBOOK:存折
+	 * UNIT_SETTLE_CARD:单位结算卡
+	 * PUBLIC_CARD:对公卡
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "账户类型", required = true)
+	private YeepayApiConstant.bankAccountType bankAccountType;
+
+	@ApiModelProperty(value = "支行编码;银行卡所在支行编码")
+	private String branchBankCode;
+
+	/**
+	 * YeepayApiConstant---feeSide
+	 * 手续费承担方(若不传默认付款方)
+	 * 可选项如下:
+	 * PAYER:付款方
+	 * PAYEE:收款方
+	 * 示例值:当商户计费方式为预付实扣或后收时,不支持收款方承担; 当平台商或服务商承担时无需指定此手续费承担方;
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "手续费承担方(若不传默认付款方)", required = true)
+	private YeepayApiConstant.feeSide feeChargeSide;
+
+	@ApiModelProperty(value = "备注")
+	private String remark;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("扩展信息")
+class ExtInfoDTO {
+
+	/**
+	 * YeepayApiConstant---terminalType
+	 * 终端类型
+	 * 可选项如下:
+	 * PC:电脑
+	 * PHONE:手机
+	 * PAD:平板
+	 * NFC:可穿戴设备
+	 * DTV:数字电视
+	 * MPOS:条码支付受理终端
+	 * OTHER:其他
+	 */
+	@ApiModelProperty("终端类型")
+	private YeepayApiConstant.terminalType terminalType;
+}

+ 30 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayCancelDto.java

@@ -0,0 +1,30 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款-撤销入参")
+public class AccountPayCancelDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝付款订单号", required = true)
+	private String orderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "撤销原因", required = true)
+	private String cancelReason;
+}

+ 111 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayOrderDto.java

@@ -0,0 +1,111 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款-下单入参")
+public class AccountPayOrderDto {
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号,易宝支付分配的的商户唯一标识", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号,由商户自定义生成", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "付款金额,单位:元(RMB)", required = true)
+	private String orderAmount;
+
+	/**
+	 * YeepayApiConstant---feeSide
+	 * 手续费承担方(若不传默认付款方)
+	 * 可选项如下:
+	 * PAYER:付款方
+	 * PAYEE:收款方
+	 */
+	@ApiModelProperty(value = "手续费承担方(若不传默认付款方);当商户承担且计费方式为预付实扣或后收时,不支持收款方承担;当平台商或服务商承担时无需指定此手续费承担方;")
+	private YeepayApiConstant.feeSide feeChargeSide;
+
+	/**
+	 * YeepayApiConstant---receiveType
+	 * <p>
+	 * 可选项如下:
+	 * REAL_TIME:实时
+	 * TWO_HOUR:两小时到账
+	 * NEXT_DAY:次日到账(无特殊情况资金于次日上午7点左右到收款银行账户中)
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "到账类型", required = true)
+	private YeepayApiConstant.receiveType receiveType;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方银行账号:为了保证出款成功,各农信社卡或账号16位以下的农业银行卡,建议或尽可能填写支行编码;", required = true)
+	private String receiverAccountNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户名", required = true)
+	private String receiverAccountName;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户行;银行卡所在开户行编号", required = true)
+	private String receiverBankCode;
+
+	/**
+	 * YeepayApiConstant---bankAccountType
+	 * 账户类型
+	 * 可选项如下:
+	 * DEBIT_CARD:借记卡
+	 * CREDIT_CARD:贷记卡
+	 * QUASI_CREDIT_CARD:准贷卡
+	 * PASSBOOK:存折
+	 * UNIT_SETTLE_CARD:单位结算卡
+	 * PUBLIC_CARD:对公卡
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "账户类型", required = true)
+	private YeepayApiConstant.bankAccountType bankAccountType;
+
+	@ApiModelProperty(value = "支行编码")
+	private String branchBankCode;
+
+	@ApiModelProperty(value = "银行附言;展示在收款银行系统中的附言,由数字、字母、汉字组成(最终附言内容以银行实际账单为准)")
+	private String comments;
+
+	/**
+	 * YeepayApiConstant---terminalType
+	 * 终端类型
+	 * 可选项如下:
+	 * PC:电脑
+	 * PHONE:手机
+	 * PAD:平板
+	 * NFC:可穿戴设备
+	 * DTV:数字电视
+	 * MPOS:条码支付受理终端
+	 * OTHER:其他
+	 */
+	@ApiModelProperty(value = "终端类型")
+	private YeepayApiConstant.terminalType terminalType;
+
+	@ApiModelProperty(value = "商户通知地址")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "备注")
+	private String remark;
+
+}

+ 29 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AccountPayQueryDto.java

@@ -0,0 +1,29 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款-查询入参")
+public class AccountPayQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@ApiModelProperty(value = "易宝订单号;易宝支付系统生成的付款订单号(与商户请求号两者填其一)")
+	private String orderNo;
+
+	@ApiModelProperty(value = "商户请求号;由商户自定义生成(与易宝付款订单号两者填其一)")
+	private String requestNo;
+
+}

+ 30 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleCancelDto.java

@@ -0,0 +1,30 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("自动提现-规则作废入参")
+public class AutoWithdrawRuleCancelDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。*标准商户收付款方案中此参数与收款商户编号一致;*平台商户收付款方案中此参数为平台商商户编号;*服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。",required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "提现商户编号",required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "规则id",required = true)
+	private String ruleId;
+}

+ 27 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleQueryDto.java

@@ -0,0 +1,27 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("自动提现-规则查询入参")
+public class AutoWithdrawRuleQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。*标准商户收付款方案中此参数与收款商户编号一致;*平台商户收付款方案中此参数为平台商商户编号;*服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。",required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "提现商户编号",required = true)
+	private String merchantNo;
+
+}

+ 64 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/AutoWithdrawRuleSetDto.java

@@ -0,0 +1,64 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("自动提现-规则设置入参")
+public class AutoWithdrawRuleSetDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。*标准商户收付款方案中此参数与收款商户编号一致;*平台商户收付款方案中此参数为平台商商户编号;*服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。",required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "提现商户编号",required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "银行账号:bindId和bankAccountNo至少填写一个")
+	private String bankAccountNo;
+
+	@ApiModelProperty(value = "提现卡id:bindId和bankAccountNo至少填写一个")
+	private String bindId;
+
+	/**
+	 * 到账类型,可选项如下:
+	 * REAL_TIME:实时
+	 * TWO_HOUR:两小时
+	 * NEXT_DAY:隔日
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "到账类型",required = true)
+	private YeepayApiConstant.receiveType receiveType;
+
+	@NotBlank
+	@ApiModelProperty(value = "触发时间 格式: HH:mm  " +
+		"(目前只支持以下时间点\n" +
+		"08:00\n" +
+		"10:00\n" +
+		"12:00\n" +
+		"14:00\n" +
+		"16:00\n" +
+		"18:00\n" +
+		"20:00)",required = true)
+	@DateTimeFormat(pattern = "HH:mm")
+	private String triggerTime;
+
+	@NotBlank
+	@ApiModelProperty(value = "保留金额 自动提现时保留的账户余额",required = true)
+	private String remainAmount;
+
+	@ApiModelProperty(value = "银行附言")
+	private String remark;
+}

+ 51 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/BankRechargeOrderDto.java

@@ -0,0 +1,51 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("充值-银行汇款下单入参")
+public class BankRechargeOrderDto {
+	@NotBlank
+	@ApiModelProperty(value = "充值商户编号,易宝支付分配的的商户唯一标识", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号商户请求号,由商户自定义生成", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "充值金额", required = true)
+	private BigDecimal amount;
+
+	/**
+	 * 充值支付方式
+	 * 可选项如下:
+	 * BANK_TRANSFER:银行汇款
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "充值支付方式", required = true)
+	private YeepayApiConstant.payType payType;
+
+	@ApiModelProperty(value = "商户通知地址,不传则不通知回调内容请参看:充值结果通知")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "备注")
+	private String remark;
+
+}

+ 60 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/OnlineBankRechargeOrderDto.java

@@ -0,0 +1,60 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("充值-网银下单入参")
+public class OnlineBankRechargeOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "充值商户编号,易宝支付分配的的商户唯一标识", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "充值金额", required = true)
+	private BigDecimal amount;
+
+	/**
+	 * 可选项如下:
+	 * B2C:个人网银
+	 * B2B:企业网银
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "充值支付方式", required = true)
+	private YeepayApiConstant.payType payType;
+
+	@NotBlank
+	@ApiModelProperty(value = "银行编码", required = true)
+	private String bankCode;
+
+	@ApiModelProperty(value = "商户通知地址,不传则不通知回调内容请参看:充值结果通知")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "备注")
+	private String remark;
+
+	@ApiModelProperty(value = "支付成功跳转地址")
+	private String returnUrl;
+
+
+}

+ 35 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/RechargeQueryDto.java

@@ -0,0 +1,35 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("充值-查询入参")
+public class RechargeQueryDto {
+	/**
+	 * 发起方商户编号
+	 * (标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "充值商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "充值订单号,充值订单号和商户请求号不能同时为空")
+	private String orderNo;
+
+	@ApiModelProperty(value = "商户请求号,充值订单号和商户请求号不能同时为空")
+	private String requestNo;
+}

+ 98 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/SupplierApplyDto.java

@@ -0,0 +1,98 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款到供应商--申请添加供应商入参")
+public class SupplierApplyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "供应商账户信息", required = true)
+	private SupplierAccountInfo supplierAccountInfo;
+
+	@NotBlank
+	@ApiModelProperty(value = "供应商资质信息,其中文件信息请先通过子商户入网资质上传接口上传。", required = true)
+	private SupplierQualInfo supplierQualInfo;
+
+	@ApiModelProperty("商户通知地址,不传则不通知")
+	private String notifyUrl;
+
+	/**
+	 * YeepayApiConstant---reasonType
+	 * 可选项如下:
+	 * SHFY:商户返佣,
+	 * GYSDK:供应商打款,
+	 * XJDWDK:下级单位打款,
+	 * QT:其他
+	 */
+	@ApiModelProperty("商户通知地址,不传则不通知")
+	private YeepayApiConstant.reasonType reasonType;
+
+	@ApiModelProperty("付款原因;当付款原因类型为其他时,需商户写具体原因")
+	private String reason;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("供应商账户信息")
+class SupplierAccountInfo {
+
+	@NotBlank
+	@ApiModelProperty(value = "供应商名称,个人为法人姓名,企业为商户签约名", required = true)
+	private String supplierName;
+
+	/**
+	 * 可选项如下:
+	 * PERSON:个人
+	 * BUSINESS:企业
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "供应商类型;企业:收款供应商为对公账户请选择企业 个人:收款供应商为个人银行卡请选择个人", required = true)
+	private YeepayApiConstant.supplierType supplierType;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("供应商资质信息")
+class SupplierQualInfo {
+
+	@NotBlank
+	@ApiModelProperty(value = "资质编码;供应商类型=个人时必填(供应商类型=个人时请填身份证号码;供应商类型=企业时请填营业执照号码)", required = true)
+	private String supplierQualLicenceNo;
+
+	/**
+	 * 资质照片地址 供应商类型=个人时必填(供应商类型=个人时请填上传身份证照片;供应商类型=企业时请上传营业执照)
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "资质照片储存url;上传到易宝返回的资质存储地址", required = true)
+	private String supplierQualLicenceUrl;
+
+	@NotBlank
+	@ApiModelProperty(value = "资质文件地址  请上传付款商户与收款供应商授权协议", required = true)
+	private String supplierQualFileUrl;
+}

+ 101 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/SupplierPayOrderDto.java

@@ -0,0 +1,101 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("付款到供应商--下单入参")
+public class SupplierPayOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号;(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "付款金额;单位:元(RMB)", required = true)
+	private String orderAmount;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方银行账号", required = true)
+	private String receiverAccountNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "供应商id", required = true)
+	private String supplierId;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方开户行;银行卡所在开户行编号", required = true)
+	private String receiverBankCode;
+
+	/**
+	 * YeepayApiConstant---bankAccountType
+	 * 可选项如下:
+	 * DEBIT_CARD:借记卡
+	 * CREDIT_CARD:贷记卡
+	 * QUASI_CREDIT_CARD:准贷卡
+	 * PASSBOOK:存折
+	 * UNIT_SETTLE_CARD:单位结算卡
+	 * PUBLIC_CARD:对公卡
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "银行账户类型", required = true)
+	private YeepayApiConstant.bankAccountType bankAccountType;
+
+	@ApiModelProperty(value = "银行附言;展示在收款银行系统中的附言,由数字、字母、汉字组成(能否成功展示依赖银行系统支持)")
+	private String comments;
+
+	/**
+	 * YeepayApiConstant---feeSide
+	 * 可选项如下:
+	 * PAYER:付款方
+	 * PAYEE:收款方
+	 */
+	@ApiModelProperty(value = "手续费承担方")
+	private YeepayApiConstant.feeSide feeChargeSide;
+
+	/**
+	 * YeepayApiConstant---terminalType
+	 * 可选项如下:
+	 * PC:电脑
+	 * PHONE:手机
+	 * PAD:平板
+	 * NFC:可穿戴设备
+	 * DTV:数字电视
+	 * MPOS:条码支付受理终端
+	 * OTHER:其他
+	 */
+	@ApiModelProperty(value = "终端类型")
+	private YeepayApiConstant.terminalType terminalType;
+
+	/**
+	 * YeepayApiConstant---receiveType
+	 * 可选项如下:
+	 * REAL_TIME:实时
+	 * TWO_HOUR:两小时
+	 * NEXT_DAY:隔日
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "到账类型", required = true)
+	private YeepayApiConstant.receiveType receiveType;
+
+	@ApiModelProperty(value = "商户通知地址,不传则不通知")
+	private String notifyUrl;
+}

+ 29 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/TransferB2bQueryDto.java

@@ -0,0 +1,29 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("转账-查询入参")
+public class TransferB2bQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@ApiModelProperty(value = "商户请求号,商户请求号,由商户自定义生成(与易宝转账订单号两者填其一)")
+	private String requestNo;
+
+	@ApiModelProperty(value = "易宝转账订单号,易宝支付系统生成的转账订单号(与商户请求号两者填其一)")
+	private String orderNo;
+
+}

+ 51 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/TransferOrderDto.java

@@ -0,0 +1,51 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springblade.yeePay.entity.MerchantInfo;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("转账-下单入参")
+public class TransferOrderDto extends MerchantInfo {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号,商户请求号,由商户自定义生成",required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "转出方商户编,易宝支付分配的的商户唯一标识",required = true)
+	private String fromMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "转入方商户编号,易宝支付分配的的商户唯一标识",required = true)
+	private String toMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "转账金额,单位:元(RMB),精确到分",required = true)
+	private String orderAmount;
+
+	@NotBlank
+	@ApiModelProperty(value = "用途",required = true)
+	private String usage;
+
+	/**
+	 * 可选项如下:
+	 * OUTSIDE:转出方承担,
+	 * INSIDE:转入方承担(若不传默认转出方承担)
+	 */
+	@ApiModelProperty(value = "手续费承担方:当商户承担且计费方式为预付实扣或后收时,不支持转入方承担;当平台商或服务商承担时无需指定此手续费承担方")
+	private YeepayApiConstant.feeChargeSide feeChargeSide;
+
+	@ApiModelProperty(value = "转账接收方通知地址")
+	private String notifyUrl;
+}

+ 44 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawCardBindDto.java

@@ -0,0 +1,44 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("提现卡添加入参")
+public class WithdrawCardBindDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号:易宝支付分配的的商户唯一标识",required = true)
+	private String merchantNo;
+
+	/**
+	 * YeepayApiConstant---bankAccountType
+	 * 银行卡类型
+	 * 可选项如下:
+	 * DEBIT_CARD:借记卡
+	 * ENTERPRISE_ACCOUNT:对公账号
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "银行卡类型",required = true)
+	private YeepayApiConstant.bankAccountType bankCardType;
+
+	@NotBlank
+	@ApiModelProperty(value = "银行账号:为了保证出款成功,各农信社卡或账号16位以下的农业银行卡,建议或尽可能填写支行编码;",required = true)
+	private String accountNo;
+
+	@ApiModelProperty(value = "开户银行编码:当bankCardType为ENTERPRISE_ACCOUNT时必填;")
+	private String bankCode;
+
+	@ApiModelProperty(value = "银行支行编码")
+	private String branchCode;
+}

+ 44 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawCardModifyDto.java

@@ -0,0 +1,44 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("提现卡-修改/注销入参")
+public class WithdrawCardModifyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号",required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "银行账号:银行卡号和提现卡标识二选一必填")
+	private String accountNo;
+
+	@ApiModelProperty(value = "提现卡标识:银行卡号和提现卡标识二选一必填")
+	private String bindId;
+
+	/**
+	 * 可选项如下:
+	 * MODIFY:修改
+	 * CANCELLED:注销
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "银行卡操作类型",required = true)
+	private YeepayApiConstant.bankCardOperateType bankCardOperateType;
+
+	@ApiModelProperty(value = "开户银行编码:当操作类型为修改时,可填写此参数,开户行编码和开户支行编码不能同时为空;")
+	private String bankCode;
+
+	@ApiModelProperty(value = "开户支行编码:当操作类型为修改时,可填写此参数开户行编码和开户支行编码不能同时为空")
+	private String branchCode;
+}

+ 73 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawOrderDto.java

@@ -0,0 +1,73 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("提现-下单入参")
+public class WithdrawOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号,由商户自定义生成", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号,易宝支付分配的的商户唯一标识", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "提现卡ID,添加提现账户时易宝生成的提现卡ID,与提现卡卡号至少填写一个")
+	private String bankCardId;
+
+	@ApiModelProperty(value = "提现账号,与提现卡ID至少填写一个")
+	private String bankAccountNo;
+
+	/**
+	 * 到账类型
+	 * 可选项如下:
+	 * REAL_TIME:实时
+	 * TWO_HOUR:2小时到账
+	 * NEXT_DAY:次日到账(无特殊情况资金于次日上午7点左右到提现银行账户中)
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "到账类型", required = true)
+	private YeepayApiConstant.receiveType receiveType;
+
+	@NotBlank
+	@ApiModelProperty(value = "提现金额,单位:元(RMB)", required = true)
+	private String orderAmount;
+
+	@ApiModelProperty(value = "商户通知地址,不传则不通知")
+	private String notifyUrl;
+
+	@ApiModelProperty("银行附言,展示在收款银行系统中的附言,由数字、字母、汉字组成(最终附言内容以银行实际账单为准)。")
+	private String remark;
+
+	/**
+	 * 终端类型
+	 * 可选项如下:
+	 * PC:电脑
+	 * PHONE:手机
+	 * PAD:平板
+	 * NFC:可穿戴设备
+	 * DTV:数字电视
+	 * MPOS:条码支付受理终端
+	 * OTHER:其他
+	 */
+	@ApiModelProperty("终端类型")
+	private YeepayApiConstant.terminalType terminalType;
+
+}

+ 28 - 0
src/main/java/org/springblade/yeePay/entity/saas/account/WithdrawQueryDto.java

@@ -0,0 +1,28 @@
+package org.springblade.yeePay.entity.saas.account;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("提现-查询入参")
+public class WithdrawQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@ApiModelProperty(value = "商户请求号,商户请求号,由商户自定义生成(与易宝转账订单号两者填其一)")
+	private String requestNo;
+
+	@ApiModelProperty(value = "易宝转账订单号,易宝支付系统生成的转账订单号(与商户请求号两者填其一)")
+	private String orderNo;
+}

+ 31 - 0
src/main/java/org/springblade/yeePay/entity/saas/changeservice/MerchantDisposeQueryDto.java

@@ -0,0 +1,31 @@
+package org.springblade.yeePay.entity.saas.changeservice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author July
+ * @version 1.0.0
+ * @ClassName MerchantDisposeQueryDto.java
+ * @Description TODO
+ * @createTime 2021年09月30日 11:50:00
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("沉默商户解冻申请进度查询入参")
+public class MerchantDisposeQueryDto {
+
+	@ApiModelProperty(value = "请求号与工单号二选一必填")
+	private String requestNo;
+
+	@ApiModelProperty(value = "请求号与工单号二选一必填")
+	private String applicationNo;
+
+
+}

+ 37 - 0
src/main/java/org/springblade/yeePay/entity/saas/changeservice/MerchantDisposeUnfreezeDto.java

@@ -0,0 +1,37 @@
+package org.springblade.yeePay.entity.saas.changeservice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author July
+ * @version 1.0.0
+ * @ClassName MerchantDisposeUnfreezeDto.java
+ * @Description 沉默商户解冻申请DTO
+ * @createTime 2021年09月30日 11:32:00
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("沉默商户解冻申请入参")
+public class MerchantDisposeUnfreezeDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "每次请求更换不同的请求号", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "需要解冻的商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "用于接收解冻结果以及失败的原因")
+	private String notifyUrl;
+
+}

+ 86 - 0
src/main/java/org/springblade/yeePay/entity/saas/changeservice/ProductFeeModifyDto.java

@@ -0,0 +1,86 @@
+package org.springblade.yeePay.entity.saas.changeservice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @author July
+ * @version 1.0.0
+ * @ClassName ProductFeeModifyDto.java
+ * @Description 商户产品费率变更DTO
+ * @createTime 2021年09月30日 11:04:00
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("商户产品费率变更入参")
+public class ProductFeeModifyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "请求号", required = true)
+	private String requestNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "如果为平台商拓展商户(入驻商户),此为平台商商户编号;如为saas服务商拓展商户(平台商/标准商户),此为saas服务商商户编号。", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "需要变更产品的商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "1、用于接收电子签章地址,完成协议签署;2、用于接收变更完成的通知。", required = true)
+	private String notifyUrl;
+
+	@NotBlank
+	@ApiModelProperty(value = "变更产品信息", required = true)
+	private List<ModifyProductInfo> productInfo;
+
+	@NoArgsConstructor
+	@AllArgsConstructor
+	@Getter
+	@Setter
+	@ApiModel("商户产品费率变更入参")
+	public static class ModifyProductInfo {
+
+		@NotBlank
+		@ApiModelProperty(value = "产品码", required = true)
+		private String productCode;
+
+		@NotBlank
+		@ApiModelProperty(value = "计费策略", required = true)
+		private YeepayApiConstant.rateType rateType;
+
+		/**
+		 * 计费策略为SINGLE_PERCENT、FIXED_MIX_PERCENT、PERCENT_MIX_CAP时,必填。
+		 * 1、该字段单位:%;如0.5%,上传0.5即可。
+		 * 2、规则:0<=rate<=100,整数位最多3位,小数位最多保留2位。
+		 */
+		@NotBlank
+		@ApiModelProperty(value = "单笔百分比(计费策略为SINGLE_PERCENT、FIXED_MIX_PERCENT、PERCENT_MIX_CAP时,必填。\n" +
+			"1、该字段单位:%;如0.5%,上传0.5即可。\n" +
+			"2、规则:0<=rate<=100,整数位最多3位,小数位最多保留2位。)", required = true)
+		private String percentRate;
+
+		@NotBlank
+		@ApiModelProperty(value = "单笔固定值(计费策略为SINGLE_FIXED、FIXED_MIX_PERCENT、PERCENT_MIX_CAP时,必填。\n" +
+			"1、单位:元/笔;如5元/笔,上传5即可。\n" +
+			"2、规则:0<=rate,整数位最多6位,小数位最多保留2位)", required = true)
+		private String fixedRate;
+
+		@NotBlank
+		@ApiModelProperty(value = "手续费承担方", required = true)
+		private YeepayApiConstant.undertaker undertaker;
+
+		@NotBlank
+		@ApiModelProperty(value = "手续费收取方式", required = true)
+		private YeepayApiConstant.paymentMethod paymentMethod;
+
+	}
+}

+ 37 - 0
src/main/java/org/springblade/yeePay/entity/saas/changeservice/ProductFeeQueryDto.java

@@ -0,0 +1,37 @@
+package org.springblade.yeePay.entity.saas.changeservice;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author July
+ * @version 1.0.0
+ * @ClassName ProductFeeQueryDto.java
+ * @Description 商户产品费率查询DTO
+ * @createTime 2021年09月30日 11:28:00
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("商户产品费率查询入参")
+public class ProductFeeQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "如果为平台商拓展商户(入驻商户),此为平台商商户编号;如为saas服务商拓展商户(平台商/标准商户),此为saas服务商商户编号。", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "需要变更产品的商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "产品码")
+	private String productCode;
+
+}

+ 24 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/BillDivideDayDownloadDto.java

@@ -0,0 +1,24 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("分账日对账下载入参")
+public class BillDivideDayDownloadDto {
+
+	@ApiModelProperty(value = "子商户编号")
+	private String merchantNo;
+
+	@ApiModelProperty(value = "日期")
+	@DateTimeFormat(pattern = "YYYY-MM-dd")
+	private String dayString;
+}

+ 28 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/BillDownloadDto.java

@@ -0,0 +1,28 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("账户对账单-下载入参")
+public class BillDownloadDto {
+
+	@ApiModelProperty(value = "账单日期,不填默认昨日")
+	@DateTimeFormat(pattern = "YYYY-MM-dd")
+	private String billDate;
+
+	@NotBlank
+	@ApiModelProperty(value = "账单类型", required = true)
+	private YeepayApiConstant.bizType bizType;
+}

+ 27 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/BillTradeDayDownloadDto.java

@@ -0,0 +1,27 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("交易日对账下载入参")
+public class BillTradeDayDownloadDto {
+
+	@ApiModelProperty(value = "商户编号")
+	private String merchantNo;
+
+	@ApiModelProperty(value = "日期")
+	@DateTimeFormat(pattern = "YYYY-MM-dd")
+	private String dayString;
+
+	@ApiModelProperty(value = "商户编号")
+	private String dataType;
+}

+ 40 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/FundBillApplyDto.java

@@ -0,0 +1,40 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("资金账单申请入参")
+public class FundBillApplyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "开始日期", required = true)
+	@DateTimeFormat(pattern = "YYYY-MM-dd")
+	private String startDate;
+
+	@NotBlank
+	@ApiModelProperty(value = "结束日期;与startDate最大日期间隔为31天", required = true)
+	@DateTimeFormat(pattern = "YYYY-MM-dd")
+	private String endDate;
+
+	@NotBlank
+	@ApiModelProperty(value = "请求方商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "账户类型")
+	private YeepayApiConstant.accountType accountType;
+
+	@ApiModelProperty(value = "接收资金账单生成结果的通知地址(最长200个字符),资金账单生成结果通知")
+	private String notifyUrl;
+}

+ 26 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/FundBillDownloadDto.java

@@ -0,0 +1,26 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("资金账单下载入参")
+public class FundBillDownloadDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "请求方商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "文件id", required = true)
+	private String fileId;
+}

+ 37 - 0
src/main/java/org/springblade/yeePay/entity/saas/receipt/ReceiptGetDto.java

@@ -0,0 +1,37 @@
+package org.springblade.yeePay.entity.saas.receipt;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("电子回单-下载入参")
+public class ReceiptGetDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝订单号", required = true)
+	private String orderNo;
+
+	/**
+	 * 可选项如下:
+	 * TRANSFER:企业账户转账
+	 * PAY:企业付款
+	 * RECHARGE:企业账户充值
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "交易类型", required = true)
+	private YeepayApiConstant.tradeType tradeType;
+}

+ 40 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleBalanceQueryDto.java

@@ -0,0 +1,40 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.entity.MerchantInfo;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author: lianghanqiang
+ * @description: 待结算账户查询
+ * @since: 9/16/21 -- 11:55 AM
+ */
+@Data
+@Builder
+@ApiModel
+@AllArgsConstructor
+@NoArgsConstructor
+public class SettleBalanceQueryDto extends MerchantInfo {
+
+
+	/**
+	 *	查询时间范围。
+	 * PERIOD:指定时间范围,按照传入的统计截止时间查询未结算可结算金额
+	 * ALL:查询当前全部
+	 * */
+	@NotBlank
+	@ApiModelProperty(value = "查询时间范围",required = true)
+	String operatePeriod;
+
+	/**
+	 * 统计截止时间。当查询范围按PERIOD时,需要必填此参数。
+	 * */
+	@ApiModelProperty(value = "统计截止时间",required = false)
+	String endTime;
+}

+ 57 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleCardAddDto.java

@@ -0,0 +1,57 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("新增结算卡入参")
+public class SettleCardAddDto {
+
+	/**
+	 * *标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "银行卡号", required = true)
+	private String bankCardNo;
+
+	/**
+	 * 结算账户类型。
+	 * PUBLIC_CARD:对公卡
+	 * DEBIT_CARD:借记卡
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "结算账户类型", required = true)
+	private YeepayApiConstant.bankAccountType bankCardType;
+
+	@NotBlank
+	@ApiModelProperty(value = "银行编码地址", required = true)
+	private String bankCode;
+
+	/**
+	 * 设置为默认结算卡后,结算资金会结算至该银行账户。
+	 * true:设置为默认结算卡
+	 * false:不设置为默认结算卡
+	 */
+	@ApiModelProperty(value = "是否设置为默认结算卡")
+	private Boolean defaultSettleCard;
+}

+ 57 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleCardModifyDto.java

@@ -0,0 +1,57 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("修改结算卡入参")
+public class SettleCardModifyDto {
+	/**
+	 * *标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "银行卡号", required = true)
+	private String bankCardNo;
+
+	/**
+	 * 结算账户类型。
+	 * PUBLIC_CARD:对公卡
+	 * DEBIT_CARD:借记卡
+	 */
+	@ApiModelProperty(value = "结算账户类型")
+	private YeepayApiConstant.bankAccountType bankCardType;
+
+	@ApiModelProperty(value = "银行编码地址")
+	private String bankCode;
+
+	@ApiModelProperty(value = "联行号")
+	private String brancgCode;
+
+	/**
+	 * 设置为默认结算卡后,结算资金会结算至该银行账户。
+	 * true:设置为默认结算卡
+	 * false:不设置为默认结算卡
+	 */
+	@ApiModelProperty(value = "是否设置为默认结算卡")
+	private Boolean defaultSettleCard;
+}

+ 32 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleFileGetDto.java

@@ -0,0 +1,32 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("结算对账文件获取接口入参")
+public class SettleFileGetDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户商编", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "商户发起自助结算时的请求号,当结算日期为空时,此参数必填")
+	private String settleRequestNo;
+
+	@ApiModelProperty(value = "需要获取的结算文件对应的结算日期,当结算订单号为空时,此参数必填")
+	private String settleDate;
+}

+ 38 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleRecordsQueryDto.java

@@ -0,0 +1,38 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("结算记录查询入参")
+public class SettleRecordsQueryDto {
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户商编", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "结算请求号(结算请求号与结算申请起止时间二选一必填)")
+	private String settleRequestNo;
+
+	@ApiModelProperty(value = "结算申请起始时间(结算申请起止时间与结算请求号二选一必填)")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String settleRequestBeginTime;
+
+	@ApiModelProperty(value = "结算申请截止时间(结算申请起止时间与结算请求号二选一必填)")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private String settleRequestEndTime;
+
+}

+ 50 - 0
src/main/java/org/springblade/yeePay/entity/saas/settlement/SettleSelfSettleApplyDto.java

@@ -0,0 +1,50 @@
+package org.springblade.yeePay.entity.saas.settlement;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("自助结算申请入参")
+public class SettleSelfSettleApplyDto {
+
+	/**
+	 * *标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户商编", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户结算请求号。需保证在商户端不重复", required = true)
+	private String settleRequestNo;
+
+	/**
+	 * PERIOD:按照指定的时间区间结算
+	 * ALL:结算当前全部未结算可结算交易
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "结算时间范围", required = true)
+	private YeepayApiConstant.operatePeriod operatePeriod;
+
+	@ApiModelProperty(value = "结算范围截止时间。如果按PERIOD指定时间区间结算,需要填写此参数。")
+	private String endTime;
+
+	@ApiModelProperty(value = "通知地址,用于通知商户结算结果")
+	private String notifyUrl;
+}

+ 85 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideApplyDto.java

@@ -0,0 +1,85 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@Builder
+@ApiModel("申请分账入参")
+@NoArgsConstructor
+@AllArgsConstructor
+public class DivideApplyDto {
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求收款的交易单号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款交易对应在易宝的收款单号", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账请求号", required = true)
+	private String divideRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "分账明细", required = true)
+	private List<DivideDetail> divideDetail;
+
+	@ApiModelProperty(value = "合作银行信息")
+	private AccountLinkInformation accountLinkInfo;
+
+	@Data
+	@Builder
+	@ApiModel("分账明细")
+	@NoArgsConstructor
+	@AllArgsConstructor
+	public static class DivideDetail {
+		@NotBlank
+		@ApiModelProperty(value = "分账接收方编号(接收分账资金的易宝商编)", required = true)
+		private String ledgerNo;
+
+		@NotBlank
+		@ApiModelProperty(value = "分账金额", required = true)
+		private BigDecimal amount;
+
+		@NotBlank
+		@ApiModelProperty(value = "分账说明", required = true)
+		private String divideDetailDesc;
+	}
+}
+
+@Data
+@Builder
+@ApiModel("合作银行信息")
+@NoArgsConstructor
+@AllArgsConstructor
+class AccountLinkInformation {
+
+	@ApiModelProperty(value = "服务提供者")
+	private String serviceProvider;
+
+	@ApiModelProperty(value = "ip地址")
+	private BigDecimal ipAddress;
+
+	@ApiModelProperty(value = "类型")
+	private String divideType;
+
+	@ApiModelProperty(value = "token")
+	private String token;
+}

+ 63 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideBackDto.java

@@ -0,0 +1,63 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("申请分账资金归还入参")
+public class DivideBackDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商编", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝收款订单号", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账资金归还请求号", required = true)
+	private String divideBackRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "原分账的商户请求号", required = true)
+	private String divideRequestId;
+
+	@ApiModelProperty(value = "分账资金归还明细")
+	private DivideBackDetail divideBackDetail;
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("分账资金归还明细")
+class DivideBackDetail {
+
+	@ApiModelProperty(value = "分账退回金额")
+	private String amount;
+
+	@ApiModelProperty(value = "易宝分账明细单号,分账完成后易宝返回")
+	private String divideDetailNo;
+
+	@ApiModelProperty(value = "退回原因")
+	private String divideBackReason;
+
+}

+ 38 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideBackQueryDto.java

@@ -0,0 +1,38 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("查询分账资金归还结果入参")
+public class DivideBackQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商编", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝收款订单号", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账资金归还请求号", required = true)
+	private String divideBackRequestId;
+}

+ 40 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideCompleteDto.java

@@ -0,0 +1,40 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Builder
+@ApiModel("完结分账入参")
+@NoArgsConstructor
+@AllArgsConstructor
+public class DivideCompleteDto {
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝收款订单号", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账请求号,在商户系统内部唯一(申请分账、完结分账应使用不同的商户分账请求号),同一分账请求号多次请求等同一次", required = true)
+	private String divideRequestId;
+
+	@ApiModelProperty(value = "分账完结的原因描述")
+	private String divideDetailDesc;
+}

+ 38 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideQueryDto.java

@@ -0,0 +1,38 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("查询分账结果入参")
+public class DivideQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商编", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "原支付订单的商户订单号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款交易对应在易宝的单号", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账请求号", required = true)
+	private String divideRequestId;
+}

+ 36 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/DivideReceiptDownloadDto.java

@@ -0,0 +1,36 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("分账回单入参")
+public class DivideReceiptDownloadDto {
+	@NotBlank
+	@ApiModelProperty(value = "分账接收方编号(接收分账资金的易宝商编)", required = true)
+	private String ledgerNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户分账请求号", required = true)
+	private String divideRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "交易发起方商编。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户商编", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "收款交易对应在易宝的收款单号")
+	private String uniqueOrderNo;
+}

+ 75 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAccountPayOrderDto.java

@@ -0,0 +1,75 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("企业账户支付-下单入参")
+public class EnterpriseAccountPayOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "业务发起方商户编号(标准商户收付款方案中此参数与商编一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号收单主体商编", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "付款方商户编号", required = true)
+	private String payerMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单信息", required = true)
+	private OrderInfo orderInfo;
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("订单信息")
+class OrderInfo {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号,需要保持在商户下唯一", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单金额", required = true)
+	private String orderAmount;
+
+	/**
+	 * 分账标识,默认不分账
+	 * 可选项如下:
+	 * DELAY_SETTLE:分账
+	 * REAL_TIME:不分账
+	 */
+	@ApiModelProperty(value = "分账标识")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称", required = true)
+	private String goodsName;
+
+	@ApiModelProperty(value = "订单有效期-截止时间 格式yyyy-MM-DD HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-DD HH:mm:ss")
+	private String expiredTime;
+
+	@ApiModelProperty(value = "回调通知地址")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "自定义对账备注")
+	private String memo;
+}

+ 59 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAutoPaymentOrderDto.java

@@ -0,0 +1,59 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("企业账户支付-自动付款入参")
+public class EnterpriseAutoPaymentOrderDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "收款方商编", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单金额", required = true)
+	private String orderAmount;
+
+	/**
+	 * 分账标识,默认不分账
+	 * 可选项如下:
+	 * DELAY_SETTLE:分账
+	 * REAL_TIME:不分账
+	 */
+	@ApiModelProperty(value = "分账标识")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称", required = true)
+	private String goodsName;
+
+	@ApiModelProperty(value = "订单有效期-截止时间 格式yyyy-MM-DD HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-DD HH:mm:ss")
+	private String expiredTime;
+
+	@ApiModelProperty(value = "收款方回调通知地址")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "收单对账备注")
+	private String memo;
+
+	@ApiModelProperty(value = "付款方回调地址")
+	private String payerNotifyUrl;
+
+}

+ 32 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/EnterpriseAutoPaymentQueryDto.java

@@ -0,0 +1,32 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("企业账户支付-自动付款订单查询入参")
+public class EnterpriseAutoPaymentQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "收单主体商编", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "商户系统内部生成的订单号;如填写易宝内部订单号则可以不填,否则必填")
+	private String orderId;
+
+	@ApiModelProperty(value = "订单日期;如填写易宝内部订单号则可以不填,否则必填")
+	private String orderDate;
+
+	@ApiModelProperty(value = "易宝内部订单号;如填写此项,订单号及订单日期可以不填。如同时填写将以易宝内部订单号为准")
+	private String uniqueOrderNo;
+
+}

+ 60 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/RefundDto.java

@@ -0,0 +1,60 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("申请退款入参")
+public class RefundDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "收款交易对应的商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户退款请求号", required = true)
+	private String refundRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "收款交易对应的易宝收款订单号")
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "单位:元,两位小数,最低0.01,退款金额不能大于原订单金额,多次退款时,累计退款金额不能超过原订单金额", required = true)
+	private String refundAmount;
+
+	@ApiModelProperty(value = "退款原因")
+	private String description;
+
+	@ApiModelProperty(value = "商户自定义参数,会展示在交易对账单中")
+	private String memo;
+
+	/**
+	 * 不传则默认使用未结算资金退款,如未结算资金不足则使用支付账户余额退款
+	 */
+	@ApiModelProperty(value = "退款资金来源")
+	private YeepayApiConstant.refundAccountType refundAccountType;
+
+	@ApiModelProperty(value = "接收退款结果通知地址,不传则不通知")
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "易宝优惠退款信息")
+	private String ypPromotionRefundInfo;
+}

+ 33 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/RefundEndDto.java

@@ -0,0 +1,33 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("结束退款入参")
+public class RefundEndDto {
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户退款请求号", required = true)
+	private String refundRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+}

+ 81 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/RefundFastDto.java

@@ -0,0 +1,81 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("申请极速退款入参")
+public class RefundFastDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户退款请求号", required = true)
+	private String refundRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "退款金额", required = true)
+	private String refundAmount;
+
+	@NotBlank
+	@ApiModelProperty(value = "退款原因", required = true)
+	private String description;
+
+	/**
+	 * 不传则默认使用未结算资金退款,如未结算资金不足则使用支付账户余额退款
+	 */
+	@ApiModelProperty(value = "退款资金来源")
+	private YeepayApiConstant.refundAccountType refundAccountType;
+
+	@NotBlank
+	@ApiModelProperty(value = "接收退款结果地址", required = true)
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "对账备注")
+	private String memo;
+
+	@NotBlank
+	@ApiModelProperty(value = "上送卡信息", required = true)
+	private CardInfo cardInfo;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("上送卡信息")
+class CardInfo {
+
+	@NotBlank
+	@ApiModelProperty(value = "上送持卡人卡号", required = true)
+	private String remitBankCardNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "上送持卡人姓名", required = true)
+	private String remitCardName;
+
+	@NotBlank
+	@ApiModelProperty(value = "上送卡类型", required = true)
+	private String remitCardType;
+}

+ 37 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/RefundQueryDto.java

@@ -0,0 +1,37 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("查询退款入参")
+public class RefundQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "收款交易对应的商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户退款请求号,可包含字母、数字、下划线;需要保证在商户端不重复。", required = true)
+	private String refundRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@ApiModelProperty(value = "商户退款请求对应在易宝的退款单号")
+	private String uniqueOrderNo;
+}

+ 38 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/RefundSupplyDto.java

@@ -0,0 +1,38 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("上送卡信息退款入参")
+public class RefundSupplyDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户退款请求号", required = true)
+	private String refundRequestId;
+
+	@NotBlank
+	@ApiModelProperty(value = "要退回的银行卡信息", required = true)
+	private CardInfo cardInfo;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+}

+ 34 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderCloseDto.java

@@ -0,0 +1,34 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("关闭订单入参")
+public class TradeOrderCloseDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号。可包含字母、数字、下划线;需保证在商户端不重复。合单收款场景中,此参数为合单收款请求号")
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "易宝收款订单号,合单收款场景中是主单易宝收款订单号。", required = true)
+	private String uniqueOrderNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号标准商户收付款方案中此参数与收款商户编号一致,平台商户收付款方案中此参数为平台商商户编号)", required = true)
+	private String parentMerchantNo;
+
+	@ApiModelProperty(value = "收款商户商编,单笔收款必传;合单收款场景中不用上送。")
+	private String merchantNo;
+
+}

+ 26 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderCombineQueryDto.java

@@ -0,0 +1,26 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("查询合并订单入参")
+public class TradeOrderCombineQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "交易发起方商编,此处为平台商商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "交易下单时传入的合单收款请求号", required = true)
+	private String orderId;
+}

+ 106 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderDto.java

@@ -0,0 +1,106 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springblade.yeePay.common.YeepayApiConstant;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("交易下单入参")
+public class TradeOrderDto {
+
+	/**
+	 * *标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号", required = true)
+	private String parentMerchantNo;
+
+	@ApiModelProperty(value = "收款商户商编;单笔收款必传,合单收款场景中请在子单域信息subOrderDetail里提供")
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号。可包含字母、数字、下划线;需保证在商户端不重复。合单收款场景中,此参数为合单收款请求号", required = true)
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单金额。单位为元,精确到小数点后两位", required = true)
+	private String orderAmount;
+
+	@ApiModelProperty(value = "简单描述订单信息或商品简介。单笔收款必传,合单收款场景中请在子单域信息subOrderDetail里提供")
+	private String goodsName;
+
+	/**
+	 * 分账标识。不传,默认不分账
+	 * DELAY_SETTLE:分账
+	 * 合单收款场景中,请在子单域信息subOrderDetail里提供
+	 */
+	@ApiModelProperty(value = "分账标识")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+	@NotBlank
+	@ApiModelProperty(value = "接收支付结果的通知地址", required = true)
+	private String notifyUrl;
+
+	@ApiModelProperty(value = "对账备注。商户自定义参数,会展示在交易对账单中")
+	private String memo;
+
+	@ApiModelProperty(value = "子单域信息。合单收款场景中,请在此域传入子单信息,支持传入多个子单,实现用户一笔支付多个商户商品最多支持子单条数:99")
+	private SubOrderDetail subOrderDetail;
+
+	@ApiModelProperty(value = "订单过期时间,格式为YYYY-MM-DD HH:mm:ss,为空时默认在请求下单120分钟后失效,最长支持30天")
+	@DateTimeFormat(pattern = "YYYY-MM-DD HH:mm:ss")
+	private String expiredTime;
+
+	@ApiModelProperty(value = "支付成功后跳转的URL,如商户指定页面回调地址, 支付完成后会从易宝的支付成功页跳转至商家指定页面,只有走标准收银台的订单此地址才有作用。注意:最大长度200个字符。")
+	private String redirectUrl;
+
+	@ApiModelProperty(value = "清算成功服务器回调地址,不传则不通知")
+	private String csUrl;
+
+	@ApiModelProperty(value = "自定义参数信息")
+	private String businessInfo;
+
+}
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("子单域信息")
+class SubOrderDetail {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户编号;收款商户编号")
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号;商户系统内部单号,建议使用数字、大小写字母的组合")
+	private String orderId;
+
+	@NotBlank
+	@ApiModelProperty(value = "订单金额;商户收款金额,数字格式最多 2 位小数")
+	private String orderAmount;
+
+	@ApiModelProperty(value = "商品信息")
+	private String goodsName;
+
+	/**
+	 * 不传,默认不分账
+	 * DELAY_SETTLE:分账
+	 */
+	@ApiModelProperty(value = "分账标识")
+	private YeepayApiConstant.fundProcessType fundProcessType;
+
+}

+ 31 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/TradeOrderQueryDto.java

@@ -0,0 +1,31 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Builder
+@ApiModel("查询订单入参")
+@NoArgsConstructor
+@AllArgsConstructor
+public class TradeOrderQueryDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "发起方商户编号。与交易下单传入的保持一致", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户编号", required = true)
+	private String merchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "交易下单传入的商户收款请求号。\n" +
+		"(合单收款场景请传入子单的商户收款请求号)", required = true)
+	private String orderId;
+}

+ 36 - 0
src/main/java/org/springblade/yeePay/entity/saas/trade/TradeReceiptDownloadDto.java

@@ -0,0 +1,36 @@
+package org.springblade.yeePay.entity.saas.trade;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@Builder
+@ApiModel("交易回单入参")
+public class TradeReceiptDownloadDto {
+
+	@NotBlank
+	@ApiModelProperty(value = "商户收款请求号", required = true)
+	private String orderId;
+
+	/**
+	 * *标准商户收付款方案中此参数与收款商户编号一致;
+	 * *平台商户收付款方案中此参数为平台商商户编号;
+	 * *服务商解决方案中,①标准商户收款时,该参数为标准商户商编 ②平台商收款或平台商入驻商户收款时,该参数为平台商商编。
+	 */
+	@NotBlank
+	@ApiModelProperty(value = "商户编号", required = true)
+	private String parentMerchantNo;
+
+	@NotBlank
+	@ApiModelProperty(value = "收款商户商编。单笔收款必传,合单收款场景中上传子单域信息subOrderDetail里的merchantNo", required = true)
+	private String merchantNo;
+
+}

+ 118 - 0
src/main/java/org/springblade/yeePay/service/YeePayService.java

@@ -0,0 +1,118 @@
+package org.springblade.yeePay.service;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.yeepay.yop.sdk.security.DigestAlgEnum;
+import com.yeepay.yop.sdk.service.common.YopClient;
+import com.yeepay.yop.sdk.service.common.YopClientBuilder;
+import com.yeepay.yop.sdk.utils.Sm2Utils;
+import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
+import org.springblade.wx.config.ConfigForClient;
+import org.springblade.yeePay.common.YeePayConst;
+import org.springblade.yeePay.entity.KeyAndValue;
+import org.springblade.yeePay.utils.Sm4GcmUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.security.NoSuchProviderException;
+import java.security.PrivateKey;
+import java.security.cert.CertificateException;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class YeePayService {
+	@Autowired
+	ConfigForClient configForClient;
+	@Autowired
+	YeePayConst yeePayConst;
+
+	YopClient yopClient = YopClientBuilder.builder().build();
+
+	/**
+	 * 	解析解密支付通知数据
+	 * @param response 加密数据
+	 * */
+	public JSONObject deCodeNotifyData(Map<String, Object> response) {
+		log.info("回调数据:"+ JSON.toJSONString(response));
+//		Map<String,String> params = notifyParams(response.get("params").toString());
+
+		try {
+			String decryptData = Sm4GcmUtils.decrypt_GCM_NoPadding(
+				yeePayConst.getSm4Key(),
+				response.get("cipherText")+"",
+				"",
+				""
+			);
+			log.info("通知解密数据:"+ decryptData);
+			return JSON.parseObject(decryptData);
+		} catch (Exception e) {
+			log.error("回调解析错误: "+ e.getMessage());
+		}
+		return null;
+	}
+
+	/**
+	 * 	解析解密支付通知数据
+	 * @param cipherText 加密数据
+	 * */
+	public JSONObject deCodeNotifyData(String cipherText) {
+		try {
+			String decryptData = Sm4GcmUtils.decrypt_GCM_NoPadding(
+				yeePayConst.getSm4Key(),
+				cipherText,
+				"",
+				""
+			);
+//			log.info("通知解密数据:"+ decryptData);
+			return JSON.parseObject(decryptData);
+		} catch (Exception e) {
+			log.error("回调解析错误: "+ e.getMessage());
+		}
+		return null;
+	}
+	/**
+	 * 	解析解密支付通知数据
+	 * @param cipherText 加密数据
+	 * */
+	public <T>T deCodeNotifyData(String cipherText, Class<T> clazz) {
+		log.info("通知数据:"+ cipherText);
+		try {
+			String decryptData = Sm4GcmUtils.decrypt_GCM_NoPadding(
+				yeePayConst.getSm4Key(),
+				cipherText,
+				"",
+				""
+			);
+			log.info("通知解密数据:"+ decryptData);
+			return JSON.parseObject(decryptData, clazz);
+		} catch (Exception e) {
+			log.error("回调解析错误: "+ e.getMessage());
+		}
+		return null;
+	}
+
+
+
+	public static void main(String[] args) throws CertificateException, NoSuchProviderException {
+		YeePayService yeePayService = new YeePayService();
+		System.out.println(yeePayService.deCodeNotifyData("\t\t09unXJPmehVbTMxNxEAf5qA3gWQJwlRW4sZOp4oG2Z2BbwOMJzS9GUkLA5UexRPwLMt2QImN_vikdqgNTKg6cLBeJXdT9unwvpPeCnnt-oYAS0fwaHaBuLE4TvsjJa8YyuzDrDRhWc4PB2unhQDxlc9XhcbXx4rpNaGNQnE240ZSqSgURowTDRHHAqBWsEGRoHRJLQCIp-3XDIAqXU56iv4AI4zvhaJuwDpoWuUaQcypS37D3XiIKLy1kzh9_wJ_ljMZtdn1-BgjnN6wIxwupg6QfyZKwIo2tg"));
+	}
+
+	private	 String sign(List<KeyAndValue> params){
+		StringBuilder stringBuilder = new StringBuilder();
+		params.stream().forEach(item ->
+			stringBuilder.append(item.getKey()+"="+item.getValue()+"&")
+		);
+		String s = stringBuilder.deleteCharAt(stringBuilder.length() - 1).toString();
+		System.out.println(s);
+		String priKey = yeePayConst.getPrivateKey();
+		PrivateKey privateKey1 = Sm2Utils.string2PrivateKey(priKey);
+		String sign = Sm2Utils.sign(s, (BCECPrivateKey) privateKey1)+"$"+ DigestAlgEnum.SM3.getValue();
+		return sign;
+	}
+
+
+}

+ 118 - 0
src/main/java/org/springblade/yeePay/service/YeepayCommonService.java

@@ -0,0 +1,118 @@
+package org.springblade.yeePay.service;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.yeepay.yop.sdk.exception.YopClientException;
+import com.yeepay.yop.sdk.service.common.YopClient;
+import com.yeepay.yop.sdk.service.common.YopClientBuilder;
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+import com.yeepay.yop.sdk.service.common.response.YopResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.api.R;
+import org.springblade.yeePay.api.YeepayCommon;
+import org.springblade.yeePay.common.YeePayConst;
+import org.springblade.yeePay.entity.ConfigAppDto;
+import org.springblade.yeePay.utils.YeepayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝--通用接口服务
+ * @since: 9/6/21 -- 10:57 AM
+ */
+@Service
+@Slf4j
+public class YeepayCommonService {
+	@Autowired
+	private YeePayConst yeePayConst;
+
+	YopClient yopClient = YopClientBuilder.builder().build();
+
+	/**
+	 * 上传文件到易宝服务器
+	 * */
+	public String addFileToYeepay(MultipartFile file ){
+
+		YopRequest request = YeepayCommon.ADD_FILE_TO_YEEPAY.buildRequest();
+
+		InputStream inputStream = null;
+		try {
+			inputStream = file.getInputStream();
+		} catch (IOException e) {
+			log.error("上传文件异常:"+e.getMessage());
+			throw new ServiceException("上传文件异常");
+		}
+		request.addMultiPartFile("merQual",inputStream);
+
+		//上传文件
+		YopResponse response = yopClient.request(request);
+		String resString = response.getStringResult();
+
+		return JSON.parseObject(resString).getString("merQualUrl");
+	}
+
+	/**
+	 * 上传文件到易宝服务器
+	 * */
+	public String addFileToYeepay(String url){
+
+		YopRequest request = YeepayCommon.ADD_FILE_TO_YEEPAY.buildRequest();
+
+		HttpResponse execute = HttpRequest.get(url).execute();
+		InputStream inputStream = execute.bodyStream();
+		//上传文件
+		request.addMultiPartFile("merQual",inputStream);
+		YopResponse response = yopClient.request(request);
+		String resString = response.getStringResult();
+
+		return JSON.parseObject(resString).getString("merQualUrl");
+	}
+
+	/**
+	 *	易宝 公众号配置
+	 * @param configAppDto
+	 * @return*/
+	public R configApp(ConfigAppDto configAppDto) {
+		YopRequest request = YeepayCommon.ADD_WECHAT_CONFIG.buildRequest();
+		YeepayUtils.addParamsFromObj(configAppDto,request,ConfigAppDto.class);
+		try {
+			YopResponse response = yopClient.request(request);
+			return R.data(JSON.parseObject(response.getStringResult()));
+		} catch (YopClientException e) {
+			e.printStackTrace();
+		}
+		return R.fail("配置失败");
+	}
+
+	/**
+	 *	易宝 查询公众号配置
+	 *
+	 *
+	 * @param parentMerchantNo
+	 * @param merchantNo
+	 * @param appIdType
+	 * @return*/
+	public R queryApp(String parentMerchantNo, String merchantNo, String appIdType) {
+		YopRequest request = YeepayCommon.QUERY_WECHAT_CONFIG.buildRequest();
+		request.addParameter("parentMerchantNo",parentMerchantNo);
+		request.addParameter("merchantNo",merchantNo);
+		if(appIdType!=null){
+			request.addParameter("appIdType",appIdType);
+		}
+		try {
+			YopResponse response = yopClient.request(request);
+			return R.data(JSON.parseObject(response.getStringResult()));
+		} catch (YopClientException e) {
+			e.printStackTrace();
+		}
+		return R.fail("查询失败");
+	}
+
+}

+ 686 - 0
src/main/java/org/springblade/yeePay/service/YeepaySaasService.java

@@ -0,0 +1,686 @@
+package org.springblade.yeePay.service;
+
+import com.yeepay.yop.sdk.service.common.YopClient;
+import com.yeepay.yop.sdk.service.common.YopClientBuilder;
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+import com.yeepay.yop.sdk.service.common.response.YopResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.yeePay.api.YeepaySaas;
+import org.springblade.yeePay.common.YeePayConst;
+import org.springblade.yeePay.entity.InitOrderDto;
+import org.springblade.yeePay.entity.saas.*;
+import org.springblade.yeePay.entity.saas.account.*;
+import org.springblade.yeePay.entity.saas.changeservice.MerchantDisposeQueryDto;
+import org.springblade.yeePay.entity.saas.changeservice.MerchantDisposeUnfreezeDto;
+import org.springblade.yeePay.entity.saas.changeservice.ProductFeeModifyDto;
+import org.springblade.yeePay.entity.saas.changeservice.ProductFeeQueryDto;
+import org.springblade.yeePay.entity.saas.receipt.*;
+import org.springblade.yeePay.entity.saas.settlement.*;
+import org.springblade.yeePay.entity.saas.trade.*;
+import org.springblade.yeePay.utils.YeepayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝--平台商服务
+ * @since: 9/6/21 -- 10:55 AM
+ */
+@Service
+@Slf4j
+public class YeepaySaasService {
+
+	@Autowired
+	private YeePayConst yeePayConst;
+
+	YopClient yopClient = YopClientBuilder.builder().build();
+
+	/**
+	 * 商户入网
+	 */
+	public YopResponse inviteMerchant(InvitationDto invitationDto) {
+		YopRequest yopRequest = YeepaySaas.Invitation_TO_YEEPAY.buildRequest();
+		YeepayUtils.addParamsFromObj(invitationDto, yopRequest, InvitationDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 小微商户入网
+	 */
+	public YopResponse inviteMicro(MicroInvitationDto microInvitationDto) {
+		YopRequest yopRequest = YeepaySaas.MICRO_Invitation_TO_YEEPAY.buildRequest();
+		YeepayUtils.addParamsFromObj(microInvitationDto, yopRequest, MicroInvitationDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询商户入网进度
+	 */
+	public YopResponse queryInvitation(String requestNo) {
+		YopRequest yopRequest = YeepaySaas.Query_Invitation.buildRequest();
+		yopRequest.addParameter("requestNo", requestNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 聚合支付统一下单
+	 */
+	public YopResponse aggPrepay(InitOrderDto initOrderDto) {
+		YopRequest yopRequest = YeepaySaas.AGGPAY_PREPAY.buildRequest();
+		YeepayUtils.addParamsFromObj(initOrderDto, yopRequest, InitOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 微信实名认证申请单申请
+	 */
+	public YopResponse wechatApply(WechatApplyDto wechatApplyDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_AUTH_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatApplyDto, yopRequest, WechatApplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 生成聚合订单码
+	 */
+	public YopResponse payLinkOrder(PayLinkOrderDto payLinkOrderDto) {
+		YopRequest yopRequest = YeepaySaas.PAY_LINK_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(payLinkOrderDto, yopRequest, PayLinkOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款码支付
+	 */
+	public YopResponse aggayPay(AggpayPayDto AggpayPayDto) {
+		YopRequest yopRequest = YeepaySaas.AGG_PAY_PAY.buildRequest();
+		YeepayUtils.addParamsFromObj(AggpayPayDto, yopRequest, org.springblade.yeePay.entity.saas.AggpayPayDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 撤销微信实名认证申请单
+	 */
+	public YopResponse wechatAuthCancel(WechatAuthDto wechatAuthDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_AUTH_CANCEL.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatAuthDto, yopRequest, WechatAuthDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询微信实名认证状态
+	 */
+	public YopResponse wechatAuthQuery(WechatAuthDto wechatAuthDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_AUTH_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatAuthDto, yopRequest, WechatAuthDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 商户授权状态查询接口
+	 */
+	public YopResponse authStateQuery(AuthStateQueryDto authStateQueryDto) {
+		YopRequest yopRequest = YeepaySaas.AUTH_STATE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(authStateQueryDto, yopRequest, AuthStateQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 微信违规查询接口(服务商/平台商版)
+	 */
+	public YopResponse wechatViolationChannel(WechatViolationChannelDto wechatViolationChannelDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_VIOLATION_CHANNEL.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatViolationChannelDto, yopRequest, WechatViolationChannelDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 充值-网银下单
+	 */
+	public YopResponse onlineBankRechargeOrder(OnlineBankRechargeOrderDto onlineBankRechargeOrderDto) {
+		YopRequest yopRequest = YeepaySaas.ONLINE_BANK_RECHARGE_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(onlineBankRechargeOrderDto, yopRequest, OnlineBankRechargeOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 充值-银行汇款下单
+	 */
+	public YopResponse bankRechargeOrder(BankRechargeOrderDto bankRechargeOrderDto) {
+		YopRequest yopRequest = YeepaySaas.BANK_RECHARGE_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(bankRechargeOrderDto, yopRequest, BankRechargeOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 充值-查询
+	 */
+	public YopResponse rechargeQuery(RechargeQueryDto rechargeQueryDto) {
+		YopRequest yopRequest = YeepaySaas.RECHARGE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(rechargeQueryDto, yopRequest, RechargeQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 转账-下单
+	 */
+	public YopResponse transferOrder(TransferOrderDto transferOrderDto) {
+		YopRequest yopRequest = YeepaySaas.TRANSFER_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(transferOrderDto, yopRequest, TransferOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 转账-查询
+	 */
+	public YopResponse transferB2bQuery(TransferB2bQueryDto transferB2bQueryDto) {
+		YopRequest yopRequest = YeepaySaas.TRANSFER_B2B_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(transferB2bQueryDto, yopRequest, TransferB2bQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 提现-查询
+	 */
+	public YopResponse withdrawQuery(WithdrawQueryDto withdrawQueryDto) {
+		YopRequest yopRequest = YeepaySaas.WITHDRAW_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(withdrawQueryDto, yopRequest, WithdrawQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 提现-下单
+	 */
+	public YopResponse withdrawOrder(WithdrawOrderDto withdrawOrderDto) {
+		YopRequest yopRequest = YeepaySaas.WITHDRAW_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(withdrawOrderDto, yopRequest, WithdrawOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 提现卡查询
+	 */
+	public YopResponse withdrawCardQuery(String merchantNo) {
+		YopRequest yopRequest = YeepaySaas.WITHDRAW_CARD_QUERY.buildRequest();
+		yopRequest.addParameter("merchantNo", merchantNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 提现卡-添加
+	 */
+	public YopResponse withdrawCardBind(WithdrawCardBindDto withdrawCardBindDto) {
+		YopRequest yopRequest = YeepaySaas.WITHDRAW_CARD_BIND.buildRequest();
+		YeepayUtils.addParamsFromObj(withdrawCardBindDto, yopRequest, WithdrawCardBindDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 提现卡-修改/注销
+	 */
+	public YopResponse withdrawCardModify(WithdrawCardModifyDto withdrawCardModifyDto) {
+		YopRequest yopRequest = YeepaySaas.WITHDRAW_CARD_BIND.buildRequest();
+		YeepayUtils.addParamsFromObj(withdrawCardModifyDto, yopRequest, WithdrawCardModifyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 自动提现-规则设置
+	 */
+	public YopResponse autoWithdrawRuleSet(AutoWithdrawRuleSetDto autoWithdrawRuleSetDto) {
+		YopRequest yopRequest = YeepaySaas.AUTO_WITHDRAW_RULE_SET.buildRequest();
+		YeepayUtils.addParamsFromObj(autoWithdrawRuleSetDto, yopRequest, AutoWithdrawRuleSetDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 自动提现-规则查询
+	 */
+	public YopResponse autoWithdrawRuleQuery(AutoWithdrawRuleQueryDto autoWithdrawRuleQueryDto) {
+		YopRequest yopRequest = YeepaySaas.AUTO_WITHDRAW_RULE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(autoWithdrawRuleQueryDto, yopRequest, AutoWithdrawRuleQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 自动提现-规则作废
+	 */
+	public YopResponse autoWithdrawRuleCancel(AutoWithdrawRuleCancelDto autoWithdrawRuleCancelDto) {
+		YopRequest yopRequest = YeepaySaas.AUTO_WITHDRAW_RULE_CANCEL.buildRequest();
+		YeepayUtils.addParamsFromObj(autoWithdrawRuleCancelDto, yopRequest, AutoWithdrawRuleCancelDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 账户余额的查询
+	 */
+	public YopResponse accountInfosQuery(String merchantNo) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_INFOS_QUERY.buildRequest();
+		yopRequest.addParameter("merchantNo", merchantNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 资金账户余额查询
+	 */
+	public YopResponse accountBalanceQuery(String merchantNo) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_BALANCE_QUERY.buildRequest();
+		yopRequest.addParameter("merchantNo", merchantNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款-下单
+	 */
+	public YopResponse accountPayOrder(AccountPayOrderDto accountPayOrderDto) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_PAY_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(accountPayOrderDto, yopRequest, AccountPayOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款-撤销
+	 */
+	public YopResponse accountPayCancel(AccountPayCancelDto accountPayCancelDto) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_PAY_CANCEL.buildRequest();
+		YeepayUtils.addParamsFromObj(accountPayCancelDto, yopRequest, AccountPayCancelDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款-查询
+	 */
+	public YopResponse accountPayQuery(AccountPayQueryDto accountPayQueryDto) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_PAY_CANCEL.buildRequest();
+		YeepayUtils.addParamsFromObj(accountPayQueryDto, yopRequest, AccountPayQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款-批量下单
+	 */
+	public YopResponse accountPayBatchOrder(AccountPayBatchOrderDto accountPayBatchOrderDto) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_PAY_BATCH_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(accountPayBatchOrderDto, yopRequest, AccountPayBatchOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款-批次查询
+	 */
+	public YopResponse accountPayBatchOrderQuery(String batchNo) {
+		YopRequest yopRequest = YeepaySaas.ACCOUNT_PAY_BATCH_QUERY.buildRequest();
+		yopRequest.addParameter("batchNo", batchNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款到供应商--申请添加供应商
+	 */
+	public YopResponse supplierApply(SupplierApplyDto supplierApplyDto) {
+		YopRequest yopRequest = YeepaySaas.SUPPLIER_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(supplierApplyDto, yopRequest, SupplierApplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款到供应商--查询申请进度
+	 */
+	public YopResponse supplierQueryProgress(String requestNo) {
+		YopRequest yopRequest = YeepaySaas.SUPPLIER_QUERY_PROGRESS.buildRequest();
+		yopRequest.addParameter("requestNo", requestNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款到供应商--查询已添加的供应商
+	 */
+	public YopResponse supplierQuery(String merchantNo) {
+		YopRequest yopRequest = YeepaySaas.SUPPLIER_QUERY_PROGRESS.buildRequest();
+		yopRequest.addParameter("merchantNo", merchantNo);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 付款到供应商--下单
+	 */
+	public YopResponse supplierPayOrder(SupplierPayOrderDto supplierPayOrderDto) {
+		YopRequest yopRequest = YeepaySaas.SUPPLIER_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(supplierPayOrderDto, yopRequest, SupplierPayOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 交易下单
+	 */
+	public YopResponse tradeOrder(TradeOrderDto tradeOrderDto) {
+		YopRequest yopRequest = YeepaySaas.TRADE_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(tradeOrderDto, yopRequest, TradeOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 企业账户支付-下单
+	 */
+	public YopResponse enterpriseAccountPayOrder(EnterpriseAccountPayOrderDto enterpriseAccountPayOrderDto) {
+		YopRequest yopRequest = YeepaySaas.ENTERPRISE_ACCOUNT_PAY_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(enterpriseAccountPayOrderDto, yopRequest, EnterpriseAccountPayOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 企业账户支付-自动付款
+	 */
+	public YopResponse enterpriseAutoPaymentOrder(EnterpriseAutoPaymentOrderDto enterpriseAutoPaymentOrderDto) {
+		YopRequest yopRequest = YeepaySaas.ENTERPRISE_AUTO_PAYMENT_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(enterpriseAutoPaymentOrderDto, yopRequest, EnterpriseAutoPaymentOrderDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 企业账户支付-自动付款订单查询
+	 */
+	public YopResponse enterpriseAutoPaymentQuery(EnterpriseAutoPaymentQueryDto enterpriseAutoPaymentQueryDto) {
+		YopRequest yopRequest = YeepaySaas.ENTERPRISE_AUTO_PAYMENT_ORDER.buildRequest();
+		YeepayUtils.addParamsFromObj(enterpriseAutoPaymentQueryDto, yopRequest, EnterpriseAutoPaymentQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询合并订单
+	 */
+	public YopResponse tradeOrderCombineQuery(TradeOrderCombineQueryDto tradeOrderCombineQueryDto) {
+		YopRequest yopRequest = YeepaySaas.TRADE_ORDER_COMBINE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(tradeOrderCombineQueryDto, yopRequest, TradeOrderCombineQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 关闭订单
+	 */
+	public YopResponse tradeOrderClose(TradeOrderCloseDto tradeOrderCloseDto) {
+		YopRequest yopRequest = YeepaySaas.TRADE_ORDER_CLOSE.buildRequest();
+		YeepayUtils.addParamsFromObj(tradeOrderCloseDto, yopRequest, TradeOrderCloseDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询订单
+	 */
+	public YopResponse tradeOrderQuery(TradeOrderQueryDto tradeOrderQueryDto) {
+		YopRequest yopRequest = YeepaySaas.TRADE_ORDER_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(tradeOrderQueryDto, yopRequest, TradeOrderQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 申请分账
+	 */
+	public YopResponse divideApply(DivideApplyDto divideApplyDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(divideApplyDto, yopRequest, DivideApplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 完结分账
+	 */
+	public YopResponse divideComplete(DivideCompleteDto divideCompleteDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_COMPLETE.buildRequest();
+		YeepayUtils.addParamsFromObj(divideCompleteDto, yopRequest, DivideCompleteDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询分账资金归还结果
+	 */
+	public YopResponse divideBackQuery(DivideBackQueryDto divideBackQueryDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_BACK_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(divideBackQueryDto, yopRequest, DivideBackQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 申请分账资金归还
+	 */
+	public YopResponse divideBack(DivideBackDto divideBackDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_BACK.buildRequest();
+		YeepayUtils.addParamsFromObj(divideBackDto, yopRequest, DivideBackDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询分账结果
+	 */
+	public YopResponse divideQuery(DivideQueryDto divideQueryDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(divideQueryDto, yopRequest, DivideQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 申请极速退款
+	 */
+	public YopResponse refundFast(RefundFastDto refundFastDto) {
+		YopRequest yopRequest = YeepaySaas.REFUND_FAST.buildRequest();
+		YeepayUtils.addParamsFromObj(refundFastDto, yopRequest, RefundFastDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 上送卡信息退款
+	 */
+	public YopResponse refundSupply(RefundSupplyDto refundSupplyDto) {
+		YopRequest yopRequest = YeepaySaas.REFUND_SUPPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(refundSupplyDto, yopRequest, RefundSupplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 结束退款
+	 */
+	public YopResponse refundEnd(RefundEndDto refundEndDto) {
+		YopRequest yopRequest = YeepaySaas.REFUND_END.buildRequest();
+		YeepayUtils.addParamsFromObj(refundEndDto, yopRequest, RefundEndDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 申请退款
+	 */
+	public YopResponse refund(RefundDto refundDto) {
+		YopRequest yopRequest = YeepaySaas.REFUND.buildRequest();
+		YeepayUtils.addParamsFromObj(refundDto, yopRequest, RefundDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 查询退款
+	 */
+	public YopResponse refundQuery(RefundQueryDto refundQueryDto) {
+		YopRequest yopRequest = YeepaySaas.REFUND_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(refundQueryDto, yopRequest, RefundQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 交易回单
+	 */
+	public YopResponse tradeReceiptDownload(TradeReceiptDownloadDto tradeReceiptDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.TRADE_RECEIPT_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(tradeReceiptDownloadDto, yopRequest, TradeReceiptDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 分账回单
+	 */
+	public YopResponse divideReceiptDownload(DivideReceiptDownloadDto divideReceiptDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.DIVIDE_RECEIPT_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(divideReceiptDownloadDto, yopRequest, DivideReceiptDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 待结算账户查询
+	 */
+	public YopResponse settleBalanceQuery(SettleBalanceQueryDto settleBalanceQueryDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_BALANCE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(settleBalanceQueryDto, yopRequest, SettleBalanceQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 自助结算申请
+	 */
+	public YopResponse settleSelfSettleApply(SettleSelfSettleApplyDto settleSelfSettleApplyDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_SELF_SETTLE_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(settleSelfSettleApplyDto, yopRequest, SettleSelfSettleApplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 结算记录查询
+	 */
+	public YopResponse settleRecordsQuery(SettleRecordsQueryDto settleRecordsQueryDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_RECORDS_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(settleRecordsQueryDto, yopRequest, SettleRecordsQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 结算对账文件获取接口
+	 */
+	public YopResponse settleFileGet(SettleFileGetDto settleFileGetDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_FILE_GET.buildRequest();
+		YeepayUtils.addParamsFromObj(settleFileGetDto, yopRequest, SettleFileGetDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 新增结算卡
+	 */
+	public YopResponse settleCardAdd(SettleCardAddDto settleCardAddDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_CARD_ADD.buildRequest();
+		YeepayUtils.addParamsFromObj(settleCardAddDto, yopRequest, SettleCardAddDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 修改结算卡
+	 */
+	public YopResponse settleCardModify(SettleCardModifyDto settleCardModifyDto) {
+		YopRequest yopRequest = YeepaySaas.SETTLE_CARD_MODIFY.buildRequest();
+		YeepayUtils.addParamsFromObj(settleCardModifyDto, yopRequest, SettleCardModifyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 电子回单-下载
+	 */
+	public YopResponse receiptGet(ReceiptGetDto receiptGetDto) {
+		YopRequest yopRequest = YeepaySaas.RECEIPT_GET.buildRequest();
+		YeepayUtils.addParamsFromObj(receiptGetDto, yopRequest, ReceiptGetDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 资金账单下载
+	 */
+	public YopResponse fundBillDownload(FundBillDownloadDto fundBillDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.FUND_BILL_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(fundBillDownloadDto, yopRequest, FundBillDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 资金账单申请
+	 */
+	public YopResponse fundBillApply(FundBillApplyDto fundBillApplyDto) {
+		YopRequest yopRequest = YeepaySaas.FUND_BILL_APPLY.buildRequest();
+		YeepayUtils.addParamsFromObj(fundBillApplyDto, yopRequest, FundBillApplyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 交易日对账下载
+	 */
+	public YopResponse billTradeDayDownload(BillTradeDayDownloadDto billTradeDayDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.BILL_TRADE_DAY_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(billTradeDayDownloadDto, yopRequest, BillTradeDayDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 账户对账单-下载
+	 */
+	public YopResponse billDownload(BillDownloadDto billDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.BILL_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(billDownloadDto, yopRequest, BillDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 分账日对账下载
+	 */
+	public YopResponse billDivideDayDownload(BillDivideDayDownloadDto billDivideDayDownloadDto) {
+		YopRequest yopRequest = YeepaySaas.BILL_DIVIDE_DAY_DOWNLOAD.buildRequest();
+		YeepayUtils.addParamsFromObj(billDivideDayDownloadDto, yopRequest, BillDivideDayDownloadDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 商户产品费率变更
+	 */
+	public YopResponse productFeeModify(ProductFeeModifyDto productFeeModifyDto) {
+		YopRequest yopRequest = YeepaySaas.PRODUCT_FEE_MODIFY.buildRequest();
+		YeepayUtils.addParamsFromObj(productFeeModifyDto, yopRequest, ProductFeeModifyDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 商户产品费率查询
+	 */
+	public YopResponse productFeeQuery(ProductFeeQueryDto productFeeQueryDto) {
+		YopRequest yopRequest = YeepaySaas.PRODUCT_FEE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(productFeeQueryDto, yopRequest, ProductFeeQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 沉默商户解冻申请
+	 */
+	public YopResponse merchantDisposeUnfreeze(MerchantDisposeUnfreezeDto merchantDisposeUnfreezeDto) {
+		YopRequest yopRequest = YeepaySaas.MERCHANT_DISPOSE_UNFREEZE.buildRequest();
+		YeepayUtils.addParamsFromObj(merchantDisposeUnfreezeDto, yopRequest, MerchantDisposeUnfreezeDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 沉默商户解冻申请进度查询
+	 */
+	public YopResponse merchantDisposeQuery(MerchantDisposeQueryDto merchantDisposeQueryDto) {
+		YopRequest yopRequest = YeepaySaas.MERCHANT_DISPOSE_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(merchantDisposeQueryDto, yopRequest, MerchantDisposeQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 公众号配置接口
+	 */
+	public YopResponse wechatConfigAdd(WechatConfigAddDto wechatConfigAddDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_CONFIG_ADD.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatConfigAddDto, yopRequest, WechatConfigAddDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+	/**
+	 * 公众号配置查询
+	 */
+	public YopResponse wechatConfigQuery(WechatConfigQueryDto wechatConfigQueryDto) {
+		YopRequest yopRequest = YeepaySaas.WECHAT_CONFIG_QUERY.buildRequest();
+		YeepayUtils.addParamsFromObj(wechatConfigQueryDto, yopRequest, WechatConfigQueryDto.class);
+		return yopClient.request(yopRequest);
+	}
+
+}

+ 46 - 0
src/main/java/org/springblade/yeePay/utils/Sm4GcmUtils.java

@@ -0,0 +1,46 @@
+package org.springblade.yeePay.utils;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.StringUtils;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.Key;
+import java.security.Security;
+
+public class Sm4GcmUtils {
+	static {
+		if (Security.getProvider("BC") == null) {
+			Security.addProvider(new BouncyCastleProvider());
+		}
+	}
+
+	/**
+	 * 解密
+	 *
+	 * @param key
+	 * @param data
+	 * @param once
+	 * @param associatedData
+	 * @return
+	 */
+	public static String decrypt_GCM_NoPadding(String key, String data, String once, String associatedData) throws Exception {
+		Cipher cipher = Cipher.getInstance("SM4/GCM/NoPadding", BouncyCastleProvider.PROVIDER_NAME);
+		Key sm4Key = new SecretKeySpec(Base64.decodeBase64(key), "SM4");
+		byte[] iv = new byte[12];
+		if (StringUtils.isNotEmpty(once)) {
+			iv = Base64.decodeBase64(once);
+		}
+		if (StringUtils.isNotEmpty(associatedData)) {
+			byte[] aad = associatedData.getBytes();
+			cipher.updateAAD(aad);
+		}
+		GCMParameterSpec s = new GCMParameterSpec(128, iv);
+		cipher.init(Cipher.DECRYPT_MODE, sm4Key, s);
+		return new String(cipher.doFinal(Base64.decodeBase64(data)));
+
+	}
+
+}

+ 52 - 0
src/main/java/org/springblade/yeePay/utils/YeepayUtils.java

@@ -0,0 +1,52 @@
+package org.springblade.yeePay.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.yeepay.yop.sdk.service.common.request.YopRequest;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author: lianghanqiang
+ * @description: 易宝工具类
+ * @since: 9/6/21 -- 2:22 PM
+ */
+public class  YeepayUtils {
+
+	/**
+	 * 	添加请求参数
+	 * @param obj 请求所需DTO对象
+	 * @param request 所需添加参数请求
+	 * @param clazz */
+	public static void addParamsFromObj(Object obj, YopRequest request, Class clazz){
+
+
+		//获取包含父类在内的所有属性
+		List<Field> fieldList = new ArrayList<>();
+		while (clazz != null) {
+			fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
+			clazz = clazz.getSuperclass();
+		}
+
+			(fieldList).stream().forEach(field -> {
+					field.setAccessible(true);
+					try {
+						Object paramValue = field.get(obj);
+						if(!Objects.isNull(paramValue)){
+							if(paramValue instanceof String || paramValue instanceof Enum){
+								request.addParameter(field.getName(),paramValue);
+							}else{
+								String s = JSON.toJSONString(paramValue);
+								request.addParameter(field.getName(),s);
+							}
+						}
+					} catch (IllegalAccessException e) {
+						e.printStackTrace();
+					}
+				}
+			);
+	}
+}

+ 20 - 0
src/main/resources/payConfig.properties

@@ -0,0 +1,20 @@
+
+#服务商--商户号
+yee-pay.parentMerchantNo = 10086145103
+
+#sm4 国密秘钥
+yee-pay.sm4Key = M0huZkdCZHhSU0h6YVF3aQ==
+
+#应用ID
+yee-pay.appKey = app_10086145103
+
+#秘钥
+yee-pay.privateKey = MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgUiUMy5mYPZ9mMnaEFJwGoGE0Adtvr08EVRFY8PIMJD2gCgYIKoEcz1UBgi2hRANCAATzw7Fzd3ILqNWCNXJDWT68OyBFjhBGaVprd/qIxmDZ8rbXLdUmd0Yh4zUyfjy4pR+hy+iqR4cqqfnEWjTTXAio
+
+#服务器域名
+yee-pay.serviceUrl = https://ldt.guosen-fumao.cn/api
+
+yee-pay.platformServiceNo = 10086160165
+
+#充值回调地址
+yee-pay.rechargeReturnUrl = https://ldt.guosen-fumao.cn