新增 辅助订单实体并对其所有支付实现

This commit is contained in:
egzosn
2021-10-06 23:29:54 +08:00
parent 4d00aae8a9
commit 9db3f5a76d
19 changed files with 371 additions and 393 deletions

View File

@@ -257,6 +257,7 @@ public abstract class BasePayService<PC extends PayConfigStorage> implements Pay
* @param <T> 返回类型
* @return 返回支付方交易关闭后的结果
*/
@Deprecated
@Override
public <T> T close(String tradeNo, String outTradeNo, Callback<T> callback) {
return callback.perform(close(tradeNo, outTradeNo));
@@ -431,7 +432,6 @@ public abstract class BasePayService<PC extends PayConfigStorage> implements Pay
return payBack(new DefaultNoticeRequest(parameterMap, is));
}
/**
* 回调处理
*
@@ -448,31 +448,7 @@ public abstract class BasePayService<PC extends PayConfigStorage> implements Pay
return getPayOutMessage("fail", "失败");
}
PayMessage payMessage = this.createMessage(noticeParams.getBody());
Map<String, Object> context = new HashMap<String, Object>();
for (PayMessageInterceptor interceptor : interceptors) {
if (!interceptor.intercept(payMessage, context, this)) {
return successPayOutMessage(payMessage);
}
}
return getPayMessageHandler().handle(payMessage, context, this);
}
/**
* 使用转换过的参数进行回调处理
*
* @param data 转化后的参数Map
* @return 获得回调响应信息
*/
@Override
public PayOutMessage payBack(Map<String, Object> data) {
if (LOG.isDebugEnabled()) {
LOG.debug("回调响应:" + JSON.toJSONString(data));
}
if (!verify(data)) {
return getPayOutMessage("fail", "失败");
}
PayMessage payMessage = this.createMessage(data);
Map<String, Object> context = new HashMap<String, Object>();
Map<String, Object> context = new HashMap<>();
for (PayMessageInterceptor interceptor : interceptors) {
if (!interceptor.intercept(payMessage, context, this)) {
return successPayOutMessage(payMessage);

View File

@@ -5,8 +5,9 @@ import java.io.InputStream;
import java.util.Date;
import java.util.Map;
import com.egzosn.pay.common.bean.AssistOrder;
import com.egzosn.pay.common.bean.BillType;
import com.egzosn.pay.common.bean.CloseOrder;
import com.egzosn.pay.common.bean.MethodType;
import com.egzosn.pay.common.bean.NoticeParams;
import com.egzosn.pay.common.bean.NoticeRequest;
@@ -67,6 +68,7 @@ public interface PayService<PC extends PayConfigStorage> {
* 已过时方法,详情{@link #verify(NoticeParams)}
* @param params 回调回来的参数集
* @return 签名校验 true通过
* @see #verify(NoticeParams)
*/
@Deprecated
boolean verify(Map<String, Object> params);
@@ -124,6 +126,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param parameterMap 请求参数
* @param is 请求流
* @return 获得回调的请求参数
* @see #getNoticeParams(NoticeRequest)
*/
@Deprecated
Map<String, Object> getParameter2Map(Map<String, String[]> parameterMap, InputStream is);
@@ -199,7 +202,9 @@ public interface PayService<PC extends PayConfigStorage> {
* @param tradeNo 支付平台订单号
* @param outTradeNo 商户单号
* @return 返回查询回来的结果集,支付方原值返回
* @see #query(AssistOrder)
*/
@Deprecated
Map<String, Object> query(String tradeNo, String outTradeNo);
/**
@@ -211,25 +216,38 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 返回查询回来的结果集
*/
@Deprecated
<T> T query(String tradeNo, String outTradeNo, Callback<T> callback);
/**
* 交易查询接口
*
* @param assistOrder 查询条件
* @return 返回查询回来的结果集,支付方原值返回
*/
Map<String, Object> query(AssistOrder assistOrder);
/**
* 交易关闭接口
*
* @param tradeNo 支付平台订单号
* @param outTradeNo 商户单号
* @return 返回支付方交易关闭后的结果
* @see #close(CloseOrder)
* @see #close(AssistOrder)
*/
@Deprecated
Map<String, Object> close(String tradeNo, String outTradeNo);
/**
* 交易关闭接口
*
* @param closeOrder 关闭订单
* @param assistOrder 关闭订单
* @return 返回支付方交易关闭后的结果
*/
Map<String, Object> close(CloseOrder closeOrder);
Map<String, Object> close(AssistOrder assistOrder);
/**
@@ -241,8 +259,10 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 返回支付方交易关闭后的结果
*/
@Deprecated
<T> T close(String tradeNo, String outTradeNo, Callback<T> callback);
/**
* 交易交易撤销
*
@@ -261,6 +281,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 返回支付方交易撤销后的结果
*/
@Deprecated
<T> T cancel(String tradeNo, String outTradeNo, Callback<T> callback);
@@ -280,6 +301,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 返回支付方申请退款后的结果
*/
@Deprecated
<T> T refund(RefundOrder refundOrder, Callback<T> callback);
@@ -299,6 +321,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 返回支付方查询退款后的结果
*/
@Deprecated
<T> T refundquery(RefundOrder refundOrder, Callback<T> callback);
/**
@@ -337,6 +360,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 对应的转账结果
*/
@Deprecated
<T> T transfer(TransferOrder order, Callback<T> callback);
@@ -358,6 +382,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <T> 返回类型
* @return 对应的转账订单
*/
@Deprecated
<T> T transferQuery(String outNo, String tradeNo, Callback<T> callback);
/**
@@ -377,13 +402,7 @@ public interface PayService<PC extends PayConfigStorage> {
*/
PayOutMessage payBack(NoticeRequest request);
/**
* 使用转换过的参数进行回调处理
*
* @param data 转化后的参数Map
* @return 获得回调响应信息
*/
PayOutMessage payBack(Map<String, Object> data);
/**
* 设置支付消息处理器,这里用于处理具体的支付业务
@@ -431,6 +450,7 @@ public interface PayService<PC extends PayConfigStorage> {
* @param <O> 预订单类型
* @return 处理后订单信息
*/
@Deprecated
<O extends PayOrder> Map<String, Object> preOrderHandler(Map<String, Object> orderInfo, O payOrder);
}

View File

@@ -0,0 +1,126 @@
package com.egzosn.pay.common.bean;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.annotation.JSONField;
/**
* 辅助订单实体
*
* @author egan
* <pre>
* email egan@egzosn.com
* date 2021/10/6
* </pre>
*/
public class AssistOrder implements Order {
/**
* 支付平台订单号,交易号
*/
private String tradeNo;
/**
* 商户订单号
*/
private String outTradeNo;
/**
* 交易类型
*/
private TransactionType transactionType;
/**
* 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息,
*/
@JSONField(serialize = false)
private volatile Map<String, Object> attr;
public AssistOrder() {
}
public AssistOrder(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public AssistOrder(String tradeNo, String outTradeNo) {
this.tradeNo = tradeNo;
this.outTradeNo = outTradeNo;
}
public AssistOrder(String tradeNo, TransactionType transactionType) {
this.tradeNo = tradeNo;
this.transactionType = transactionType;
}
/**
* 支付平台订单号,交易号
*
* @return 支付平台订单号, 交易号
*/
public String getTradeNo() {
return tradeNo;
}
/**
* 支付平台订单号,交易号
*
* @param tradeNo 支付平台订单号,交易号
*/
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
/**
* 获取商户订单号
*
* @return 商户订单号
*/
public String getOutTradeNo() {
return outTradeNo;
}
/**
* 设置商户订单号
*
* @param outTradeNo 商户订单号
*/
public void setOutTradeNo(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public TransactionType getTransactionType() {
return transactionType;
}
public void setTransactionType(TransactionType transactionType) {
this.transactionType = transactionType;
}
@Override
public Map<String, Object> getAttrs() {
if (null == attr) {
attr = new HashMap<>();
}
return attr;
}
@Override
public Object getAttr(String key) {
return getAttrs().get(key);
}
/**
* 添加订单信息
*
* @param key key
* @param value 值
*/
@Override
public void addAttr(String key, Object value) {
getAttrs().put(key, value);
}
}

View File

@@ -1,7 +1,5 @@
package com.egzosn.pay.common.bean;
import java.util.Map;
/**
* 关闭订单
* @author Egan
@@ -10,85 +8,7 @@ import java.util.Map;
* date 2021/10/6
* </pre>
*/
public class CloseOrder implements Order {
@Deprecated
public class CloseOrder extends AssistOrder {
/**
* 支付平台订单号,交易号
*/
private String tradeNo;
/**
* 商户单号
*/
private String outTradeNo;
/**
* 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息,
*/
private Map<String, Object> attr;
public CloseOrder() {
}
public CloseOrder(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
/**
* 添加订单信息
*
* @param key key
* @param value 值
*/
@Override
public void addAttr(String key, Object value) {
attr.put(key, value);
}
/**
* 获取属性 这里可用做覆盖已设置的信息属性,订单信息在签名前进行覆盖。
*
* @return 属性
*/
@Override
public Map<String, Object> getAttrs() {
return attr;
}
/**
* 获取属性 这里可用做覆盖已设置的订单信息属性,订单信息在签名前进行覆盖。
*
* @param key 属性名
* @return 属性
*/
@Override
public Object getAttr(String key) {
return attr.get(key);
}
public String getTradeNo() {
return tradeNo;
}
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
public String getOutTradeNo() {
return outTradeNo;
}
public void setOutTradeNo(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public Map<String, Object> getAttr() {
return attr;
}
public void setAttr(Map<String, Object> attr) {
this.attr = attr;
}
}

View File

@@ -1,11 +1,9 @@
package com.egzosn.pay.common.bean;
import com.egzosn.pay.common.util.str.StringUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.egzosn.pay.common.util.str.StringUtils;
/**
* 支付订单信息
@@ -16,7 +14,7 @@ import java.util.Map;
* date 2016/10/19 22:34
* </pre>
*/
public class PayOrder implements Order {
public class PayOrder extends AssistOrder {
/**
* 商品名称
*/
@@ -33,14 +31,7 @@ public class PayOrder implements Order {
* 价格
*/
private BigDecimal price;
/**
* 支付平台订单号,交易号
*/
private String tradeNo;
/**
* 商户订单号
*/
private String outTradeNo;
/**
* 银行卡类型
*/
@@ -63,12 +54,13 @@ public class PayOrder implements Order {
* 微信专用,,,,
* WAP支付链接
*/
@Deprecated
private String wapUrl;
/**
* 微信专用,,,,
* WAP支付网页名称
*/
@Deprecated
private String wapName;
/**
* 用户唯一标识
@@ -76,10 +68,7 @@ public class PayOrder implements Order {
* 支付宝 buyer_id
*/
private String openid;
/**
* 交易类型
*/
private TransactionType transactionType;
/**
* 支付币种
*/
@@ -89,11 +78,6 @@ public class PayOrder implements Order {
*/
private Date expirationTime;
/**
* 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息,
*/
private volatile Map<String, Object> attr;
public PayOrder() {
}
@@ -107,8 +91,8 @@ public class PayOrder implements Order {
this.subject = StringUtils.tryTrim(subject);
this.body = StringUtils.tryTrim(body);
this.price = price;
this.outTradeNo = StringUtils.tryTrim(outTradeNo);
this.transactionType = transactionType;
setOutTradeNo(StringUtils.tryTrim(outTradeNo));
setTransactionType(transactionType);
}
@@ -152,49 +136,6 @@ public class PayOrder implements Order {
this.price = price;
}
/**
* 支付平台订单号,交易号
*
* @return 支付平台订单号, 交易号
*/
public String getTradeNo() {
return tradeNo;
}
/**
* 支付平台订单号,交易号
*
* @param tradeNo 支付平台订单号,交易号
*/
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
/**
* 获取商户订单号
*
* @return 商户订单号
*/
public String getOutTradeNo() {
return outTradeNo;
}
/**
* 设置商户订单号
*
* @param outTradeNo 商户订单号
*/
public void setOutTradeNo(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public TransactionType getTransactionType() {
return transactionType;
}
public void setTransactionType(TransactionType transactionType) {
this.transactionType = transactionType;
}
public String getBankType() {
return bankType;
@@ -260,48 +201,4 @@ public class PayOrder implements Order {
this.expirationTime = expirationTime;
}
@Override
public Map<String, Object> getAttrs() {
if (null == attr){
attr = new HashMap<>();
}
return attr;
}
@Override
public Object getAttr(String key) {
return getAttrs().get(key);
}
/**
* 添加订单信息
* @param key key
* @param value 值
*/
@Override
public void addAttr(String key, Object value) {
getAttrs().put(key, value);
}
@Override
public String toString() {
return "PayOrder{" +
"subject='" + subject + '\'' +
", body='" + body + '\'' +
", price=" + price +
", outTradeNo='" + outTradeNo + '\'' +
", bankType='" + bankType + '\'' +
", deviceInfo='" + deviceInfo + '\'' +
", spbillCreateIp='" + spbillCreateIp + '\'' +
", authCode='" + authCode + '\'' +
", wapUrl='" + wapUrl + '\'' +
", wapName='" + wapName + '\'' +
", openid='" + openid + '\'' +
", transactionType=" + transactionType +
", curType=" + curType +
'}';
}
}

View File

@@ -2,8 +2,6 @@ package com.egzosn.pay.common.bean;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 退款订单信息
@@ -14,19 +12,11 @@ import java.util.Map;
* date 2018/1/15 21:40
* </pre>
*/
public class RefundOrder implements Order {
public class RefundOrder extends AssistOrder {
/**
* 退款单号,每次进行退款的单号,此处唯一
*/
private String refundNo;
/**
* 支付平台订单号,交易号
*/
private String tradeNo;
/**
* 商户单号
*/
private String outTradeNo;
/**
* 退款金额
*/
@@ -54,10 +44,6 @@ public class RefundOrder implements Order {
*/
private String userId;
/**
* 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息,
*/
private Map<String, Object> attr;
public String getRefundNo() {
return refundNo;
@@ -67,22 +53,6 @@ public class RefundOrder implements Order {
this.refundNo = refundNo;
}
public String getTradeNo() {
return tradeNo;
}
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
public String getOutTradeNo() {
return outTradeNo;
}
public void setOutTradeNo(String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public BigDecimal getRefundAmount() {
return refundAmount;
}
@@ -136,47 +106,23 @@ public class RefundOrder implements Order {
public RefundOrder(String refundNo, String tradeNo, BigDecimal refundAmount) {
this.refundNo = refundNo;
this.tradeNo = tradeNo;
setTradeNo(tradeNo);
this.refundAmount = refundAmount;
}
public RefundOrder(String tradeNo, String outTradeNo, BigDecimal refundAmount, BigDecimal totalAmount) {
this.tradeNo = tradeNo;
this.outTradeNo = outTradeNo;
setTradeNo(tradeNo);
setOutTradeNo(outTradeNo);
this.refundAmount = refundAmount;
this.totalAmount = totalAmount;
}
public RefundOrder(String refundNo, String tradeNo, String outTradeNo, BigDecimal refundAmount, BigDecimal totalAmount) {
this.refundNo = refundNo;
this.tradeNo = tradeNo;
this.outTradeNo = outTradeNo;
setTradeNo(tradeNo);
setOutTradeNo(outTradeNo);
this.refundAmount = refundAmount;
this.totalAmount = totalAmount;
}
@Override
public Map<String, Object> getAttrs() {
if (null == attr) {
attr = new HashMap<>();
}
return attr;
}
@Override
public Object getAttr(String key) {
return getAttrs().get(key);
}
/**
* 添加订单信息
*
* @param key key
* @param value 值
*/
@Override
public void addAttr(String key, Object value) {
getAttrs().put(key, value);
}
}