Compare commits
2 Commits
5586e8cee3
...
a543a8805f
Author | SHA1 | Date | |
---|---|---|---|
a543a8805f | |||
510cf76e4a |
@ -254,3 +254,12 @@ tencent:
|
|||||||
password: A1969bf8
|
password: A1969bf8
|
||||||
authentication-database: admin
|
authentication-database: admin
|
||||||
# replica-set-name: mongoreplset
|
# replica-set-name: mongoreplset
|
||||||
|
|
||||||
|
easypay:
|
||||||
|
api-path-prefix: https://d-phoenix-gap.easypay.com.cn:24443/yqt
|
||||||
|
req-id: D01X66666667068
|
||||||
|
mcht-code: 631000000003325
|
||||||
|
wechat-mchid: 804474446
|
||||||
|
easypay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgVerkGaSEQvZIOpLjeUoVpL0lSYLc04+txtPFtfm5r5XFbaNaf5Ahu0lziGEwWzrGONThSsnb3U9pqoY6BpqviN4h+Guw5oEdHr1T/eDkQD5urgQUaZA6lDoU9XC662r+0kpbKidvXIsK2CrShN+BF8HEJmRZuhglxh25OHWIWqQiUDjLZC+QJRZqUu9Uzy9RBBu7qa0f0xbqYl3hnYi+vH++SsyOavO2gUVQyKU5Kkt5ZJVpZFQvD3BXePgwJSpsvrjhj0hiYp2v6PScN9XHP1vXB4wtIYSFYwmVus1KkV/LfDzUm6zHjliHYTVl6lPMhveIVJlRIqInRZRHxg5QIDAQAB
|
||||||
|
merRsaPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCc1mku1mtfTc1vZM9z3TkRMZ9SaKP+6MdoQhjDHB9vJUOuG2Jnegej4gtzcm8MVYomV1azJMtCbPq4PN9aHegH13JthvrUPR3nAKp8AUp9Fh47ded//snNyAf7C7o8xKN5e7n89ROwacCAL2QDno76ngXzQQVj1TxY9pBdekZ03ezuDk1sv/u4FBlW8kRyaVdqyl4FdvP+EEljDe8gGxRikLyb3cK1B6G7w2BXgM/svft5SOoiqStx2XvgHRrFRB5w96TdoKNH9yxHU2clMJiz+5cej1VL6OHZspuY3cnPyJtyS+weYjDT+COLLBUe9UwbOV15DXDNpBLd34W4GiqtAgMBAAECggEAYaVwmVOwSAblp7wJGScb16OggStbJ2MAe93jEt7Yh1eZGrY7/xbP2O3smTUfBHvhZlusRB7dWf8F3l0v5iiGhRNTT/PhCPEARAl7G3emS9jQe869kkgslq06ose7bQg0i3dH5cEkQAqnameXClXWyRxHshrCY1SonO7uFPUDFtD2Z9GHu6dOWkOHfX7UETHV5/NTSqvner5M2YNsV/5To87zrmaeeNyvu91JgJSYofTD8IcMyhxcswxB9F3ECP7nulLDdCV+9mvE9zO0i4mPBxYb++87J0pu35TN9OY+gpiCK3Ed0gDqvvkTiCQEFu6y7OiqsQwy03CE5hAwWZR2YQKBgQDdb6e7+FWJSr9fIknfvZPPtKmbEkMHP1RYnVo3pmuVm14Z3UmostiSBRPMfVjeOX0N82SONM9P+1v9SDgSK3pL8rlk9Hx6D5KI7uj2IMtTVt00pO31KtxDLmXfgapDbWHK1RGEn1PDrnKYy5yOKJ8n0Wgp4lVEPIBN6uIud0A9iQKBgQC1UXdhEXFETyqEYWb9OnWbBjiVIw3D2/qW5c+WQGsHYdMEImC/0oTWIH9fKd4Azf26JjZ9nQvs5VcijJP6BXbGPqir5NgGVkwCj33PoNg4dDgIVE4BYaSp//7B6jCi5QiRTzCSOmUSkZ5L1Kz4SNEDe9r0MpLhxrsAzmR9aEJ/BQKBgHI71Ks63F2cSwd39+ZNtYA0cj7Gd/+4IvooCs+kseGXKj9rkkFOKj2CEwmuLHdP7vyQcHKQOdbIFFegtxRgi5G8oPm8yq5pdC3iGhpHJr1SlYFACGYu+zxJJlLcYIqyVf2+V3A0hZDwYLwEZjpMKHbxJ6xbz6MJFyObJZ3U9TYJAoGANXoGjJF5Z501u/+CQZN5VjSagZnqGGcL3G+BLx5msrGua9y7zjeHyCOjjWyqtnAKsllM3vVvq/nkHiN6DVaJNmUKmFARSqUvG944TAFzZAsa75H1w8CJsT34ZDbvC0wjn7/MYoRohPZ/ynu6XCwVwUJJTJaR7ZcQVmeJCdezLQUCgYEAszix6V9oL80Clb1nMwIly6I78+pcFKyk82yXxvySb6XPJvgoasbz9xYIeKlPyy6r8Aj/ujz5GVtDtkE6n6bsjekCdnUKUY3uTvFAX+YGQkuZnaPoisELJFI2Hal22tNnJyCOYh//AGAiHYpHNUKD4hsKBb45MhK1xwvTHpuLkdc=
|
||||||
|
backUrl: http://192.168.1.71:8080/easypay/trade/callback
|
||||||
|
@ -375,6 +375,9 @@ wechat:
|
|||||||
transfer-notify-url: https://a94aeb5582c2.ngrok-free.app/no-auth/wechat/notify # 转账回调地址
|
transfer-notify-url: https://a94aeb5582c2.ngrok-free.app/no-auth/wechat/notify # 转账回调地址
|
||||||
app-id: wxebcdaea31881caab # 应用ID
|
app-id: wxebcdaea31881caab # 应用ID
|
||||||
secret: your_wechat_secret # 应用密钥
|
secret: your_wechat_secret # 应用密钥
|
||||||
|
mini-program:
|
||||||
|
app-id: wx87a5db19138da60d
|
||||||
|
secret: your_wechat_secret
|
||||||
|
|
||||||
http:
|
http:
|
||||||
client:
|
client:
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.wzj.soopin.transaction.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Configuration
|
||||||
|
@ConfigurationProperties(prefix = "easypay")
|
||||||
|
public class EasypayConfig {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生接口请求地址前缀
|
||||||
|
*/
|
||||||
|
private String apiPathPrefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生分配的机构号
|
||||||
|
*/
|
||||||
|
private String reqId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生分配的商户号
|
||||||
|
*/
|
||||||
|
private String mchtCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信子商户号
|
||||||
|
*/
|
||||||
|
private String wechatMchid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生公钥
|
||||||
|
*/
|
||||||
|
private String easypayPublicKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户私钥
|
||||||
|
*/
|
||||||
|
private String merRsaPrivateKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生异步回调通知地址
|
||||||
|
*/
|
||||||
|
private String backUrl;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.wzj.soopin.transaction.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Configuration
|
||||||
|
@ConfigurationProperties(prefix = "wechat.mini-program")
|
||||||
|
public class WechatMiniProgramConfig {
|
||||||
|
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
private String secret;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package com.wzj.soopin.transaction.constans;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生接口涉及常量
|
||||||
|
*/
|
||||||
|
public interface EasypayConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求方类型.1:商户;2:拓展机构。 默认是1
|
||||||
|
* 1商户模式下,reqId即为商户号mchtCode
|
||||||
|
* 2机构模式下,reqId即为拓展机构编号
|
||||||
|
*/
|
||||||
|
public static final String REQ_TYPE = "2";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成订单前缀
|
||||||
|
*/
|
||||||
|
public static final String TRACE_PREFIX = "wzj";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付订单超时时长,单位:秒
|
||||||
|
*/
|
||||||
|
public static final Long TRACE_TIMEOUT = 180L;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通讯返回码-成功
|
||||||
|
*/
|
||||||
|
public static final String RSP_HEADER_OK = "000000";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务返回码-成功
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_RESP_OK = "000000";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-交易成功
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_TRANS_OK = "0";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-交易部分成功
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_TRANS_PARTIALLY_OK = "1";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-支付成功待发货
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_TRANS_OK_WETCAT = "2";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-支付中,需查询或接收通知获取最终状态
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_TRANS_PROCESSING = "9";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-交易失败
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_TRANS_FAIL = "X";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易状态返回码-已退款
|
||||||
|
*/
|
||||||
|
public static final String RSP_BODY_REFUND_OK = "R";
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.wzj.soopin.transaction.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.PaymentBO;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.EasyPayRequest;
|
||||||
|
import com.wzj.soopin.transaction.domain.vo.EasypayPrePayVO;
|
||||||
|
import com.wzj.soopin.transaction.service.IEasypayService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.rmi.ServerException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易生支付结果通知回调
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Slf4j
|
||||||
|
@RequestMapping("/easypay")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class EasypayCallbackController {
|
||||||
|
|
||||||
|
private final IEasypayService easypayService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理易生支付结果通知回调
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SaIgnore
|
||||||
|
@Log(title = "易生支付结果通知回调", businessType = BusinessType.UPDATE)
|
||||||
|
@PostMapping("/trade/callback")
|
||||||
|
public Map tradeCallback(@RequestBody EasyPayRequest request) {
|
||||||
|
easypayService.handlerTradeCallback(request);
|
||||||
|
HashMap<Object, Object> map = new HashMap<>();
|
||||||
|
map.put("code", "000000");
|
||||||
|
map.put("msg", "Success");
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试发起支付
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SaIgnore
|
||||||
|
@Log(title = "测试发起支付", businessType = BusinessType.OTHER)
|
||||||
|
@PostMapping("/test/trade")
|
||||||
|
public R<EasypayPrePayVO> testTrade(@RequestBody PaymentBO paymentBO) throws ServerException {
|
||||||
|
EasypayPrePayVO easypayPrePayVO = easypayService.payment(paymentBO);
|
||||||
|
return R.ok(easypayPrePayVO);
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
@ -20,7 +21,6 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -179,6 +179,22 @@ public class WxPayController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过小程序的授权码获取用户的openid
|
||||||
|
*
|
||||||
|
* @param code 授权码
|
||||||
|
* @return 包含openid的响应对象
|
||||||
|
*/
|
||||||
|
@Tag(name = "获取用户openid")
|
||||||
|
@GetMapping("/openid2")
|
||||||
|
@Parameters({
|
||||||
|
@Parameter(name = "code", description = "授权码", required = true, in = ParameterIn.QUERY)
|
||||||
|
})
|
||||||
|
public R<WxAuthResponse> getOpenIdByMiniProgramCode(@RequestParam String code) {
|
||||||
|
WxAuthResponse response = wxAuthService.getOpenIdByMiniProgramCode(code);
|
||||||
|
return R.ok(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,99 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.PayType;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付请求参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class PaymentBO {
|
||||||
|
|
||||||
|
private String memberId;
|
||||||
|
|
||||||
|
private String goodsId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单标题,对应支付宝订单里的 “商品说明”,微信订单里的“商品”
|
||||||
|
*/
|
||||||
|
private String orderSub;
|
||||||
|
/**
|
||||||
|
* 订单描述
|
||||||
|
*/
|
||||||
|
private String orderDes;
|
||||||
|
/**
|
||||||
|
* 订单金额,单位分,最小1
|
||||||
|
*/
|
||||||
|
private long transAmount;
|
||||||
|
/**
|
||||||
|
* 支付方式
|
||||||
|
*/
|
||||||
|
private PayType payType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝业务参数:买家的支付宝唯一用户号
|
||||||
|
*/
|
||||||
|
private String buyerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信业务参数:微信用户子标识
|
||||||
|
*/
|
||||||
|
private String subOpenId;
|
||||||
|
|
||||||
|
// ============银联业务参数 start ==============
|
||||||
|
/**
|
||||||
|
* 交易类型
|
||||||
|
*/
|
||||||
|
private String transType;
|
||||||
|
/**
|
||||||
|
* 授权码
|
||||||
|
*/
|
||||||
|
private String userAuthCode;
|
||||||
|
/**
|
||||||
|
* 用户标识,对应旧系统的payerId
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
/**
|
||||||
|
* 地区信息,7位,1-3为国家代码,境内业务统一为“156”,4-7位为地区码,采用《银联卡跨行业务地区代码标准》。境外商户受理的二维码业务,地区代码用全0 填充。 点击
|
||||||
|
* [地区码](https://www.yuque.com/pandans/ws1g9s/loa46fu6isbvoksz#n3L1v)
|
||||||
|
* <p>
|
||||||
|
* 例:上海市——上海市——浦东新区 则传 1562904
|
||||||
|
*/
|
||||||
|
private String areaInfo;
|
||||||
|
/**
|
||||||
|
* 支付有效时间,允许对一个订单进行支付的最长相对时间,单位为秒。
|
||||||
|
*/
|
||||||
|
private String paymentValidTime;
|
||||||
|
/**
|
||||||
|
* 二维码,payType=UnionPayJsapi、UnionPayJsMini时必填。
|
||||||
|
* 二维码表示的数据,内容为特定格式的URL或TLV。其中境内二维码采用URL格式,境外二维码采用TLV格式。见附录F21.
|
||||||
|
*/
|
||||||
|
private String qrCode;
|
||||||
|
/**
|
||||||
|
* 二维码类型,payType=UnionPayJsapi、UnionPayJsMini时必填。
|
||||||
|
*/
|
||||||
|
private String qrCodeType;
|
||||||
|
/**
|
||||||
|
* 支付方式,payType=UnionPayJsMini时必填
|
||||||
|
*/
|
||||||
|
private String payChannel;
|
||||||
|
/**
|
||||||
|
* 微信分配的公众账号ID,payType=UnionPayJsMini时必填,上送调起云闪付微信小程序的微信APPID
|
||||||
|
*/
|
||||||
|
private String appid;
|
||||||
|
/**
|
||||||
|
* 银联支付标识,payType=UnionPayJsMini时必填,固定上送MicroMessenger
|
||||||
|
*/
|
||||||
|
private String appUpIdentifier;
|
||||||
|
// ============银联业务参数 end ==============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易企通接口请求实体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class EasyPayRequest {
|
||||||
|
|
||||||
|
private EasyPayRequestHeader reqHeader;
|
||||||
|
|
||||||
|
private Object reqBody;
|
||||||
|
|
||||||
|
private String reqSign;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易企通接口请求头
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class EasyPayRequestHeader {
|
||||||
|
|
||||||
|
//请求时间,当前时间:yyyyMMddHHmmss
|
||||||
|
private String transTime;
|
||||||
|
|
||||||
|
//业务交易码
|
||||||
|
private String transCode;
|
||||||
|
|
||||||
|
// 请求流水号
|
||||||
|
private String transSequence;
|
||||||
|
|
||||||
|
// 密钥Id,商户号、机构号等
|
||||||
|
private String reqId;
|
||||||
|
|
||||||
|
//请求方类型,1:商户;2:拓展机构。 默认是1. 1商户模式下,reqId即为商户号mchtCode,2机构模式下,reqId即为拓展机构编号
|
||||||
|
private String reqType;
|
||||||
|
|
||||||
|
//证书Id,多证书情况下需要。支持同一个reqId下有多证书
|
||||||
|
private String certificateId;
|
||||||
|
|
||||||
|
//易生证书Id,多证书情况下需要,为空时使用默认证书
|
||||||
|
private String easyPayCertificateId;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易企通接口响应实体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class EasyPayResponse {
|
||||||
|
|
||||||
|
private EasyPayResponseHeader rspHeader;
|
||||||
|
|
||||||
|
private Object rspBody;
|
||||||
|
|
||||||
|
private String rspSign;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 易企通接口响应头
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class EasyPayResponseHeader {
|
||||||
|
|
||||||
|
// 应答码 000000-成功,其他失败
|
||||||
|
private String rspCode;
|
||||||
|
|
||||||
|
// 应答消息,错误信息
|
||||||
|
private String rspInfo;
|
||||||
|
|
||||||
|
//业务交易码, 同请求
|
||||||
|
private String transCode;
|
||||||
|
|
||||||
|
// 请求流水号,同请求
|
||||||
|
private String transSequence;
|
||||||
|
|
||||||
|
//易生证书Id,多证书情况下需要,为空时使用默认证书
|
||||||
|
private String easyPayCertificateId;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class PayInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务场景,建议上线前与产品经理确认
|
||||||
|
* 微信订单发货业务时必填,送值说明参见2.业务指引/2.15微信订单发货
|
||||||
|
* 建议上线前与产品经理确认
|
||||||
|
*/
|
||||||
|
private String bizScen;
|
||||||
|
/**
|
||||||
|
* 业务类型
|
||||||
|
* 微信订单发货业务时必填,送值说明参见2.业务指引/2.15微信订单发货
|
||||||
|
* 建议上线前与产品经理确认
|
||||||
|
*/
|
||||||
|
private String bizType;
|
||||||
|
/**
|
||||||
|
* 支付方式
|
||||||
|
* @See com.wzj.soopin.transaction.enums.easypay.PayType
|
||||||
|
*/
|
||||||
|
private String payType;
|
||||||
|
/**
|
||||||
|
* 产品代码,yqt
|
||||||
|
*/
|
||||||
|
private String productCode;
|
||||||
|
/**
|
||||||
|
* 业务日期,yyyyMMdd
|
||||||
|
*/
|
||||||
|
private String transDate;
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class ReqInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户号,合作商户号,易生提供
|
||||||
|
*/
|
||||||
|
private String mchtCode;
|
||||||
|
/**
|
||||||
|
* 终端号,商户入网成功后可获得,客户根据自己情况选择上送,如需通过商服平台查询交易,则建议上送易生提供
|
||||||
|
*/
|
||||||
|
private String termCode;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回码信息,规则详见F.1
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RespStateInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 渠道返回码
|
||||||
|
*/
|
||||||
|
private String appendRetCode;
|
||||||
|
/**
|
||||||
|
* 渠道返回码描述
|
||||||
|
*/
|
||||||
|
private String appendRetMsg;
|
||||||
|
/**
|
||||||
|
* 易生状态码
|
||||||
|
*/
|
||||||
|
private String respCode;
|
||||||
|
/**
|
||||||
|
* 易生状态码描述
|
||||||
|
*/
|
||||||
|
private String respDesc;
|
||||||
|
/**
|
||||||
|
* 交易状态码
|
||||||
|
*/
|
||||||
|
private String transState;
|
||||||
|
/**
|
||||||
|
* 交易状态码描述
|
||||||
|
*/
|
||||||
|
private String transStatusDesc;
|
||||||
|
}
|
@ -0,0 +1,251 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class AliBizParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ali:商品详情列表,订单包含的商品列表信息,json格式。
|
||||||
|
*/
|
||||||
|
private List<AliGoodsDetail> aliGoodsDetail;
|
||||||
|
/**
|
||||||
|
* 商户机具终端信息
|
||||||
|
*/
|
||||||
|
private Map<String, Map<String, Object>> aliTerminalParams;
|
||||||
|
/**
|
||||||
|
* ali:商户传入业务信息,用于安全/营销等参数直传场景, json
|
||||||
|
*/
|
||||||
|
private String businessParams;
|
||||||
|
/**
|
||||||
|
* 买家的支付宝唯一用户号,[点击查看获取userId](https://opendocs.alipay.com/open/02xtl7)
|
||||||
|
*/
|
||||||
|
private String buyerId;
|
||||||
|
/**
|
||||||
|
* 买家支付宝账号
|
||||||
|
*/
|
||||||
|
private String buyerLogonId;
|
||||||
|
/**
|
||||||
|
* ali:禁用支付渠道,逗号分隔
|
||||||
|
* https://docs.open.alipay.com/common/wifww7,多个渠道以逗号分割,如同时禁用信用支付类型和积分,则disable_pay_channels="credit_group,point"https://docs.open.alipay.com/common/wifww7
|
||||||
|
*/
|
||||||
|
private String disablePayChannels;
|
||||||
|
/**
|
||||||
|
* 可打折金额
|
||||||
|
*/
|
||||||
|
private String discountableAmount;
|
||||||
|
/** * 扩展参数,可传支付宝能力使用分期付款信息,格式为json字符串; * 1)信用卡分期格式: * { "fq_num" : "3" , "fq_seller_percent" : "0", "fq_channels " : "alipayfq_cc"} * 2)花呗分期格式: * { "hb_fq_num" : "3" , "hb_fq_seller_percent" : "0" } */
|
||||||
|
private String extendParams;
|
||||||
|
/**
|
||||||
|
* 实名支付信息
|
||||||
|
*/
|
||||||
|
private AliBizParamIdentity identity;
|
||||||
|
/**
|
||||||
|
* 商户操作员编号
|
||||||
|
*/
|
||||||
|
private String operatorId;
|
||||||
|
/**
|
||||||
|
* 描述分账信息
|
||||||
|
*/
|
||||||
|
private RoyaltyInfo royaltyInfo;
|
||||||
|
/**
|
||||||
|
* 卖家id
|
||||||
|
*/
|
||||||
|
private String sellerId;
|
||||||
|
/**
|
||||||
|
* 商户门店编号
|
||||||
|
*/
|
||||||
|
private String storeId;
|
||||||
|
/**
|
||||||
|
* 间联商户信息体
|
||||||
|
*/
|
||||||
|
private SubMerchant subMerchant;
|
||||||
|
/**
|
||||||
|
* 不可打折金额
|
||||||
|
*/
|
||||||
|
private String unDiscountableAmount;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class AliGoodsDetail {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝定义的统一商品编号
|
||||||
|
*/
|
||||||
|
private String alipayGoodsId;
|
||||||
|
/**
|
||||||
|
* 商品描述信息
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割
|
||||||
|
*/
|
||||||
|
private String categoriesTree;
|
||||||
|
/**
|
||||||
|
* 商品类目
|
||||||
|
*/
|
||||||
|
private String goodsCategory;
|
||||||
|
/**
|
||||||
|
* 商品的编号
|
||||||
|
*/
|
||||||
|
private String goodsId;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 商品单价,单位:元
|
||||||
|
*/
|
||||||
|
private Double price;
|
||||||
|
/**
|
||||||
|
* 商品数量
|
||||||
|
*/
|
||||||
|
private Long quantity;
|
||||||
|
/**
|
||||||
|
* 商品的展示地址
|
||||||
|
*/
|
||||||
|
private String showUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名支付信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class AliBizParamIdentity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 证件号
|
||||||
|
*/
|
||||||
|
private String certNo;
|
||||||
|
/**
|
||||||
|
* 证件类型,身份证: IDENTITY_CARD、 护照: PASSPORT 、 军 官 证 : OFFICER_CARD 、 士 兵 证 : SOLDIER_CARD、户口本:
|
||||||
|
* HOKOU 等。 注: need_check_info=T 时 该参数才有 IDENTITY_CARD28 效
|
||||||
|
*/
|
||||||
|
private String certType;
|
||||||
|
/**
|
||||||
|
* 数字信封,见2.4
|
||||||
|
*/
|
||||||
|
private String dgtlEnvlp;
|
||||||
|
/**
|
||||||
|
* 是否强制校验付款人身份信息 ,T:强制校验, F:不强制
|
||||||
|
*/
|
||||||
|
private String fixBuyer;
|
||||||
|
/**
|
||||||
|
* 允许的最小买家年龄,买家年龄必须大于等于所传数值,买家年龄必须大 于等于所传数值 注: 1. need_check_info=T 时该参数才有效 2. min_age
|
||||||
|
* 为整数,必须大于等于 0
|
||||||
|
*/
|
||||||
|
private Long minAge;
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 是否强制校验身份信息,T:强制校验, F:不强制
|
||||||
|
*/
|
||||||
|
private String needCheckInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 描述分账信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class RoyaltyInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账明细的信息
|
||||||
|
*/
|
||||||
|
private List<RoyaltyDetailInfo> royaltyDetailInfos;
|
||||||
|
/**
|
||||||
|
* 分账类型卖家的分账类型
|
||||||
|
*/
|
||||||
|
private String royaltyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class RoyaltyDetailInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账的金额
|
||||||
|
*/
|
||||||
|
private long amount;
|
||||||
|
/**
|
||||||
|
* 分账的比例
|
||||||
|
*/
|
||||||
|
private String amountPercentage;
|
||||||
|
/**
|
||||||
|
* 分账批次号
|
||||||
|
*/
|
||||||
|
private String batchNo;
|
||||||
|
/**
|
||||||
|
* 分账描述信息
|
||||||
|
*/
|
||||||
|
private String desc;
|
||||||
|
/**
|
||||||
|
* 商户分账的外部关联号
|
||||||
|
*/
|
||||||
|
private String outRelationId;
|
||||||
|
/**
|
||||||
|
* 分账序列号
|
||||||
|
*/
|
||||||
|
private String serialNo;
|
||||||
|
/**
|
||||||
|
* 如果转入账号类型为 userId,本参 数为接受分账金额的支付宝账号对应的支付宝唯一用户号
|
||||||
|
*/
|
||||||
|
private String transIn;
|
||||||
|
/**
|
||||||
|
* 接受分账金额的账户类型
|
||||||
|
*/
|
||||||
|
private String transInType;
|
||||||
|
/**
|
||||||
|
* 如果转出账号类型为 userId,本参数为要分账的支付宝账号对应的 支付宝唯一用户号
|
||||||
|
*/
|
||||||
|
private String transOut;
|
||||||
|
/**
|
||||||
|
* 要分账的账户类型
|
||||||
|
*/
|
||||||
|
private String transOutType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class SubMerchant {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 间连受理商户的支付宝商户编号,间连受理商户的支付宝商户编号
|
||||||
|
*/
|
||||||
|
private String merchantId;
|
||||||
|
/**
|
||||||
|
* 商户id类型,商户id类型
|
||||||
|
*/
|
||||||
|
private String merchantType;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.lang.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSAPI支付接口请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class JsApiReqBody {
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private JsapiReqOrderInfo reqOrderInfo;
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
/**
|
||||||
|
* 支付宝业务参数
|
||||||
|
*/
|
||||||
|
private @Nullable AliBizParam aliBizParam;
|
||||||
|
/**
|
||||||
|
* 微信业务参数
|
||||||
|
*/
|
||||||
|
private @Nullable WxBizParam wxBizParam;
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
private @Nullable QrBizParam qrBizParam;
|
||||||
|
/**
|
||||||
|
* toC营销信息,一笔交易请求中支持最多上送5条toC营销活动信息
|
||||||
|
*/
|
||||||
|
private @Nullable List<MarketingOrder> marketingOrders;
|
||||||
|
/**
|
||||||
|
* toB营销信息,1、一笔交易请求中仅可上送一个toB营销活动。
|
||||||
|
* 2、如上送toB营销活动,则不再命中后台配置的手续费营销活动。
|
||||||
|
* 3、活动业务说明见【2.7】。
|
||||||
|
*/
|
||||||
|
private @Nullable List<Promo> promos;
|
||||||
|
/**
|
||||||
|
* 清算信息,三个标识互斥,三个标识互斥,最多仅能其中一个送是(非0)。
|
||||||
|
* 合单支付时,主单清算标识(本字段)不起作用,以各子单的清算标识为准。
|
||||||
|
*/
|
||||||
|
private SettleParamInfo settleParamInfo;
|
||||||
|
/**
|
||||||
|
* 分账信息
|
||||||
|
*/
|
||||||
|
private @Nullable SeparateInfo separateInfo;
|
||||||
|
/**
|
||||||
|
* 合单信息
|
||||||
|
*/
|
||||||
|
private @Nullable List<MergeOrder> mergeOrders;
|
||||||
|
/**
|
||||||
|
* 合规信息
|
||||||
|
*/
|
||||||
|
private RiskData riskData;
|
||||||
|
/**
|
||||||
|
* 其他信息
|
||||||
|
*/
|
||||||
|
private @Nullable OtherParamInfo otherParamInfo;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class JsapiReqOrderInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步通知地址
|
||||||
|
*/
|
||||||
|
private String backUrl;
|
||||||
|
/**
|
||||||
|
* 订单描述
|
||||||
|
*/
|
||||||
|
private String orderDes;
|
||||||
|
/**
|
||||||
|
* 订单标题,对应支付宝订单里的 “商品说明”,微信订单里的“商品”
|
||||||
|
*/
|
||||||
|
private String orderSub;
|
||||||
|
/**
|
||||||
|
* 请求方自定义信息,不作处理
|
||||||
|
*/
|
||||||
|
private String orgInfo;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号,同一日下商户号下唯一
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 订单超时时间,单位秒,例如3分钟送180
|
||||||
|
*/
|
||||||
|
private String timeout;
|
||||||
|
/**
|
||||||
|
* 订单金额,单位分,最小1
|
||||||
|
*/
|
||||||
|
private long transAmount;
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账信息,子单支持分账
|
||||||
|
*
|
||||||
|
* 合单子单分账信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class JsapiSeparateInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户号
|
||||||
|
*/
|
||||||
|
private String mchtCode;
|
||||||
|
/**
|
||||||
|
* 分账批次号,分账批次流水号
|
||||||
|
*/
|
||||||
|
private String separaBatchTrace;
|
||||||
|
/**
|
||||||
|
* 分账单信息列表
|
||||||
|
*/
|
||||||
|
private List<SeparateInfo.SeparateOrderDetailList> separateOrderDetailList;
|
||||||
|
/**
|
||||||
|
* 商户终端号
|
||||||
|
*/
|
||||||
|
private String termCode;
|
||||||
|
/**
|
||||||
|
* 同批次分账金额合计,单位分,取值范围:1-10000000000
|
||||||
|
*/
|
||||||
|
private long transSumAmt;
|
||||||
|
/**
|
||||||
|
* 同批次分账笔数,取值范围:1-10000000000
|
||||||
|
*/
|
||||||
|
private long transSumCount;
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class MarketingOrder {
|
||||||
|
/**
|
||||||
|
* 活动ID
|
||||||
|
*/
|
||||||
|
private Double activityId;
|
||||||
|
/**
|
||||||
|
* 营销金额币种,默认CNY
|
||||||
|
*/
|
||||||
|
private String marketingCurrency;
|
||||||
|
/**
|
||||||
|
* 收银单营销请求扩展信息
|
||||||
|
*/
|
||||||
|
private Map<String, Object> marketingExtInfo;
|
||||||
|
/**
|
||||||
|
* 营销金额,单位分
|
||||||
|
*/
|
||||||
|
private double marketingTransAmount;
|
||||||
|
/**
|
||||||
|
* 商户号,与reqInfo中保持一致
|
||||||
|
*/
|
||||||
|
private String mchtCode;
|
||||||
|
/**
|
||||||
|
* 营销报名ID
|
||||||
|
*/
|
||||||
|
private Double registrationId;
|
||||||
|
/**
|
||||||
|
* 商户终端号,非必填,如上送需与reqInfo中保持一致
|
||||||
|
*/
|
||||||
|
private String termCode;
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.DelaySettleFlag;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.PatnerSettleFlag;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.SplitSettleFlag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class MergeOrder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代理结算模式
|
||||||
|
*/
|
||||||
|
private String agentStlmMode;
|
||||||
|
/**
|
||||||
|
* 币种
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 请求方自定义信息
|
||||||
|
*/
|
||||||
|
private String customInfo;
|
||||||
|
/**
|
||||||
|
* 延时结算标识
|
||||||
|
*/
|
||||||
|
private DelaySettleFlag delaySettleFlag;
|
||||||
|
/**
|
||||||
|
* 下游手续费, 单位分
|
||||||
|
*/
|
||||||
|
private Double handlingFee;
|
||||||
|
/**
|
||||||
|
* 下游机构商户唯一标识
|
||||||
|
*/
|
||||||
|
private String orgSmerCode;
|
||||||
|
/**
|
||||||
|
* 小商户终端号
|
||||||
|
*/
|
||||||
|
private String orgSterminalCode;
|
||||||
|
/**
|
||||||
|
* 特殊计费
|
||||||
|
*/
|
||||||
|
private String otherFee;
|
||||||
|
/**
|
||||||
|
* D0标识,0: 非D0交易,即按进件商户开通功能结算周期结算
|
||||||
|
* 1: D0交易,商户需开通了D0,且此字段送1时,会d0到账
|
||||||
|
* 默认值0
|
||||||
|
*/
|
||||||
|
private PatnerSettleFlag patnerSettleFlag;
|
||||||
|
/**
|
||||||
|
* 分账信息,子单支持分账
|
||||||
|
*/
|
||||||
|
private JsapiSeparateInfo separateInfo;
|
||||||
|
/**
|
||||||
|
* 小商户号
|
||||||
|
*/
|
||||||
|
private String smallMchtCode;
|
||||||
|
/**
|
||||||
|
* 分账标识,与主单分账标识互斥,不能同时上送1
|
||||||
|
*/
|
||||||
|
private SplitSettleFlag splitSettleFlag;
|
||||||
|
/**
|
||||||
|
* 子单商户号,子单商户号
|
||||||
|
*/
|
||||||
|
private String subMchtCode;
|
||||||
|
/**
|
||||||
|
* 商户子单流水号
|
||||||
|
*/
|
||||||
|
private String subOrgTrace;
|
||||||
|
/**
|
||||||
|
* 子单商户终端号
|
||||||
|
*/
|
||||||
|
private String subTermCode;
|
||||||
|
/**
|
||||||
|
* 子单商户订单金额,单位分
|
||||||
|
*/
|
||||||
|
private double transAmount;
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 其他信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class OtherParamInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求方自定义信息
|
||||||
|
*/
|
||||||
|
private String customInfo;
|
||||||
|
/**
|
||||||
|
* 下游手续费
|
||||||
|
*/
|
||||||
|
private Double handlingFee;
|
||||||
|
/**
|
||||||
|
* 下游机构商户唯一标识
|
||||||
|
*/
|
||||||
|
private String orgSmerCode;
|
||||||
|
/**
|
||||||
|
* 小商户终端号
|
||||||
|
*/
|
||||||
|
private String orgSterminalCode;
|
||||||
|
/**
|
||||||
|
* 特殊计费
|
||||||
|
*/
|
||||||
|
private List<Specialfee> otherFee;
|
||||||
|
/**
|
||||||
|
* 所属项目
|
||||||
|
*/
|
||||||
|
private String projectId;
|
||||||
|
/**
|
||||||
|
* 小商户号
|
||||||
|
*/
|
||||||
|
private String smallMchtCode;
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class Promo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 营销活动ID
|
||||||
|
*/
|
||||||
|
private String promoCode;
|
||||||
|
/**
|
||||||
|
* 营销金额,单位分,必须小于等于交易应收手续费金额。
|
||||||
|
*/
|
||||||
|
private String promoFeeAmount;
|
||||||
|
}
|
@ -0,0 +1,282 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.IDCheckIn;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.LimitCreditPay;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.PayChannel;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.QrCodeType;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class QrBizParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AcqAddnData
|
||||||
|
*/
|
||||||
|
private AcqAddnData acqAddnData;
|
||||||
|
/**
|
||||||
|
* 微信分配的公众账号ID,payType=UnionPayJsMini时必填,上送调起云闪付微信小程序的微信APPID
|
||||||
|
*/
|
||||||
|
private String appid;
|
||||||
|
/**
|
||||||
|
* 银联支付标识,payType=UnionPayJsMini时必填,固定上送MicroMessenger
|
||||||
|
*/
|
||||||
|
private String appUpIdentifier;
|
||||||
|
/**
|
||||||
|
* 地区信息,7位,1-3为国家代码,境内业务统一为“156”,4-7位为地区码,采用《银联卡跨行业务地区代码标准》。境外商户受理的二维码业务,地区代码用全0 填充。 点击
|
||||||
|
* [地区码](https://www.yuque.com/pandans/ws1g9s/loa46fu6isbvoksz#n3L1v)
|
||||||
|
* <p>
|
||||||
|
* 例:上海市——上海市——浦东新区 则传 1562904
|
||||||
|
*/
|
||||||
|
private String areaInfo;
|
||||||
|
/**
|
||||||
|
* 优惠码
|
||||||
|
*/
|
||||||
|
private String discountCode;
|
||||||
|
/**
|
||||||
|
* 前台失败通知地址,与frontUrl同时出现。
|
||||||
|
* APP侧未成功完成支付时调
|
||||||
|
* 用,银联将通过GET方式访问
|
||||||
|
* 本地址,银联将在frontFailUrl
|
||||||
|
* 后附加付款中止原因码,原因
|
||||||
|
* 码error_code取值如下:
|
||||||
|
* 01 - APP付款失败
|
||||||
|
* 91 - 用户取消支付
|
||||||
|
*/
|
||||||
|
private String frontFailUrl;
|
||||||
|
/**
|
||||||
|
* 前台通知地址
|
||||||
|
*/
|
||||||
|
private String frontUrl;
|
||||||
|
/**
|
||||||
|
* 实名支付验证标识
|
||||||
|
*/
|
||||||
|
private IDCheckIn idCheckIn;
|
||||||
|
/**
|
||||||
|
* 实名支付验证地址,当idCheckIn 取值为“1”时出现
|
||||||
|
*/
|
||||||
|
private String idCheckUrl;
|
||||||
|
/**
|
||||||
|
* UnionIdentity
|
||||||
|
*/
|
||||||
|
private QrBizParamIdentity identity;
|
||||||
|
/**
|
||||||
|
* 禁用支付渠道
|
||||||
|
*/
|
||||||
|
private LimitCreditPay limitCreditPay;
|
||||||
|
/**
|
||||||
|
* 商户交易索引,若商户必须使用自身交易索引,且无法使用orderNo作为交易主键发起撤销、退货交易时出现。
|
||||||
|
*/
|
||||||
|
private String merTransIndex;
|
||||||
|
/**
|
||||||
|
* 是否支持发票
|
||||||
|
*/
|
||||||
|
private String needReceipt;
|
||||||
|
/**
|
||||||
|
* 支付方式,payType=UnionPayJsMini时必填
|
||||||
|
*/
|
||||||
|
private PayChannel payChannel;
|
||||||
|
/**
|
||||||
|
* PayeeInfo
|
||||||
|
*/
|
||||||
|
private PayeeInfo payeeInfo;
|
||||||
|
/**
|
||||||
|
* 支付有效时间,允许对一个订单进行支付的最长相对时间,单位为秒。
|
||||||
|
*/
|
||||||
|
private long paymentValidTime;
|
||||||
|
/**
|
||||||
|
* 银联服务商信息,json格式,参数值示例如下:
|
||||||
|
* <p>
|
||||||
|
* {"pnrOrderId":"1220250321034502483875104", "pidSct" :"lj8352@da099%ldang", "tradeScene"
|
||||||
|
* :"1"}
|
||||||
|
*/
|
||||||
|
private String pidInfo;
|
||||||
|
/**
|
||||||
|
* 二维码,payType=UnionPayJsapi、UnionPayJsMini时必填。
|
||||||
|
* 二维码表示的数据,内容为特定格式的URL或TLV。其中境内二维码采用URL格式,境外二维码采用TLV格式。见附录F21.
|
||||||
|
*/
|
||||||
|
private String qrCode;
|
||||||
|
/**
|
||||||
|
* 二维码类型,payType=UnionPayJsapi、UnionPayJsMini时必填。
|
||||||
|
*/
|
||||||
|
private QrCodeType qrCodeType;
|
||||||
|
/**
|
||||||
|
* 银联服务商机构标识码,这是银联的渠道商号,类似微信渠道商号24006513
|
||||||
|
*/
|
||||||
|
private String qrPnrInsIdCd;
|
||||||
|
/**
|
||||||
|
* 请求方自定义域
|
||||||
|
*/
|
||||||
|
private String reqReserved;
|
||||||
|
/**
|
||||||
|
* 交易类型,参考
|
||||||
|
* [附录F1.2](https://apifox.com/apidoc/shared/9758ecc8-2c38-4ec6-914f-b09be6f563bc/doc-5524664)
|
||||||
|
*/
|
||||||
|
private String transType;
|
||||||
|
/**
|
||||||
|
* 授权码
|
||||||
|
*/
|
||||||
|
private String userAuthCode;
|
||||||
|
/**
|
||||||
|
* 用户标识,对应旧系统的payerId
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AcqAddnData
|
||||||
|
*/
|
||||||
|
@lombok.Data
|
||||||
|
public static class AcqAddnData {
|
||||||
|
/**
|
||||||
|
* 自定义数据
|
||||||
|
*/
|
||||||
|
private String customData;
|
||||||
|
/**
|
||||||
|
* 商品信息,商品明细内容
|
||||||
|
*/
|
||||||
|
private List<GoodsInfo> goodsInfos;
|
||||||
|
/**
|
||||||
|
* QrOrderInfo
|
||||||
|
*/
|
||||||
|
private OrderInfo orderInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* QrGoodsInfo,白条支付下,如涉及贴息信息,可在本参数下上送信息,参数说明详见F22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class GoodsInfo {
|
||||||
|
/**
|
||||||
|
* 商品简述信息
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 商品类目树
|
||||||
|
*/
|
||||||
|
private String categoriesTree;
|
||||||
|
/**
|
||||||
|
* 商品类目
|
||||||
|
*/
|
||||||
|
private String goodsCategory;
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*/
|
||||||
|
private String goodsId;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 商品单价
|
||||||
|
*/
|
||||||
|
private long price;
|
||||||
|
/**
|
||||||
|
* 商品数量
|
||||||
|
*/
|
||||||
|
private long quantity;
|
||||||
|
/**
|
||||||
|
* 商品的展示地址
|
||||||
|
*/
|
||||||
|
private String showUrl;
|
||||||
|
/**
|
||||||
|
* 支付宝定义的统一商品编号
|
||||||
|
* 第三方商品编号
|
||||||
|
*/
|
||||||
|
private String thirdGoodsId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* QrOrderInfo
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class OrderInfo {
|
||||||
|
/**
|
||||||
|
* 附件信息
|
||||||
|
* <p>
|
||||||
|
* 如需京东白条支付,可在此参数下上送白条相应参数,详细参数见附录F22
|
||||||
|
*/
|
||||||
|
private String addnInfo;
|
||||||
|
/**
|
||||||
|
* 可优惠金额
|
||||||
|
*/
|
||||||
|
private String dctAmount;
|
||||||
|
/**
|
||||||
|
* 订单描述
|
||||||
|
*/
|
||||||
|
private String description;
|
||||||
|
/**
|
||||||
|
* 订单标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UnionIdentity
|
||||||
|
*/
|
||||||
|
@lombok.Data
|
||||||
|
public static class QrBizParamIdentity {
|
||||||
|
/**
|
||||||
|
* 证件号
|
||||||
|
*/
|
||||||
|
private String certNo;
|
||||||
|
/**
|
||||||
|
* 证件类型
|
||||||
|
*/
|
||||||
|
private String certType;
|
||||||
|
/**
|
||||||
|
* 数字信封
|
||||||
|
*/
|
||||||
|
private String dgtlEnvlp;
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 证件姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PayeeInfo
|
||||||
|
*/
|
||||||
|
@lombok.Data
|
||||||
|
public static class PayeeInfo {
|
||||||
|
/**
|
||||||
|
* 商户类别
|
||||||
|
*/
|
||||||
|
private String mchtMccCode;
|
||||||
|
/**
|
||||||
|
* 商户英文名称
|
||||||
|
*/
|
||||||
|
private String nameEng;
|
||||||
|
/**
|
||||||
|
* 收款方账号
|
||||||
|
*/
|
||||||
|
private String payeeAcctNo;
|
||||||
|
/**
|
||||||
|
* 账号类型
|
||||||
|
*/
|
||||||
|
private String payeeAcctType;
|
||||||
|
/**
|
||||||
|
* 二级商户代码
|
||||||
|
*/
|
||||||
|
private String subMchtCode;
|
||||||
|
/**
|
||||||
|
* 二级商户名称
|
||||||
|
*/
|
||||||
|
private String subMchtName;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,137 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合规信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RiskData {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户ip
|
||||||
|
*/
|
||||||
|
private String customerIp;
|
||||||
|
/**
|
||||||
|
* 终端信息
|
||||||
|
*/
|
||||||
|
private TerminalInfo terminalInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class TerminalInfo {
|
||||||
|
/**
|
||||||
|
* 终端版本号
|
||||||
|
*/
|
||||||
|
private String appVersion;
|
||||||
|
/**
|
||||||
|
* 终端位置地区编码
|
||||||
|
*/
|
||||||
|
private String areaNo;
|
||||||
|
/**
|
||||||
|
* 终端位置国家编码
|
||||||
|
*/
|
||||||
|
private String ctryNo;
|
||||||
|
/**
|
||||||
|
* 加密随机数
|
||||||
|
*/
|
||||||
|
private String encryptRandNum;
|
||||||
|
/**
|
||||||
|
* ICCID,SIM卡卡号
|
||||||
|
*/
|
||||||
|
private String iccId;
|
||||||
|
/**
|
||||||
|
* 基站编号 1
|
||||||
|
*/
|
||||||
|
private String lbsNum1;
|
||||||
|
/**
|
||||||
|
* 基站编号 2
|
||||||
|
*/
|
||||||
|
private String lbsNum2;
|
||||||
|
/**
|
||||||
|
* 基站编号 3
|
||||||
|
*/
|
||||||
|
private String lbsNum3;
|
||||||
|
/**
|
||||||
|
* 基站信号 1
|
||||||
|
*/
|
||||||
|
private String lbsSignal1;
|
||||||
|
/**
|
||||||
|
* 基站信号 2
|
||||||
|
*/
|
||||||
|
private String lbsSignal2;
|
||||||
|
/**
|
||||||
|
* 基站信号 3
|
||||||
|
*/
|
||||||
|
private String lbsSignal3;
|
||||||
|
/**
|
||||||
|
* 终端实时经纬度信息
|
||||||
|
*/
|
||||||
|
private String location;
|
||||||
|
/**
|
||||||
|
* 位置区域码 1
|
||||||
|
*/
|
||||||
|
private String locationCd1;
|
||||||
|
/**
|
||||||
|
* 位置区域码 2
|
||||||
|
*/
|
||||||
|
private String locationCd2;
|
||||||
|
/**
|
||||||
|
* 位置区域码 3
|
||||||
|
*/
|
||||||
|
private String locationCd3;
|
||||||
|
/**
|
||||||
|
* 基站信息,移动国家代码
|
||||||
|
*/
|
||||||
|
private String mobileCountryCd;
|
||||||
|
/**
|
||||||
|
* 基站信息,移动网络号码
|
||||||
|
*/
|
||||||
|
private String mobileNetNum;
|
||||||
|
/**
|
||||||
|
* 网络授权
|
||||||
|
*/
|
||||||
|
private String networkLicense;
|
||||||
|
/**
|
||||||
|
* 密钥文本
|
||||||
|
*/
|
||||||
|
private String secretText;
|
||||||
|
/**
|
||||||
|
* 终端序列号
|
||||||
|
*/
|
||||||
|
private String serialNum;
|
||||||
|
/**
|
||||||
|
* 电信基站信号
|
||||||
|
*/
|
||||||
|
private String telecomLbs;
|
||||||
|
/**
|
||||||
|
* 电信网络识别码
|
||||||
|
*/
|
||||||
|
private String telecomNetId;
|
||||||
|
/**
|
||||||
|
* 电信系统识别码
|
||||||
|
*/
|
||||||
|
private String telecomSysId;
|
||||||
|
/**
|
||||||
|
* 终端编号
|
||||||
|
*/
|
||||||
|
private String terminalId;
|
||||||
|
/**
|
||||||
|
* 终端IP,终端信息非必填,但如果送了终端信息,则terminalIp必填
|
||||||
|
*/
|
||||||
|
private String terminalIp;
|
||||||
|
/**
|
||||||
|
* 终端类型
|
||||||
|
*/
|
||||||
|
private String terminalType;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.DelaySettleFlag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账商户号,即发起分账方,分账资金来源方
|
||||||
|
*/
|
||||||
|
private String oriSeparateMchtCode;
|
||||||
|
/**
|
||||||
|
* 分账流水号,商户号下唯一
|
||||||
|
*/
|
||||||
|
private String separaBatchTrace;
|
||||||
|
/**
|
||||||
|
* 分账订单明细
|
||||||
|
*/
|
||||||
|
private List<SeparateOrderDetailList> separateOrderDetailList;
|
||||||
|
/**
|
||||||
|
* 分账订单总金额,单位分
|
||||||
|
*/
|
||||||
|
private long transSumAmt;
|
||||||
|
/**
|
||||||
|
* 分账订单总笔数
|
||||||
|
*/
|
||||||
|
private long transSumCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账订单明细
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class SeparateOrderDetailList {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账订单标题
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 分账D0标识,D0需提前开通
|
||||||
|
*/
|
||||||
|
private DelaySettleFlag isD0;
|
||||||
|
/**
|
||||||
|
* 分账收款方商户号,可以商户号或分账接收方编号
|
||||||
|
*/
|
||||||
|
private String receiveMchtCode;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金金额,金额和比例2选1必填
|
||||||
|
*/
|
||||||
|
private Long sepaFeeAmount;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金比例,金额和比例2选1必填,30代表30%,仅可上送整数
|
||||||
|
*/
|
||||||
|
private Long sepaFeeRatio;
|
||||||
|
/**
|
||||||
|
* 分账子单流水号
|
||||||
|
*/
|
||||||
|
private String separateTrade;
|
||||||
|
/**
|
||||||
|
* 分账比例,分账金额和分账比例2选一必填,30代表30%,仅可上送整数
|
||||||
|
*/
|
||||||
|
private Long sepaRatio;
|
||||||
|
/**
|
||||||
|
* 分账金额,分账金额和分账比例2选一必填,单位分
|
||||||
|
*/
|
||||||
|
private Long sepaTransAmount;
|
||||||
|
/**
|
||||||
|
* 分账订单描述
|
||||||
|
*/
|
||||||
|
private String subject;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.DelaySettleFlag;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.PatnerSettleFlag;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.SplitSettleFlag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清算信息,三个标识互斥,三个标识互斥,最多仅能其中一个送是(非0)。
|
||||||
|
* 合单支付时,主单清算标识(本字段)不起作用,以各子单的清算标识为准。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SettleParamInfo {
|
||||||
|
/**
|
||||||
|
* 延时结算标识
|
||||||
|
* {@link DelaySettleFlag}
|
||||||
|
*/
|
||||||
|
private String delaySettleFlag;
|
||||||
|
/**
|
||||||
|
* D0标识
|
||||||
|
* {@link PatnerSettleFlag}
|
||||||
|
*/
|
||||||
|
private String patnerSettleFlag;
|
||||||
|
/**
|
||||||
|
* 分账标识
|
||||||
|
* {@link SplitSettleFlag}
|
||||||
|
*/
|
||||||
|
private String splitSettleFlag;
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.SpecialTag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class Specialfee {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用金额,单位分
|
||||||
|
*/
|
||||||
|
private long feeAmount;
|
||||||
|
/**
|
||||||
|
* 费用类型
|
||||||
|
*/
|
||||||
|
private SpecialTag specialTag;
|
||||||
|
}
|
@ -0,0 +1,201 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.WxLimitPay;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class WxBizParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信分配的公众账号ID,微信分配的公众账号ID(企业号corpid即为此appid)
|
||||||
|
*/
|
||||||
|
private String appId;
|
||||||
|
/**
|
||||||
|
* 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
|
||||||
|
*/
|
||||||
|
private String attach;
|
||||||
|
/**
|
||||||
|
* 单品优惠功能字段
|
||||||
|
*/
|
||||||
|
private Detail detail;
|
||||||
|
/**
|
||||||
|
* 订单优惠标记,用于区分订单是否可以享受优惠,字段内容在微信后台配置券时进行设置
|
||||||
|
*/
|
||||||
|
private String goodsTag;
|
||||||
|
/**
|
||||||
|
* 实名信息
|
||||||
|
*/
|
||||||
|
private WxBizParamIdentity identity;
|
||||||
|
/**
|
||||||
|
* 是否支持发票
|
||||||
|
*/
|
||||||
|
private Boolean needReceip;
|
||||||
|
/**
|
||||||
|
* 用户标识
|
||||||
|
*/
|
||||||
|
private String openId;
|
||||||
|
/**
|
||||||
|
* 商品描述
|
||||||
|
*/
|
||||||
|
private String orderBody;
|
||||||
|
/**
|
||||||
|
* 微信场景信息,该字段用于上报场景信息,目前支持上报实际门店信息。该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name":
|
||||||
|
* "名称","area_code": "编码","address": "地址" }}
|
||||||
|
*/
|
||||||
|
private SceneInfo sceneInfo;
|
||||||
|
/**
|
||||||
|
* 微信分配的子商户公众账号ID
|
||||||
|
*/
|
||||||
|
private String subAppid;
|
||||||
|
/**
|
||||||
|
* 用户子标识,[点击查看获取openid](https://pay.weixin.qq.com/doc/v3/partner/4012081935)
|
||||||
|
*/
|
||||||
|
private String subOpenId;
|
||||||
|
/**
|
||||||
|
* 交易限制支付类型
|
||||||
|
*/
|
||||||
|
private WxLimitPay wxLimitPay;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单品优惠功能字段
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class Detail {
|
||||||
|
/**
|
||||||
|
* 订单原价,1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。<br />2.当订单原价与支付金额不相等,则不享受优惠。<br
|
||||||
|
* />3.该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。
|
||||||
|
*/
|
||||||
|
private Long costPrice;
|
||||||
|
/**
|
||||||
|
* 单品列表,单品信息,使用Json数组格式提交
|
||||||
|
*/
|
||||||
|
private List<GoodsDetail> goodsDetail;
|
||||||
|
/**
|
||||||
|
* 商家小票ID,商家小票ID
|
||||||
|
*/
|
||||||
|
private String receiptid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class GoodsDetail {
|
||||||
|
/**
|
||||||
|
* 商品编码,由半角的大小写字母、数字、中划线、下划线中的一种或几种组成
|
||||||
|
*/
|
||||||
|
private String goodsid;
|
||||||
|
/**
|
||||||
|
* 商品名称,商品的实际名称
|
||||||
|
*/
|
||||||
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 商品单价,单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的优惠券100-50,则活动商品的单价应为原单价-50)
|
||||||
|
*/
|
||||||
|
private Long price;
|
||||||
|
/**
|
||||||
|
* 商品数量,用户购买的数量
|
||||||
|
*/
|
||||||
|
private Long quantity;
|
||||||
|
/**
|
||||||
|
* 微信侧商品编码,微信支付定义的统一商品编号(没有可不传)
|
||||||
|
*/
|
||||||
|
private String wxpayGoodsid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class WxBizParamIdentity {
|
||||||
|
/**
|
||||||
|
* 证件号
|
||||||
|
*/
|
||||||
|
private String certNo;
|
||||||
|
/**
|
||||||
|
* 证件类型
|
||||||
|
*/
|
||||||
|
private String certType;
|
||||||
|
/**
|
||||||
|
* 数字信封
|
||||||
|
*/
|
||||||
|
private String dgtlEnvlp;
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信场景信息,该字段用于上报场景信息,目前支持上报实际门店信息。该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name":
|
||||||
|
* "名称","area_code": "编码","address": "地址" }}
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class SceneInfo {
|
||||||
|
/**
|
||||||
|
* 商户端设备号,商户端设备号
|
||||||
|
*/
|
||||||
|
private String deviceid;
|
||||||
|
/**
|
||||||
|
* 用户的客户端IP,用户的客户端IP
|
||||||
|
*/
|
||||||
|
private String payerClientip;
|
||||||
|
/**
|
||||||
|
* 门店信息,门店信息
|
||||||
|
*/
|
||||||
|
private StoreInfo storeInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 门店信息,门店信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class StoreInfo {
|
||||||
|
/**
|
||||||
|
* 门店详细地址,门店详细地址
|
||||||
|
*/
|
||||||
|
private String address;
|
||||||
|
/**
|
||||||
|
* 门店所在地行政区划码,门店所在地行政区划码
|
||||||
|
*/
|
||||||
|
private String areaCode;
|
||||||
|
/**
|
||||||
|
* 门店唯一标识,门店唯一标识
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 门店名称,门店名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ali业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class AliRespParamInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调起支付宝支付参数,调起支付宝支付参考
|
||||||
|
* [附录F.15](https://apifox.com/apidoc/shared/9758ecc8-2c38-4ec6-914f-b09be6f563bc/doc-5662571)
|
||||||
|
*/
|
||||||
|
private String tradeNo;
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSAPI支付接口响应
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class JsApiRespBody {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回码信息,规则详见F.1
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private JsapiRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* ali业务参数
|
||||||
|
*/
|
||||||
|
private AliRespParamInfo aliRespParamInfo;
|
||||||
|
/**
|
||||||
|
* wx业务参数
|
||||||
|
*/
|
||||||
|
private WxJsApiRespParamInfoVO wxRespParamInfo;
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
private QrJsApiRespParamInfoVO qrRespParamInfo;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,151 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.AddCalcType;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.BillingCycle;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.CardType;
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.FeeType;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class JsapiRespOrderInfo {
|
||||||
|
/**
|
||||||
|
* 商户费率信息
|
||||||
|
*/
|
||||||
|
private Empty mchtRateList;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 易生订单号,易生生成后上送渠道的订单号
|
||||||
|
*/
|
||||||
|
private String outTrace;
|
||||||
|
/**
|
||||||
|
* 渠道订单号,渠道生成返回给易生的订单号,例如微信、支付宝订单号
|
||||||
|
*/
|
||||||
|
private String pcTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号,易生系统内流转的订单号求易生的流水号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 交易金额,单位分
|
||||||
|
*/
|
||||||
|
private Long transAmount;
|
||||||
|
/**
|
||||||
|
* 银联订单号
|
||||||
|
*/
|
||||||
|
private String unTrace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户费率信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
private static class Empty {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附加手续费计算方式
|
||||||
|
*/
|
||||||
|
private AddCalcType addCalcType;
|
||||||
|
/**
|
||||||
|
* 附加手续费值,单位:分
|
||||||
|
*/
|
||||||
|
private String addCalcVal;
|
||||||
|
/**
|
||||||
|
* 交易金额最高值,单位:分
|
||||||
|
*/
|
||||||
|
private String amtHighLt;
|
||||||
|
/**
|
||||||
|
* 交易金额最低值,单位:分
|
||||||
|
*/
|
||||||
|
private String amtLowLt;
|
||||||
|
/**
|
||||||
|
* 结算周期
|
||||||
|
*/
|
||||||
|
private BillingCycle billingCycle;
|
||||||
|
/**
|
||||||
|
* 手续费计算方式
|
||||||
|
*/
|
||||||
|
private AddCalcType calcType;
|
||||||
|
/**
|
||||||
|
* 手续费费率值,按笔单位为分;按比例为百万比
|
||||||
|
*/
|
||||||
|
private String calcVal;
|
||||||
|
/**
|
||||||
|
* 卡机构编号,见F.10
|
||||||
|
*/
|
||||||
|
private String cardIssuerCode;
|
||||||
|
/**
|
||||||
|
* 卡类型
|
||||||
|
*/
|
||||||
|
private CardType cardType;
|
||||||
|
/**
|
||||||
|
* 生效时间
|
||||||
|
*/
|
||||||
|
private String effDatetime;
|
||||||
|
/**
|
||||||
|
* 失效时间
|
||||||
|
*/
|
||||||
|
private String expDatetime;
|
||||||
|
/**
|
||||||
|
* 手续费处理模式
|
||||||
|
*/
|
||||||
|
private String feeCalcMode;
|
||||||
|
/**
|
||||||
|
* 手续费最高值,单位:分
|
||||||
|
*/
|
||||||
|
private String feeHighLimit;
|
||||||
|
/**
|
||||||
|
* feeId
|
||||||
|
*/
|
||||||
|
private String feeId;
|
||||||
|
/**
|
||||||
|
* 手续费承担机构
|
||||||
|
*/
|
||||||
|
private String feeInst;
|
||||||
|
/**
|
||||||
|
* 手续费最低值,单位:分
|
||||||
|
*/
|
||||||
|
private String feeLowLimit;
|
||||||
|
/**
|
||||||
|
* 手续费费用类型
|
||||||
|
*/
|
||||||
|
private AddCalcType feeMode;
|
||||||
|
/**
|
||||||
|
* 手续费处理模式
|
||||||
|
*/
|
||||||
|
private FeeType feeType;
|
||||||
|
/**
|
||||||
|
* 分期期数
|
||||||
|
*/
|
||||||
|
private String instalNum;
|
||||||
|
/**
|
||||||
|
* 是否需求配置费率
|
||||||
|
*/
|
||||||
|
private String isNeedConfigFee;
|
||||||
|
/**
|
||||||
|
* 是否允许退货
|
||||||
|
*/
|
||||||
|
private AddCalcType isRefundFee;
|
||||||
|
/**
|
||||||
|
* 优先级
|
||||||
|
*/
|
||||||
|
private String levelOrder;
|
||||||
|
/**
|
||||||
|
* 内部商户号
|
||||||
|
*/
|
||||||
|
private String mchtCode;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class QrJsApiRespParamInfoVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 云闪付支付调用凭证,payType=UnionPayJsMini时,需要用此参数拼接跳转至云微小程序,具体跳转方法见F.17.
|
||||||
|
*/
|
||||||
|
private String qrRedirectUrl;
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.jsapi.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wx业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class WxJsApiRespParamInfoVO {
|
||||||
|
/**
|
||||||
|
* 调起微信支付参数,调起微信支付调起参考
|
||||||
|
* [附录F.15](https://apifox.com/apidoc/shared/9758ecc8-2c38-4ec6-914f-b09be6f563bc/doc-5662571)
|
||||||
|
*/
|
||||||
|
private String wcPayData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预支付交易会话标识
|
||||||
|
*/
|
||||||
|
private String prepayId;
|
||||||
|
}
|
@ -0,0 +1,85 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AT交易退货请求扩展信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class QrCodeRefundExt {
|
||||||
|
/**
|
||||||
|
* 退款货币种类
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 商品详情列表
|
||||||
|
*/
|
||||||
|
private List<GoodsDetail> goodsDetail;
|
||||||
|
/**
|
||||||
|
* 商户的操作员编号
|
||||||
|
*/
|
||||||
|
private String operatorId;
|
||||||
|
/**
|
||||||
|
* 查询选项
|
||||||
|
*/
|
||||||
|
private List<String> queryOption;
|
||||||
|
/**
|
||||||
|
* 退款原因
|
||||||
|
*/
|
||||||
|
private String refundReason;
|
||||||
|
/**
|
||||||
|
* 商户的门店编号
|
||||||
|
*/
|
||||||
|
private String storeCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class GoodsDetail {
|
||||||
|
/**
|
||||||
|
* 支付宝定义的统一商品编号
|
||||||
|
*/
|
||||||
|
private String alipayGoodsid;
|
||||||
|
/**
|
||||||
|
* 商品描述信息
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 商品类目树
|
||||||
|
*/
|
||||||
|
private String categoriesTree;
|
||||||
|
/**
|
||||||
|
* 商品类目
|
||||||
|
*/
|
||||||
|
private String goodsCategory;
|
||||||
|
/**
|
||||||
|
* 商品的编号
|
||||||
|
*/
|
||||||
|
private String goodsid;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 商品单价(单位:元)
|
||||||
|
*/
|
||||||
|
private Double price;
|
||||||
|
/**
|
||||||
|
* 商品数量
|
||||||
|
*/
|
||||||
|
private Long quantity;
|
||||||
|
/**
|
||||||
|
* 商品的展示地址
|
||||||
|
*/
|
||||||
|
private String showurl;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起退款请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundApplyReqBody {
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private RefundReqOrderInfo reqOrderInfo;
|
||||||
|
/**
|
||||||
|
* AT交易退货请求扩展信息
|
||||||
|
*/
|
||||||
|
private QrCodeRefundExt qrCodeRefundExt;
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundReqOrderInfo {
|
||||||
|
/**
|
||||||
|
* 下游手续费
|
||||||
|
*/
|
||||||
|
private Double handlingFee;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 原商户订单号,传的是支付交易的orgTrace,代表要退哪笔支付交易, 可以是主单订单号和子单订单号
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 原订单outTrace,oriOrgTrace与oriOutTrace二选一必填
|
||||||
|
*/
|
||||||
|
private String oriOutTrace;
|
||||||
|
/**
|
||||||
|
* 原业务日期,原交易业务日期,格式:yyyyMMdd
|
||||||
|
*/
|
||||||
|
private String oriTransDate;
|
||||||
|
/**
|
||||||
|
* 退款金额,单位分 separate
|
||||||
|
*/
|
||||||
|
private long refundAmount;
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp.SettleRespParamInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起退款响应体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundApplyRespBody {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private RefundRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息,详见
|
||||||
|
* [附录F.1](https://apifox.com/apidoc/shared/9758ecc8-2c38-4ec6-914f-b09be6f563bc/doc-5523713)
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
/**
|
||||||
|
* 清算信息
|
||||||
|
*/
|
||||||
|
private SettleRespParamInfo settleRespParamInfo;
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundRespOrderInfo {
|
||||||
|
/**
|
||||||
|
* 请求方自定义信息
|
||||||
|
*/
|
||||||
|
private String orgInfo;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 原商户订单号
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 原易生订单号
|
||||||
|
*/
|
||||||
|
private String oriOutTrace;
|
||||||
|
/**
|
||||||
|
* 易生订单号,易生生成后上送渠道的订单号
|
||||||
|
*/
|
||||||
|
private String outTrace;
|
||||||
|
/**
|
||||||
|
* 渠道订单号,渠道生成返回给易生的订单号,例如微信、支付宝订单号
|
||||||
|
*/
|
||||||
|
private String pcTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 退货金额,单位分
|
||||||
|
*/
|
||||||
|
private Long refundAmount;
|
||||||
|
/**
|
||||||
|
* 银联订单号
|
||||||
|
*/
|
||||||
|
private String unTrace;
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.refund.query.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.refund.apply.req.RefundReqOrderInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款查询请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundQueryReqBody {
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private RefundReqOrderInfo reqOrderInfo;
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.apply.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起分账请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateApplyReqBody {
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private SeparateReqOrderInfo reqOrderInfo;
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.apply.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req.SeparateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateReqOrderInfo {
|
||||||
|
/**
|
||||||
|
* 异步通知地址
|
||||||
|
*/
|
||||||
|
private String backUrl;
|
||||||
|
/**
|
||||||
|
* 原商户交易的orgTrace,需要对哪笔交易进行分账,就传那笔交易的orgTrace。就是支付交易的orgTrace
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 原商户交易日期
|
||||||
|
*/
|
||||||
|
private String oriTransDate;
|
||||||
|
/**
|
||||||
|
* 营销信息,仅支持ToB营销活动
|
||||||
|
*/
|
||||||
|
private List<PromoList> promoList;
|
||||||
|
/**
|
||||||
|
* 分账总单流水号,分账批次号,自定义,要唯一
|
||||||
|
*/
|
||||||
|
private String separateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 分账子单明细,可送多条
|
||||||
|
*/
|
||||||
|
private List<SeparateInfo.SeparateOrderDetailList> separateOrderDetailList;
|
||||||
|
/**
|
||||||
|
* 分账订单总金额,单位分
|
||||||
|
*/
|
||||||
|
private long transSumAmt;
|
||||||
|
/**
|
||||||
|
* 分账订单总笔数
|
||||||
|
*/
|
||||||
|
private long transSumCount;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class PromoList {
|
||||||
|
/**
|
||||||
|
* 营销ID
|
||||||
|
*/
|
||||||
|
private String promoCode;
|
||||||
|
/**
|
||||||
|
* 营销手续费金额
|
||||||
|
*/
|
||||||
|
private long promoFeeAmount;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.apply.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起分账响应体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateApplyRespBody {
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private SeparateRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.apply.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.DelaySettleFlag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateRespInfoList {
|
||||||
|
/**
|
||||||
|
* 分账单标题
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 分账D0标识
|
||||||
|
*/
|
||||||
|
private DelaySettleFlag isD0;
|
||||||
|
/**
|
||||||
|
* 分账收款方商户号
|
||||||
|
*/
|
||||||
|
private String receiveMchtCode;
|
||||||
|
/**
|
||||||
|
* 当前分账单已退款金额总计
|
||||||
|
*/
|
||||||
|
private Long refundAmountSum;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金金额
|
||||||
|
*/
|
||||||
|
private Long sepaFeeAmount;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金比例
|
||||||
|
*/
|
||||||
|
private Long sepaFeeRatio;
|
||||||
|
/**
|
||||||
|
* 分账平台应结金额
|
||||||
|
*/
|
||||||
|
private Long sepaPlatStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账单流水号,同一日期内唯一,否则会因流水号重复而失败
|
||||||
|
*/
|
||||||
|
private String separateTrade;
|
||||||
|
/**
|
||||||
|
* 分账比例
|
||||||
|
*/
|
||||||
|
private Long sepaRatio;
|
||||||
|
/**
|
||||||
|
* 分账单状态,(处理中、成功、失败、已退款)
|
||||||
|
*/
|
||||||
|
private String sepaStatus;
|
||||||
|
/**
|
||||||
|
* 分账单状态说明
|
||||||
|
*/
|
||||||
|
private String sepaStatusDesc;
|
||||||
|
/**
|
||||||
|
* 分账实际结算金额
|
||||||
|
*/
|
||||||
|
private Long sepaStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账金额,单位分
|
||||||
|
*/
|
||||||
|
private Long sepaTransAmount;
|
||||||
|
/**
|
||||||
|
* 分账订单描述
|
||||||
|
*/
|
||||||
|
private String subject;
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.apply.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateRespOrderInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同批次分账笔数
|
||||||
|
*/
|
||||||
|
private Long batchNum;
|
||||||
|
/**
|
||||||
|
* 同批次分账金额合计
|
||||||
|
*/
|
||||||
|
private Long batchTransAmount;
|
||||||
|
/**
|
||||||
|
* 原商户交易的orgTrace
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 分账商户批次号,同一日期内唯一,否则会因为流水号重复失败
|
||||||
|
*/
|
||||||
|
private String separateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 分账单信息列表
|
||||||
|
*/
|
||||||
|
private List<SeparateRespInfoList> separateRespInfoList;
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.cancel.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CancelReqOrderInfo {
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 原分账总单流水
|
||||||
|
*/
|
||||||
|
private String oriSeparateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 原分账子单流水号
|
||||||
|
*/
|
||||||
|
private String oriSeparateTrade;
|
||||||
|
/**
|
||||||
|
* 原业务日期
|
||||||
|
*/
|
||||||
|
private String oriTransDate;
|
||||||
|
/**
|
||||||
|
* 回退金额
|
||||||
|
*/
|
||||||
|
private long refundAmount;
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.cancel.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账回退请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateCancelReqBody {
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private CancelReqOrderInfo reqOrderInfo;
|
||||||
|
}
|
@ -0,0 +1,106 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.cancel.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CancelRespOrderInfo {
|
||||||
|
/**
|
||||||
|
* 同批次分账笔数
|
||||||
|
*/
|
||||||
|
private Long batchNum;
|
||||||
|
/**
|
||||||
|
* 同批次分账金额合计
|
||||||
|
*/
|
||||||
|
private Long batchTransAmount;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号,每次都要唯一
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 原商户订单号
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 原分账批次号,原分账总单流水号
|
||||||
|
*/
|
||||||
|
private String separateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 分账单信息列表
|
||||||
|
*/
|
||||||
|
private List<SeparateRespInfoList> separateRespInfoList;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class SeparateRespInfoList {
|
||||||
|
/**
|
||||||
|
* 分账订单标题,请求方上送
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 分账-秒到标识(1:是 0:否)
|
||||||
|
*/
|
||||||
|
private String isD0;
|
||||||
|
/**
|
||||||
|
* 分账收款方商户号,请求方上送
|
||||||
|
*/
|
||||||
|
private String receiveMchtCode;
|
||||||
|
/**
|
||||||
|
* 当前分账单已退款金额总计
|
||||||
|
*/
|
||||||
|
private Long refundAmountSum;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担金额(金额和比例都支持传,2选1),根据资产单金额来算比例,请求方上送
|
||||||
|
*/
|
||||||
|
private Long sepaFeeAmount;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担比例(金额和比例都支持传,2选1),30代表百万分之30,请求方上送
|
||||||
|
*/
|
||||||
|
private Long sepaFeeRatio;
|
||||||
|
/**
|
||||||
|
* 分账平台应结金额
|
||||||
|
*/
|
||||||
|
private Long sepaPlatStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账单商户订单号,请求方上送
|
||||||
|
*/
|
||||||
|
private String separateTrade;
|
||||||
|
/**
|
||||||
|
* 分账比例,请求方上送
|
||||||
|
*/
|
||||||
|
private Long sepaRatio;
|
||||||
|
/**
|
||||||
|
* 分账单状态(处理中、成功、失败、已退款)
|
||||||
|
*/
|
||||||
|
private String sepaStatus;
|
||||||
|
/**
|
||||||
|
* 分账单状态说明
|
||||||
|
*/
|
||||||
|
private String sepaStatusDesc;
|
||||||
|
/**
|
||||||
|
* 分账实际结算金额
|
||||||
|
*/
|
||||||
|
private Long sepaStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账金额,请求方上送
|
||||||
|
*/
|
||||||
|
private Long sepaTransAmount;
|
||||||
|
/**
|
||||||
|
* 分账订单描述,请求方上送
|
||||||
|
*/
|
||||||
|
private String subject;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.cancel.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账回退响应体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateCancelRespBody {
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private CancelRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.query.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CancelQueryReqOrderInfo {
|
||||||
|
/**
|
||||||
|
* 原分账批次流水separateBatchTrace,原分账总单流水号
|
||||||
|
*/
|
||||||
|
private String oriSeparateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 原请求分账日期
|
||||||
|
*/
|
||||||
|
private String oriTransDate;
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.query.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账查询请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateQueryReqBody {
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private CancelQueryReqOrderInfo reqOrderInfo;
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.query.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.SepaStatus;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CancelQueryRespOrderInfo {
|
||||||
|
/**
|
||||||
|
* 同批次分账笔数
|
||||||
|
*/
|
||||||
|
private Long batchNum;
|
||||||
|
/**
|
||||||
|
* 同批次分账金额合计
|
||||||
|
*/
|
||||||
|
private Long batchTransAmount;
|
||||||
|
/**
|
||||||
|
* 分账总单流水号
|
||||||
|
*/
|
||||||
|
private String oriSeparateBatchTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 分账单信息列表
|
||||||
|
*/
|
||||||
|
private List<SeparateRespInfoList> separateRespInfoList;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class SeparateRespInfoList {
|
||||||
|
/**
|
||||||
|
* 分账订单标题
|
||||||
|
*/
|
||||||
|
private String body;
|
||||||
|
/**
|
||||||
|
* 分账D0标识
|
||||||
|
*/
|
||||||
|
private String isD0;
|
||||||
|
/**
|
||||||
|
* 分账收款方商户号
|
||||||
|
*/
|
||||||
|
private String receiveMchtCode;
|
||||||
|
/**
|
||||||
|
* 当前分账单已退款金额总计
|
||||||
|
*/
|
||||||
|
private Long refundAmountSum;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金金额
|
||||||
|
*/
|
||||||
|
private Long sepaFeeAmount;
|
||||||
|
/**
|
||||||
|
* 分账手续费承担本金比例
|
||||||
|
*/
|
||||||
|
private Long sepaFeeRatio;
|
||||||
|
/**
|
||||||
|
* 分账平台应结金额
|
||||||
|
*/
|
||||||
|
private Long sepaPlatStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账单商户订单号
|
||||||
|
*/
|
||||||
|
private String separateTrade;
|
||||||
|
/**
|
||||||
|
* 分账比例
|
||||||
|
*/
|
||||||
|
private Long sepaRatio;
|
||||||
|
/**
|
||||||
|
* 分账单状态,(处理中、成功、失败、已退款)
|
||||||
|
*/
|
||||||
|
private SepaStatus sepaStatus;
|
||||||
|
/**
|
||||||
|
* 分账单状态说明
|
||||||
|
*/
|
||||||
|
private String sepaStatusDesc;
|
||||||
|
/**
|
||||||
|
* 分账实际结算金额
|
||||||
|
*/
|
||||||
|
private Long sepaStlmAmount;
|
||||||
|
/**
|
||||||
|
* 分账金额
|
||||||
|
*/
|
||||||
|
private Long sepaTransAmount;
|
||||||
|
/**
|
||||||
|
* 分账订单描述
|
||||||
|
*/
|
||||||
|
private String subject;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.separate.query.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询分账响应体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SeparateQueryRespBody {
|
||||||
|
/**
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private CancelQueryRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.notice.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req.Promo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp.*;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易结果通知请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class TradeNoticeReqBody {
|
||||||
|
/**
|
||||||
|
* ali业务参数
|
||||||
|
*/
|
||||||
|
private AliQueryRespParamInfoVO aliRespParamInfo;
|
||||||
|
/**
|
||||||
|
* toC营销信息
|
||||||
|
*/
|
||||||
|
private List<MarketingParamInfo> marketingRespParamInfoList;
|
||||||
|
/**
|
||||||
|
* toB营销信息
|
||||||
|
*/
|
||||||
|
private List<Promo> promos;
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
private QrRespParamInfoVO qrRespParamInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private TradeQueryRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息,规则详见F.1
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
/**
|
||||||
|
* 风险控制信息
|
||||||
|
*/
|
||||||
|
private RiskInfo riskParamInfo;
|
||||||
|
/**
|
||||||
|
* 清算信息
|
||||||
|
*/
|
||||||
|
private SettleRespParamInfo settleRespParamInfo;
|
||||||
|
/**
|
||||||
|
* wx业务参数
|
||||||
|
*/
|
||||||
|
private WxQueryRespParamInfoVO wxRespParamInfo;
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.req;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.PayInfo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.ReqInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易查询请求体
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class TradeQueryReqBody {
|
||||||
|
/**
|
||||||
|
* 请求方信息
|
||||||
|
*/
|
||||||
|
private ReqInfo reqInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private ReqOrderInfo reqOrderInfo;
|
||||||
|
/**
|
||||||
|
* 支付信息
|
||||||
|
*/
|
||||||
|
private PayInfo payInfo;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class ReqOrderInfo {
|
||||||
|
/**
|
||||||
|
* 商户订单号,要唯一,代表本次请求
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 原商户交易的orgTrace,需要查询哪笔交易,就传那笔交易的orgTrace
|
||||||
|
*/
|
||||||
|
private String oriOrgTrace;
|
||||||
|
/**
|
||||||
|
* 原订单outTrace,oriOrgTrace与oriOutTrace二选一必填
|
||||||
|
*/
|
||||||
|
private String oriOutTrace;
|
||||||
|
/**
|
||||||
|
* 原商户交易日期,yyyyMMdd
|
||||||
|
*/
|
||||||
|
private String oriTransDate;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,206 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class AliQueryRespParamInfoVO {
|
||||||
|
/**
|
||||||
|
* 支付宝店铺编号 支付宝支付能力出现
|
||||||
|
*/
|
||||||
|
private String alipayStoreId;
|
||||||
|
/**
|
||||||
|
* 买家的支付宝唯一用户号
|
||||||
|
*/
|
||||||
|
private String buyerId;
|
||||||
|
/**
|
||||||
|
* 买方登录ID
|
||||||
|
*/
|
||||||
|
private String buyerLogonId;
|
||||||
|
/**
|
||||||
|
* 费率活动标识
|
||||||
|
*/
|
||||||
|
private String chargeFlags;
|
||||||
|
/**
|
||||||
|
* 支付货币类型 默认人民 币: CNY,网联微信&银联微信,必填;网联支付宝&银联支付宝,选填,币种
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
private AliDiscountsInfoVO discountsInfo;
|
||||||
|
/**
|
||||||
|
* 交易额外信息 网联支付宝渠道出现 特殊场景下与支付宝约定返回。 json字符串
|
||||||
|
*/
|
||||||
|
private String extInfos;
|
||||||
|
private List<FundBillVO> fundBillList;
|
||||||
|
private HbFqPayInfo hbFqPayInfo;
|
||||||
|
/**
|
||||||
|
* 行业特殊信息 支付宝能力出现( 例如在医保卡 支付业务中, 向用户返回医疗信息)
|
||||||
|
*/
|
||||||
|
private String industrySepcDetail;
|
||||||
|
/**
|
||||||
|
* 结算币种兑换标价币种汇率
|
||||||
|
*/
|
||||||
|
private String settleTransRate;
|
||||||
|
/**
|
||||||
|
* 商户门店编号 支付宝支付能力出现
|
||||||
|
*/
|
||||||
|
private String storeId;
|
||||||
|
/**
|
||||||
|
* 发生支付交易的商户门店名称
|
||||||
|
*/
|
||||||
|
private String storeName;
|
||||||
|
/**
|
||||||
|
* 商户机具终端编号 银联支付宝支付能力出现
|
||||||
|
*/
|
||||||
|
private String terminalId;
|
||||||
|
/**
|
||||||
|
* 标价币种兑换支付币种汇率
|
||||||
|
*/
|
||||||
|
private String transPayRate;
|
||||||
|
/**
|
||||||
|
* 买家名称 银联支付宝支付能力出现
|
||||||
|
*/
|
||||||
|
private String userName;
|
||||||
|
/**
|
||||||
|
* 买家用户类型
|
||||||
|
*/
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class AliDiscountsInfoVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商家优惠金额
|
||||||
|
*/
|
||||||
|
private Long mchtDiscountAmount;
|
||||||
|
/**
|
||||||
|
* 平台优惠金额
|
||||||
|
*/
|
||||||
|
private Long platDiscountAmount;
|
||||||
|
/**
|
||||||
|
* 优惠信息
|
||||||
|
*/
|
||||||
|
private List<AliDiscountsDetailVO> promotionDetail;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class FundBillVO {
|
||||||
|
/**
|
||||||
|
* 该支付工具类型所使用的金额
|
||||||
|
*/
|
||||||
|
private Long amount;
|
||||||
|
/**
|
||||||
|
* 银行卡支付时的银行代码
|
||||||
|
*/
|
||||||
|
private String bankCode;
|
||||||
|
/**
|
||||||
|
* 交易使用的资金渠道
|
||||||
|
*/
|
||||||
|
private String fundChannel;
|
||||||
|
/**
|
||||||
|
* 渠道所使用的资金类型
|
||||||
|
*/
|
||||||
|
private String fundType;
|
||||||
|
/**
|
||||||
|
* 渠道实际付款金额
|
||||||
|
*/
|
||||||
|
private Long realAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class HbFqPayInfo {
|
||||||
|
/**
|
||||||
|
* 分期金额
|
||||||
|
*/
|
||||||
|
private Long fqAmount;
|
||||||
|
/**
|
||||||
|
* 花呗分期数
|
||||||
|
*/
|
||||||
|
private Long hbFqNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class AliDiscountsDetailVO {
|
||||||
|
/**
|
||||||
|
* 活动ID
|
||||||
|
*/
|
||||||
|
private String activityId;
|
||||||
|
/**
|
||||||
|
* 优惠券面额
|
||||||
|
*/
|
||||||
|
private Long amount;
|
||||||
|
/**
|
||||||
|
* 优惠券备注信息
|
||||||
|
*/
|
||||||
|
private String memo;
|
||||||
|
/**
|
||||||
|
* 商户出资
|
||||||
|
*/
|
||||||
|
private Long merchantContribute;
|
||||||
|
/**
|
||||||
|
* 优惠名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 其他出资方出资金额
|
||||||
|
*/
|
||||||
|
private Long otherContribute;
|
||||||
|
/**
|
||||||
|
* 其他出资
|
||||||
|
*/
|
||||||
|
private List<OtherContribute> otherContributeDetails;
|
||||||
|
/**
|
||||||
|
* 券ID
|
||||||
|
*/
|
||||||
|
private String promotionId;
|
||||||
|
/**
|
||||||
|
* 如果使用的这张券是用户购买的,则该字段代表用户在购买这张券时平台优惠的金额
|
||||||
|
*/
|
||||||
|
private Long purchaseAntContribute;
|
||||||
|
/**
|
||||||
|
* 如果使用的这张券是用户购买的,则该字段代表用户在购买这张券时用户实际付款的金额
|
||||||
|
*/
|
||||||
|
private Long purchaseBuyerContribute;
|
||||||
|
/**
|
||||||
|
* 如果使用的这张券是用户购买的,则该字段代表用户在购买这张券时商户优惠的金额
|
||||||
|
*/
|
||||||
|
private Long purchaseMerchanCcontribute;
|
||||||
|
/**
|
||||||
|
* 优惠类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class OtherContribute {
|
||||||
|
/**
|
||||||
|
* 出资金额
|
||||||
|
*/
|
||||||
|
private Long contributeAmount;
|
||||||
|
/**
|
||||||
|
* 出资类型
|
||||||
|
*/
|
||||||
|
private String contributeType;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 营销单返回
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class MarketingParamInfo {
|
||||||
|
/**
|
||||||
|
* 活动id
|
||||||
|
*/
|
||||||
|
private Double activityId;
|
||||||
|
/**
|
||||||
|
* 营销币种
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 营销业务场景码
|
||||||
|
*/
|
||||||
|
private String marketingBusinessSceneCode;
|
||||||
|
/**
|
||||||
|
* 营销支付能力编号
|
||||||
|
*/
|
||||||
|
private String marketingPayAbilityCode;
|
||||||
|
/**
|
||||||
|
* 营销支付方式编号
|
||||||
|
*/
|
||||||
|
private String marketingPayMethodCode;
|
||||||
|
/**
|
||||||
|
* 营销报名id
|
||||||
|
*/
|
||||||
|
private Double registrationId;
|
||||||
|
/**
|
||||||
|
* 收银台营销请求扩展信息
|
||||||
|
*/
|
||||||
|
private Map<String, Map<String, Object>> respMarketingExtInfo;
|
||||||
|
/**
|
||||||
|
* 营销金额
|
||||||
|
*/
|
||||||
|
private Double transAmount;
|
||||||
|
private String upOrderNo;
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子单返回信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class MergeOrderSubRespList {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单币种,默认CNY
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 延时结算标识
|
||||||
|
*/
|
||||||
|
private String delaySettleFlag;
|
||||||
|
/**
|
||||||
|
* 秒到标识
|
||||||
|
*/
|
||||||
|
private String patnerSettleFlag;
|
||||||
|
/**
|
||||||
|
* 分账标识
|
||||||
|
*/
|
||||||
|
private String splitSettleFlag;
|
||||||
|
/**
|
||||||
|
* 子单请求流水号
|
||||||
|
*/
|
||||||
|
private String subOrgTrace;
|
||||||
|
/**
|
||||||
|
* 订单金额
|
||||||
|
*/
|
||||||
|
private String transAmount;
|
||||||
|
/**
|
||||||
|
* 交易状态码
|
||||||
|
*/
|
||||||
|
private String transState;
|
||||||
|
/**
|
||||||
|
* 交易状态说明
|
||||||
|
*/
|
||||||
|
private String transStatusDesc;
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class QrRespParamInfoVO {
|
||||||
|
|
||||||
|
private List<QrDiscountsDetailVO> discountsInfo;
|
||||||
|
/**
|
||||||
|
* QrPayerInfoInner
|
||||||
|
*/
|
||||||
|
private QrPayerInfo qrPayerInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class QrDiscountsDetailVO {
|
||||||
|
/**
|
||||||
|
* 活动id
|
||||||
|
*/
|
||||||
|
private String activityId;
|
||||||
|
/**
|
||||||
|
* 附件信息
|
||||||
|
*/
|
||||||
|
private String addnInfo;
|
||||||
|
/**
|
||||||
|
* 金额
|
||||||
|
*/
|
||||||
|
private Long amount;
|
||||||
|
/**
|
||||||
|
* 项目发行,发行优惠活动的平台或机构,取值如下:
|
||||||
|
* 银联卡券平台:固定填写KQPT
|
||||||
|
* 付款方:填写8 位付款方机构代码
|
||||||
|
*/
|
||||||
|
private String issuerId;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 营销活动id
|
||||||
|
*/
|
||||||
|
private String promotionId;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class QrPayerInfo {
|
||||||
|
/**
|
||||||
|
* 卡号
|
||||||
|
*/
|
||||||
|
private String accNo;
|
||||||
|
/**
|
||||||
|
* 账户类型
|
||||||
|
*/
|
||||||
|
private String acctClass;
|
||||||
|
/**
|
||||||
|
* 卡属性,01 – 借记卡
|
||||||
|
* 02 – 贷记卡(含准贷记卡)
|
||||||
|
*/
|
||||||
|
private String cardAttr;
|
||||||
|
/**
|
||||||
|
* 证件号码,可选
|
||||||
|
* 取证件号后6 位数字,
|
||||||
|
* 再左补0 到与原证件号
|
||||||
|
* 相同长度
|
||||||
|
*/
|
||||||
|
private String certifId;
|
||||||
|
/**
|
||||||
|
* 证件类型
|
||||||
|
*/
|
||||||
|
private String certifTp;
|
||||||
|
/**
|
||||||
|
* cvn2
|
||||||
|
*/
|
||||||
|
private String cvn2;
|
||||||
|
/**
|
||||||
|
* 卡有效期
|
||||||
|
*/
|
||||||
|
private String expired;
|
||||||
|
/**
|
||||||
|
* 付款方机构代码,代表付款方机构。
|
||||||
|
*/
|
||||||
|
private String issCode;
|
||||||
|
/**
|
||||||
|
* 手机号,必选
|
||||||
|
* 银行卡预留手机号码,
|
||||||
|
* 11 位,不包括+86 等信
|
||||||
|
* 息。银联将根据综合情
|
||||||
|
* 况决定是否送发卡行
|
||||||
|
* 验证
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 付款银行信息
|
||||||
|
*/
|
||||||
|
private String payerBankInfo;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风险控制信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RiskInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端IP
|
||||||
|
* 绑卡设备(付款 APP)所在的公网 IP,可用于
|
||||||
|
* 定位所属地区,不是 wifi 连接时的局域网 IP。
|
||||||
|
* 局域网 IP 包括:
|
||||||
|
* A 类:10.0.0.0-10.255.255.255
|
||||||
|
* B 类:172.16.0.0-172.31.255.255
|
||||||
|
* C 类:192.168.0.0-192.168.255.255
|
||||||
|
*/
|
||||||
|
private String terminalIp;
|
||||||
|
/**
|
||||||
|
* 终端位置 (付款 APP)设备 GPS 位置,格式为纬度/经度, +表示北纬、东经,-表示南纬、西经
|
||||||
|
*/
|
||||||
|
private String terminalLocation;
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清算信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class SettleRespParamInfo {
|
||||||
|
/**
|
||||||
|
* 延迟结算标识,(1:是 0:否)
|
||||||
|
*/
|
||||||
|
private String delaySettleFlag;
|
||||||
|
/**
|
||||||
|
* D0标识,(1:是 0:否)
|
||||||
|
*/
|
||||||
|
private String patnerSettleFlag;
|
||||||
|
/**
|
||||||
|
* 分账标识,(1:交易后分账 2:交易中分账 0:非分账交易)
|
||||||
|
*/
|
||||||
|
private String splitSettleFlag;
|
||||||
|
/**
|
||||||
|
* 手续费金额
|
||||||
|
*/
|
||||||
|
private Long fee;
|
||||||
|
/**
|
||||||
|
* 清算金额,含手续费的金额
|
||||||
|
*/
|
||||||
|
private Long settleAmt;
|
||||||
|
/**
|
||||||
|
* 结算金额,单位分.扣除手续费后的金额
|
||||||
|
*/
|
||||||
|
private Long finalAmt;
|
||||||
|
/**
|
||||||
|
* 支付完成/清算 日期,yyMMdd
|
||||||
|
*/
|
||||||
|
private String settleDate;
|
||||||
|
/**
|
||||||
|
* 支付完成/清算时间,HHMMSS
|
||||||
|
*/
|
||||||
|
private String settleTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.jsapi.req.Promo;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.RespStateInfo;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易查询响应
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class TradeQueryRespBody {
|
||||||
|
/**
|
||||||
|
* ali业务参数
|
||||||
|
*/
|
||||||
|
private AliQueryRespParamInfoVO aliRespParamInfo;
|
||||||
|
/**
|
||||||
|
* toC营销信息
|
||||||
|
*/
|
||||||
|
private List<MarketingParamInfo> marketingRespParamInfoList;
|
||||||
|
/**
|
||||||
|
* 子单返回信息
|
||||||
|
*/
|
||||||
|
private MergeOrderSubRespList mergeOrderSubRespList;
|
||||||
|
/**
|
||||||
|
* toB营销信息
|
||||||
|
*/
|
||||||
|
private List<Promo> promos;
|
||||||
|
/**
|
||||||
|
* 银联业务参数
|
||||||
|
*/
|
||||||
|
private QrRespParamInfoVO qrRespParamInfo;
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
private TradeQueryRespOrderInfo respOrderInfo;
|
||||||
|
/**
|
||||||
|
* 返回码信息,规则详见F.1
|
||||||
|
*/
|
||||||
|
private RespStateInfo respStateInfo;
|
||||||
|
/**
|
||||||
|
* 风险控制信息
|
||||||
|
*/
|
||||||
|
private RiskInfo riskParamInfo;
|
||||||
|
/**
|
||||||
|
* 清算信息
|
||||||
|
*/
|
||||||
|
private SettleRespParamInfo settleRespParamInfo;
|
||||||
|
/**
|
||||||
|
* wx业务参数
|
||||||
|
*/
|
||||||
|
private WxQueryRespParamInfoVO wxRespParamInfo;
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基础订单信息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class TradeQueryRespOrderInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 付款卡类型,详见F.9
|
||||||
|
*/
|
||||||
|
private String cardType;
|
||||||
|
/**
|
||||||
|
* 支付完成日期
|
||||||
|
*/
|
||||||
|
private String dateEnd;
|
||||||
|
/**
|
||||||
|
* 商户订单号,商户生成请求易生的流水号
|
||||||
|
*/
|
||||||
|
private String orgTrace;
|
||||||
|
/**
|
||||||
|
* 易生订单号,易生生成后上送渠道的订单号
|
||||||
|
*/
|
||||||
|
private String outTrace;
|
||||||
|
/**
|
||||||
|
* 实际付款金额,用户实付金额,与订单是否参与渠道优惠活动有关。比如当订单发起金额1000,参加渠道用户减免100,实际付款金额为900。
|
||||||
|
*/
|
||||||
|
private Long payAmount;
|
||||||
|
/**
|
||||||
|
* 渠道订单号,渠道生成返回给易生的订单号,例如微信、支付宝订单号
|
||||||
|
*/
|
||||||
|
private String pcTrace;
|
||||||
|
/**
|
||||||
|
* 产品订单号
|
||||||
|
*/
|
||||||
|
private String productTrace;
|
||||||
|
/**
|
||||||
|
* 已退款金额总额
|
||||||
|
*/
|
||||||
|
private Long refundAmountSum;
|
||||||
|
/**
|
||||||
|
* 已分账金额总额
|
||||||
|
*/
|
||||||
|
private Long separateAmountSum;
|
||||||
|
/**
|
||||||
|
* 应结订单金额,上游渠道清算金额,与订单是否参与上游渠道优惠活动有关。
|
||||||
|
* 1、假如一笔微信订单1000,参与了微信的满减1000-100,比如由银行出资,微信会按1000给我们结算,这个应结金额=1000。
|
||||||
|
* 2、假如一笔微信订单1000,由商户自己在微信那边配了营销活动,且配的是从商户的结算款扣除营销款,这时候微信按900来款,应结金额=900
|
||||||
|
*/
|
||||||
|
private Long stlmAmount;
|
||||||
|
/**
|
||||||
|
* 已结算金额总额
|
||||||
|
*/
|
||||||
|
private Long stlmAmountSum;
|
||||||
|
/**
|
||||||
|
* 支付完成/清算时间
|
||||||
|
*/
|
||||||
|
private String timeEnd;
|
||||||
|
/**
|
||||||
|
* 交易金额
|
||||||
|
*/
|
||||||
|
private Long transAmount;
|
||||||
|
/**
|
||||||
|
* 银联订单号,银联生成并返回给易生的订单号
|
||||||
|
*/
|
||||||
|
private String unTrace;
|
||||||
|
/**
|
||||||
|
* 用户唯一编码
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
}
|
@ -0,0 +1,135 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.bo.easypay.trade.query.resp;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* wx业务参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class WxQueryRespParamInfoVO {
|
||||||
|
/**
|
||||||
|
* 附加信息
|
||||||
|
*/
|
||||||
|
private String attach;
|
||||||
|
/**
|
||||||
|
* 付款银行类型
|
||||||
|
*/
|
||||||
|
private String cardIssuerCode;
|
||||||
|
/**
|
||||||
|
* 用户标识, 微信在易生appid下面openid
|
||||||
|
*/
|
||||||
|
private String openId;
|
||||||
|
/**
|
||||||
|
* 子商户openId
|
||||||
|
*/
|
||||||
|
private String subOpenId;
|
||||||
|
/**
|
||||||
|
* 优惠信息
|
||||||
|
*/
|
||||||
|
private WxDiscountsInfoVO wxDiscountsInfo;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class WxDiscountsInfoVO {
|
||||||
|
/**
|
||||||
|
* 代金券金额
|
||||||
|
*/
|
||||||
|
private Long couponAmount;
|
||||||
|
/**
|
||||||
|
* 优惠详细信息
|
||||||
|
*/
|
||||||
|
private List<WxDiscountsDetailVO> discountsInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class WxDiscountsDetailVO {
|
||||||
|
/**
|
||||||
|
* 活动ID
|
||||||
|
*/
|
||||||
|
private String activityId;
|
||||||
|
/**
|
||||||
|
* 优惠券面额
|
||||||
|
*/
|
||||||
|
private Long amount;
|
||||||
|
/**
|
||||||
|
* 优惠币种
|
||||||
|
*/
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 单品列表
|
||||||
|
*/
|
||||||
|
private GoodsDetailRespVO goodsDetail;
|
||||||
|
/**
|
||||||
|
* 商户出资
|
||||||
|
*/
|
||||||
|
private Long merchantContribute;
|
||||||
|
/**
|
||||||
|
* 优惠名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 其他出资方出资金额
|
||||||
|
*/
|
||||||
|
private Long otherContribute;
|
||||||
|
/**
|
||||||
|
* 券ID
|
||||||
|
*/
|
||||||
|
private String promotionId;
|
||||||
|
/**
|
||||||
|
* 优惠范围
|
||||||
|
*/
|
||||||
|
private String scope;
|
||||||
|
/**
|
||||||
|
* 优惠类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
/**
|
||||||
|
* 微信出资
|
||||||
|
*/
|
||||||
|
private Long wxpayContribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public static class GoodsDetailRespVO {
|
||||||
|
/**
|
||||||
|
* 商品优惠金额 ,单位为:分
|
||||||
|
*/
|
||||||
|
private Long discountAmount;
|
||||||
|
/**
|
||||||
|
* 商品编号
|
||||||
|
*/
|
||||||
|
private String goodsId;
|
||||||
|
/**
|
||||||
|
* 商品名称
|
||||||
|
*/
|
||||||
|
private String goodsName;
|
||||||
|
/**
|
||||||
|
* 商品备注
|
||||||
|
*/
|
||||||
|
private String goodsRemark;
|
||||||
|
/**
|
||||||
|
* 商品单价 单位为分
|
||||||
|
*/
|
||||||
|
private Long price;
|
||||||
|
/**
|
||||||
|
* 商品数量
|
||||||
|
*/
|
||||||
|
private Long quantity;
|
||||||
|
}
|
||||||
|
}
|
@ -15,7 +15,7 @@ import java.math.BigDecimal;
|
|||||||
*/
|
*/
|
||||||
@Builder(toBuilder = true)
|
@Builder(toBuilder = true)
|
||||||
@Data
|
@Data
|
||||||
public class YishengAccountVO {
|
public class EasypayAccountVO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.wzj.soopin.transaction.domain.vo;
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.enums.easypay.PayType;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class EasypayPrePayVO {
|
||||||
|
|
||||||
|
private PayType payType;
|
||||||
|
|
||||||
|
private WxPrePayParamInfo wxPrePayParamInfo;
|
||||||
|
|
||||||
|
private String tradeNo;
|
||||||
|
|
||||||
|
private String QrRedirectUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信网页或小程序中拉起支付的参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class WxPrePayParamInfo {
|
||||||
|
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
|
||||||
|
private String timeStamp;
|
||||||
|
|
||||||
|
|
||||||
|
private String nonceStr;
|
||||||
|
|
||||||
|
|
||||||
|
private String signType;
|
||||||
|
|
||||||
|
|
||||||
|
private String paySign;
|
||||||
|
|
||||||
|
|
||||||
|
private String prepayId;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附加手续费计算方式
|
||||||
|
*
|
||||||
|
* 手续费计算方式
|
||||||
|
*
|
||||||
|
* 手续费费用类型
|
||||||
|
*
|
||||||
|
* 是否允许退货
|
||||||
|
*/
|
||||||
|
public enum AddCalcType {
|
||||||
|
THE_0, THE_1;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
return switch (this) {
|
||||||
|
case THE_0 -> "0";
|
||||||
|
case THE_1 -> "1";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AddCalcType forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "0" -> THE_0;
|
||||||
|
case "1" -> THE_1;
|
||||||
|
default -> throw new IOException("Cannot deserialize AddCalcType");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结算周期
|
||||||
|
*/
|
||||||
|
public enum BillingCycle {
|
||||||
|
|
||||||
|
D0, D1, DD, T1;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
return switch (this) {
|
||||||
|
case D0 -> "D0";
|
||||||
|
case D1 -> "D1";
|
||||||
|
case DD -> "DD";
|
||||||
|
case T1 -> "T1";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BillingCycle forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "D0" -> D0;
|
||||||
|
case "D1" -> D1;
|
||||||
|
case "DD" -> DD;
|
||||||
|
case "T1" -> T1;
|
||||||
|
default -> throw new IOException("Cannot deserialize BillingCycle");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 卡类型
|
||||||
|
*/
|
||||||
|
public enum CardType {
|
||||||
|
|
||||||
|
THE_000_C, THE_000_D, THE_000_U, XXXX;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
return switch (this) {
|
||||||
|
case THE_000_C -> "000C";
|
||||||
|
case THE_000_D -> "000D";
|
||||||
|
case THE_000_U -> "000U";
|
||||||
|
case XXXX -> "XXXX";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CardType forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "000C" -> THE_000_C;
|
||||||
|
case "000D" -> THE_000_D;
|
||||||
|
case "000U" -> THE_000_U;
|
||||||
|
case "XXXX" -> XXXX;
|
||||||
|
default -> throw new IOException("Cannot deserialize CardType");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 延时结算标识
|
||||||
|
*
|
||||||
|
* 分账D0标识,D0需提前开通
|
||||||
|
*
|
||||||
|
* 分账D0标识
|
||||||
|
*
|
||||||
|
* D0标识
|
||||||
|
*/
|
||||||
|
public enum DelaySettleFlag {
|
||||||
|
|
||||||
|
THE_0, THE_1;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case THE_0 -> {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
case THE_1 -> {
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DelaySettleFlag forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "0" -> THE_0;
|
||||||
|
case "1" -> THE_1;
|
||||||
|
default -> throw new IOException("Cannot deserialize DelaySettleFlag");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手续费处理模式
|
||||||
|
*/
|
||||||
|
|
||||||
|
public enum FeeType {
|
||||||
|
|
||||||
|
EARNING_EXPENSE, NETTING, OFFLINE;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
return switch (this) {
|
||||||
|
case EARNING_EXPENSE -> "EARNING_EXPENSE";
|
||||||
|
case NETTING -> "NETTING";
|
||||||
|
case OFFLINE -> "OFFLINE";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FeeType forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "EARNING_EXPENSE" -> EARNING_EXPENSE;
|
||||||
|
case "NETTING" -> NETTING;
|
||||||
|
case "OFFLINE" -> OFFLINE;
|
||||||
|
default -> throw new IOException("Cannot deserialize FeeType");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名支付验证标识
|
||||||
|
*/
|
||||||
|
public enum IDCheckIn {
|
||||||
|
|
||||||
|
EMPTY, THE_0, THE_1, THE_2;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case EMPTY -> {
|
||||||
|
return "其他";
|
||||||
|
}
|
||||||
|
case THE_0 -> {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
case THE_1 -> {
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
case THE_2 -> {
|
||||||
|
return "2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IDCheckIn forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "其他" -> EMPTY;
|
||||||
|
case "0" -> THE_0;
|
||||||
|
case "1" -> THE_1;
|
||||||
|
case "2" -> THE_2;
|
||||||
|
default -> throw new IOException("Cannot deserialize IDCheckIn");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 禁用支付渠道
|
||||||
|
*/
|
||||||
|
public enum LimitCreditPay {
|
||||||
|
|
||||||
|
CREDIT_CARD, DEBIT_CARD;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case CREDIT_CARD -> {
|
||||||
|
return "creditCard";
|
||||||
|
}
|
||||||
|
case DEBIT_CARD -> {
|
||||||
|
return "debitCard";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LimitCreditPay forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "creditCard" -> CREDIT_CARD;
|
||||||
|
case "debitCard" -> DEBIT_CARD;
|
||||||
|
default -> throw new IOException("Cannot deserialize LimitCreditPay");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* D0标识,0: 非D0交易,即按进件商户开通功能结算周期结算
|
||||||
|
* 1: D0交易,商户需开通了D0,且此字段送1时,会d0到账
|
||||||
|
* 默认值0
|
||||||
|
*/
|
||||||
|
public enum PatnerSettleFlag {
|
||||||
|
|
||||||
|
EMPTY, THE_0, THE_1;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case EMPTY: return "";
|
||||||
|
case THE_0: return "0";
|
||||||
|
case THE_1: return "1";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PatnerSettleFlag forValue(String value) throws IOException {
|
||||||
|
if (value.equals("")) return EMPTY;
|
||||||
|
if (value.equals("0")) return THE_0;
|
||||||
|
if (value.equals("1")) return THE_1;
|
||||||
|
throw new IOException("Cannot deserialize PatnerSettleFlag");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付方式,payType=UnionPayJsMini时必填
|
||||||
|
*/
|
||||||
|
public enum PayChannel {
|
||||||
|
|
||||||
|
THE_01, THE_02;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case THE_01 -> {
|
||||||
|
return "01";
|
||||||
|
}
|
||||||
|
case THE_02 -> {
|
||||||
|
return "02";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PayChannel forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "01" -> THE_01;
|
||||||
|
case "02" -> THE_02;
|
||||||
|
default -> throw new IOException("Cannot deserialize PayChannel");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付方式
|
||||||
|
*/
|
||||||
|
public enum PayType {
|
||||||
|
|
||||||
|
ALI_PAY_JSAPI,
|
||||||
|
ALI_PAY_MINI_APP,
|
||||||
|
UNION_PAY_JSAPI,
|
||||||
|
UNION_PAY_Js_MINI,
|
||||||
|
WE_CHAT_MINI_APP,
|
||||||
|
WE_CHAT_JSAPI;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case ALI_PAY_JSAPI -> {
|
||||||
|
return "AliPayJsapi";
|
||||||
|
}
|
||||||
|
case ALI_PAY_MINI_APP -> {
|
||||||
|
return "AliPayMiniApp";
|
||||||
|
}
|
||||||
|
case UNION_PAY_JSAPI -> {
|
||||||
|
return "UnionPayJsapi";
|
||||||
|
}
|
||||||
|
case UNION_PAY_Js_MINI -> {
|
||||||
|
return "UnionPayJsMini";
|
||||||
|
}
|
||||||
|
case WE_CHAT_JSAPI -> {
|
||||||
|
return "WeChatJsapi";
|
||||||
|
}
|
||||||
|
case WE_CHAT_MINI_APP -> {
|
||||||
|
return "WeChatMiniApp";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PayType forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "AliPayJsapi" -> ALI_PAY_JSAPI;
|
||||||
|
case "AliPayMiniApp" -> ALI_PAY_MINI_APP;
|
||||||
|
case "UnionPayJsapi" -> UNION_PAY_JSAPI;
|
||||||
|
case "UnionPayJsMini" -> UNION_PAY_Js_MINI;
|
||||||
|
case "WeChatJsapi" -> WE_CHAT_JSAPI;
|
||||||
|
case "WeChatMiniApp" -> WE_CHAT_MINI_APP;
|
||||||
|
default -> throw new IOException("Cannot deserialize PayType");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二维码类型,payType=UnionPayJsapi、UnionPayJsMini时必填。
|
||||||
|
*/
|
||||||
|
public enum QrCodeType {
|
||||||
|
|
||||||
|
EMPTY, THE_0, THE_1;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case EMPTY -> {
|
||||||
|
return "其他";
|
||||||
|
}
|
||||||
|
case THE_0 -> {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
case THE_1 -> {
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static QrCodeType forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "其他" -> EMPTY;
|
||||||
|
case "0" -> THE_0;
|
||||||
|
case "1" -> THE_1;
|
||||||
|
default -> throw new IOException("Cannot deserialize QrCodeType");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账单状态,(处理中、成功、失败、已退款)
|
||||||
|
*/
|
||||||
|
public enum SepaStatus {
|
||||||
|
PENDING, REFUNDED, SUCCESS;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
return switch (this) {
|
||||||
|
case PENDING -> "PENDING";
|
||||||
|
case REFUNDED -> "REFUNDED";
|
||||||
|
case SUCCESS -> "SUCCESS";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SepaStatus forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "PENDING" -> PENDING;
|
||||||
|
case "REFUNDED" -> REFUNDED;
|
||||||
|
case "SUCCESS" -> SUCCESS;
|
||||||
|
default -> throw new IOException("Cannot deserialize SepaStatus");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用类型
|
||||||
|
*/
|
||||||
|
public enum SpecialTag {
|
||||||
|
|
||||||
|
THE_2301, THE_2302, THE_2303, THE_2304;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case THE_2301: return "2301";
|
||||||
|
case THE_2302: return "2302";
|
||||||
|
case THE_2303: return "2303";
|
||||||
|
case THE_2304: return "2304";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SpecialTag forValue(String value) throws IOException {
|
||||||
|
if (value.equals("2301")) return THE_2301;
|
||||||
|
if (value.equals("2302")) return THE_2302;
|
||||||
|
if (value.equals("2303")) return THE_2303;
|
||||||
|
if (value.equals("2304")) return THE_2304;
|
||||||
|
throw new IOException("Cannot deserialize SpecialTag");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账标识,与主单分账标识互斥,不能同时上送1
|
||||||
|
*
|
||||||
|
* 分账标识
|
||||||
|
*/
|
||||||
|
public enum SplitSettleFlag {
|
||||||
|
|
||||||
|
THE_0, THE_1, THE_2;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
switch (this) {
|
||||||
|
case THE_0 -> {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
case THE_1 -> {
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
case THE_2 -> {
|
||||||
|
return "2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SplitSettleFlag forValue(String value) throws IOException {
|
||||||
|
return switch (value) {
|
||||||
|
case "0" -> THE_0;
|
||||||
|
case "1" -> THE_1;
|
||||||
|
case "2" -> THE_2;
|
||||||
|
default -> throw new IOException("Cannot deserialize SplitSettleFlag");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.wzj.soopin.transaction.enums.easypay;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交易限制支付类型
|
||||||
|
*/
|
||||||
|
public enum WxLimitPay {
|
||||||
|
NO_CREDIT;
|
||||||
|
|
||||||
|
public String toValue() {
|
||||||
|
if (this == WxLimitPay.NO_CREDIT) {
|
||||||
|
return "no_credit";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WxLimitPay forValue(String value) throws IOException {
|
||||||
|
if (value.equals("no_credit")) {
|
||||||
|
return NO_CREDIT;
|
||||||
|
}
|
||||||
|
throw new IOException("Cannot deserialize WxLimitPay");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.wzj.soopin.transaction.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.PaymentBO;
|
||||||
|
import com.wzj.soopin.transaction.domain.bo.easypay.EasyPayRequest;
|
||||||
|
import com.wzj.soopin.transaction.domain.vo.EasypayAccountVO;
|
||||||
|
import com.wzj.soopin.transaction.domain.vo.EasypayPrePayVO;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.rmi.ServerException;
|
||||||
|
|
||||||
|
public interface IEasypayService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起支付
|
||||||
|
* @param jsApiReqBody
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
EasypayPrePayVO payment(PaymentBO paymentBO) throws ServerException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取易生账户
|
||||||
|
* @param memberId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
EasypayAccountVO getEasypayAccount(Long memberId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提现
|
||||||
|
* @param memberId
|
||||||
|
* @param money
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean withdraw(Long memberId, BigDecimal money);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步会员账户
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean syncMemberAccount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开通商户
|
||||||
|
*/
|
||||||
|
void openMerchant(Long memberId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商户账户
|
||||||
|
*/
|
||||||
|
EasypayAccountVO getMerchantAccount(Long memberId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分账
|
||||||
|
*/
|
||||||
|
boolean split(Long memberId, BigDecimal money);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商户审核通知
|
||||||
|
* */
|
||||||
|
|
||||||
|
boolean merchantAuditNotice(String request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理易生支付结果通知回调
|
||||||
|
* @param request
|
||||||
|
*/
|
||||||
|
void handlerTradeCallback(EasyPayRequest request);
|
||||||
|
}
|
@ -1,52 +0,0 @@
|
|||||||
package com.wzj.soopin.transaction.service;
|
|
||||||
|
|
||||||
|
|
||||||
import com.wzj.soopin.transaction.domain.vo.YishengAccountVO;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
public interface IYishengService {
|
|
||||||
/**
|
|
||||||
* 获取易生账户
|
|
||||||
* @param memberId
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
YishengAccountVO getYishengAccount(Long memberId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提现
|
|
||||||
* @param memberId
|
|
||||||
* @param money
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
boolean withdraw(Long memberId, BigDecimal money);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 同步会员账户
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
boolean syncMemberAccount();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开通商户
|
|
||||||
*/
|
|
||||||
void openMerchant(Long memberId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取商户账户
|
|
||||||
*/
|
|
||||||
YishengAccountVO getMerchantAccount(Long memberId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分账
|
|
||||||
*/
|
|
||||||
boolean split(Long memberId, BigDecimal money);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商户审核通知
|
|
||||||
* */
|
|
||||||
|
|
||||||
boolean merchantAuditNotice(String request);
|
|
||||||
}
|
|
@ -24,7 +24,7 @@ import com.wzj.soopin.transaction.mapper.DivideDetailMapper;
|
|||||||
import com.wzj.soopin.transaction.mapper.DivideMapper;
|
import com.wzj.soopin.transaction.mapper.DivideMapper;
|
||||||
import com.wzj.soopin.transaction.service.IDivideRuleService;
|
import com.wzj.soopin.transaction.service.IDivideRuleService;
|
||||||
import com.wzj.soopin.transaction.service.IDivideService;
|
import com.wzj.soopin.transaction.service.IDivideService;
|
||||||
import com.wzj.soopin.transaction.service.IYishengService;
|
import com.wzj.soopin.transaction.service.IEasypayService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
@ -66,7 +66,7 @@ public class DivideServiceImpl extends ServiceImpl<DivideMapper, Divide> impleme
|
|||||||
|
|
||||||
private final ConfigService configService;
|
private final ConfigService configService;
|
||||||
|
|
||||||
private final IYishengService yishengService;
|
private final IEasypayService easypayService;
|
||||||
|
|
||||||
private final IMemberAccountService accountService;
|
private final IMemberAccountService accountService;
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -9,12 +9,11 @@ import com.wzj.soopin.member.enums.AccountBillChangeTypeEnum;
|
|||||||
import com.wzj.soopin.member.enums.AccountBillSourceEnum;
|
import com.wzj.soopin.member.enums.AccountBillSourceEnum;
|
||||||
import com.wzj.soopin.transaction.enums.WithdrawAuditStatus;
|
import com.wzj.soopin.transaction.enums.WithdrawAuditStatus;
|
||||||
import com.wzj.soopin.transaction.enums.WithdrawStatus;
|
import com.wzj.soopin.transaction.enums.WithdrawStatus;
|
||||||
import com.wzj.soopin.transaction.enums.WithdrawType;
|
|
||||||
import com.wzj.soopin.transaction.mapper.WithdrawMapper;
|
import com.wzj.soopin.transaction.mapper.WithdrawMapper;
|
||||||
import com.wzj.soopin.member.service.*;
|
import com.wzj.soopin.member.service.*;
|
||||||
import com.wzj.soopin.transaction.domain.vo.YishengAccountVO;
|
import com.wzj.soopin.transaction.domain.vo.EasypayAccountVO;
|
||||||
import com.wzj.soopin.transaction.service.IWithdrawService;
|
import com.wzj.soopin.transaction.service.IWithdrawService;
|
||||||
import com.wzj.soopin.transaction.service.IYishengService;
|
import com.wzj.soopin.transaction.service.IEasypayService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
@ -44,7 +43,7 @@ public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> i
|
|||||||
/**
|
/**
|
||||||
* 易生账户充值服务
|
* 易生账户充值服务
|
||||||
*/
|
*/
|
||||||
private final IYishengService yishengService;
|
private final IEasypayService easypayService;
|
||||||
|
|
||||||
private final IAccountBillService accountBillService;
|
private final IAccountBillService accountBillService;
|
||||||
|
|
||||||
@ -58,7 +57,7 @@ public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> i
|
|||||||
throw new RuntimeException("提现申请已处理");
|
throw new RuntimeException("提现申请已处理");
|
||||||
}
|
}
|
||||||
//发起提现
|
//发起提现
|
||||||
boolean chargeSuccess = yishengService.withdraw(withdraw.getMemberId(), withdraw.getMoney());
|
boolean chargeSuccess = easypayService.withdraw(withdraw.getMemberId(), withdraw.getMoney());
|
||||||
if (!chargeSuccess) {
|
if (!chargeSuccess) {
|
||||||
throw new RuntimeException("提现失败");
|
throw new RuntimeException("提现失败");
|
||||||
}
|
}
|
||||||
@ -80,14 +79,14 @@ public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> i
|
|||||||
//从易生取,别用自己计算的
|
//从易生取,别用自己计算的
|
||||||
//// TODO: 2025/6/21 测试的时候用计算的 测试完用易生的
|
//// TODO: 2025/6/21 测试的时候用计算的 测试完用易生的
|
||||||
BigDecimal finalBalance = balance.subtract(withdraw.getMoney());
|
BigDecimal finalBalance = balance.subtract(withdraw.getMoney());
|
||||||
YishengAccountVO yishengAccountVO = yishengService.getYishengAccount(withdraw.getMemberId());
|
EasypayAccountVO easypayAccountVO = easypayService.getEasypayAccount(withdraw.getMemberId());
|
||||||
memberAccountService.updateById(memberAccount.toBuilder().wallet(finalBalance).build());
|
memberAccountService.updateById(memberAccount.toBuilder().wallet(finalBalance).build());
|
||||||
//生成账户变动记录bh
|
//生成账户变动记录bh
|
||||||
AccountBill memberAccountChangeRecord = AccountBill.builder()
|
AccountBill memberAccountChangeRecord = AccountBill.builder()
|
||||||
.accountId(withdraw.getMemberId())
|
.accountId(withdraw.getMemberId())
|
||||||
.moneyBalance(finalBalance)
|
.moneyBalance(finalBalance)
|
||||||
.beforeBalance(balance)
|
.beforeBalance(balance)
|
||||||
.afterBalance(yishengAccountVO.getBalance())
|
.afterBalance(easypayAccountVO.getBalance())
|
||||||
.changeType(AccountBillChangeTypeEnum.OUT.getCode())
|
.changeType(AccountBillChangeTypeEnum.OUT.getCode())
|
||||||
.changeDesc("提现")
|
.changeDesc("提现")
|
||||||
.source(AccountBillSourceEnum.WITHDRAW.getCode()).build();
|
.source(AccountBillSourceEnum.WITHDRAW.getCode()).build();
|
||||||
@ -110,9 +109,9 @@ public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> i
|
|||||||
throw new RuntimeException("用户不存在");
|
throw new RuntimeException("用户不存在");
|
||||||
}
|
}
|
||||||
BigDecimal balance = tenantAccount.getRevenue();
|
BigDecimal balance = tenantAccount.getRevenue();
|
||||||
YishengAccountVO yishengAccountVO = yishengService.getYishengAccount(withdraw.getMemberId());
|
EasypayAccountVO easypayAccountVO = easypayService.getEasypayAccount(withdraw.getMemberId());
|
||||||
|
|
||||||
if (yishengAccountVO == null) {
|
if (easypayAccountVO == null) {
|
||||||
throw new RuntimeException("账户余额获取失败");
|
throw new RuntimeException("账户余额获取失败");
|
||||||
}
|
}
|
||||||
//生成费用
|
//生成费用
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.wzj.soopin.transaction.service.impl;
|
package com.wzj.soopin.transaction.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.text.StrBuilder;
|
||||||
import com.wzj.soopin.transaction.domain.entity.WxAuthResponse;
|
import com.wzj.soopin.transaction.domain.entity.WxAuthResponse;
|
||||||
|
import com.wzj.soopin.transaction.config.WechatMiniProgramConfig;
|
||||||
import com.wzj.soopin.transaction.wechat.WechatPayConfig;
|
import com.wzj.soopin.transaction.wechat.WechatPayConfig;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -14,10 +16,14 @@ public class WxAuthService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private WechatPayConfig wechatPayConfig;
|
private WechatPayConfig wechatPayConfig;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WechatMiniProgramConfig wechatMiniProgramConfig;
|
||||||
|
|
||||||
private RestTemplate restTemplate = new RestTemplate();
|
private RestTemplate restTemplate = new RestTemplate();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过code获取openid
|
* 网页-通过code获取openid
|
||||||
|
*
|
||||||
* @param code 授权码
|
* @param code 授权码
|
||||||
* @return 包含openid的响应对象
|
* @return 包含openid的响应对象
|
||||||
*/
|
*/
|
||||||
@ -34,5 +40,27 @@ public class WxAuthService {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序登录-通过code获取openid
|
||||||
|
*
|
||||||
|
* @param code 授权码
|
||||||
|
* @return 包含openid的响应对象
|
||||||
|
*/
|
||||||
|
public WxAuthResponse getOpenIdByMiniProgramCode(String code) {
|
||||||
|
String url = StrBuilder.create("https://api.weixin.qq.com/sns/jscode2session?appid=")
|
||||||
|
.append(wechatMiniProgramConfig.getAppId())
|
||||||
|
.append("&secret=")
|
||||||
|
.append(wechatMiniProgramConfig.getSecret())
|
||||||
|
.append("&js_code=")
|
||||||
|
.append(code)
|
||||||
|
.append("&grant_type=authorization_code")
|
||||||
|
.toString();
|
||||||
|
WxAuthResponse response = restTemplate.getForObject(url, WxAuthResponse.class);
|
||||||
|
if (response == null || response.getOpenid() == null) {
|
||||||
|
throw new RuntimeException("Failed to get openid from WeChat");
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
package com.wzj.soopin.transaction.service.impl;
|
|
||||||
|
|
||||||
|
|
||||||
import com.wzj.soopin.transaction.domain.vo.YishengAccountVO;
|
|
||||||
import com.wzj.soopin.transaction.service.IYishengService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 会员封禁
|
|
||||||
*
|
|
||||||
* @author zcc
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
|
||||||
public class YishengServiceImpl implements IYishengService {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public YishengAccountVO getYishengAccount(Long memberId) {
|
|
||||||
return YishengAccountVO.builder().balance(new BigDecimal(1000)).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean withdraw(Long memberId, BigDecimal money) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean syncMemberAccount() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openMerchant(Long memberId) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public YishengAccountVO getMerchantAccount(Long memberId) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean split(Long memberId, BigDecimal money) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean merchantAuditNotice(String request) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user