退款结果集统一处理

This commit is contained in:
egzosn
2020-08-16 22:51:15 +08:00
parent 9ebd5d1596
commit 545bc0c466
34 changed files with 2209 additions and 46 deletions

View File

@@ -17,6 +17,7 @@ import com.egzosn.pay.common.util.sign.encrypt.RSA2;
import com.egzosn.pay.common.util.str.StringUtils;
import com.egzosn.pay.union.bean.SDKConstants;
import com.egzosn.pay.union.bean.UnionPayMessage;
import com.egzosn.pay.union.bean.UnionRefundResult;
import com.egzosn.pay.union.bean.UnionTransactionType;
import java.io.ByteArrayInputStream;
@@ -591,7 +592,7 @@ public class UnionPayService extends BasePayService<UnionPayConfigStorage> {
* @param type UnionTransactionType.REFUND 或者UnionTransactionType.CONSUME_UNDO
* @return 返回支付方申请退款后的结果
*/
public Map<String, Object> unionRefundOrConsumeUndo(RefundOrder refundOrder, UnionTransactionType type) {
public UnionRefundResult unionRefundOrConsumeUndo(RefundOrder refundOrder, UnionTransactionType type) {
Map<String, Object> params = this.getCommonParam();
type.convertMap(params);
params.put(SDKConstants.param_orderId, refundOrder.getRefundNo());
@@ -601,12 +602,11 @@ public class UnionPayService extends BasePayService<UnionPayConfigStorage> {
this.setSign(params);
String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class);
JSONObject response = UriVariables.getParametersToMap(responseStr);
if (this.verify(response)) {
if (SDKConstants.OK_RESP_CODE.equals(response.getString(SDKConstants.param_respCode))) {
// String origRespCode = response.getString(SDKConstants.param_origRespCode);
//交易成功,更新商户订单状态
//TODO
return response;
final UnionRefundResult refundResult = UnionRefundResult.create(response);
if (SDKConstants.OK_RESP_CODE.equals(refundResult.getRespCode())) {
return refundResult;
}
throw new PayErrorException(new PayException(response.getString(SDKConstants.param_respCode), response.getString(SDKConstants.param_respMsg), response.toJSONString()));
@@ -628,7 +628,7 @@ public class UnionPayService extends BasePayService<UnionPayConfigStorage> {
@Override
public Map<String, Object> refund(RefundOrder refundOrder) {
public UnionRefundResult refund(RefundOrder refundOrder) {
return unionRefundOrConsumeUndo(refundOrder, UnionTransactionType.REFUND);
}

View File

@@ -0,0 +1,326 @@
package com.egzosn.pay.union.bean;
import java.math.BigDecimal;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import com.egzosn.pay.common.bean.BaseRefundResult;
import com.egzosn.pay.common.bean.CurType;
/**
* 银联退款结果
*
* @author Egan
* email egzosn@gmail.com
* date 2020/8/16 22:15
*/
public class UnionRefundResult extends BaseRefundResult {
/**
* 二维码数据
*/
private String qrCode;
/**
* 签名
*/
private String signature;
/**
* 签名方法
*/
private String signMethod;
/**
* 应答码
*/
private String respCode;
/**
* 应答信息
*/
private String respMsg;
/**
* 签名公钥证书
*/
private String signPubKeyCert;
/**
* 版本号
*/
private String version;
/**
* 编码方式
*/
private String encoding;
/**
* 产品类型
*/
private String bizType;
/**
* 订单发送时间
*/
private String txnTime;
/**
* 交易类型
*/
private String txnType;
/**
* 交易子类
*/
private String txnSubType;
/**
* 接入类型
* 0商户直连接入
* 1收单机构接入
* 2平台商户接入
*/
private String accessType;
/**
* 请求方保留域
*/
private String reqReserved;
/**
* 商户代码
*/
private String merId;
/**
* 商户订单号
*/
private String orderId;
/**
* 保留域
*/
private String reserved;
/**
* 获取退款请求结果状态码
*
* @return 状态码
*/
@Override
public String getCode() {
return respCode;
}
/**
* 获取退款请求结果状态提示信息
*
* @return 提示信息
*/
@Override
public String getMsg() {
return respMsg;
}
/**
* 返回业务结果状态码
*
* @return 业务结果状态码
*/
@Override
public String getResultCode() {
return null;
}
/**
* 返回业务结果状态提示信息
*
* @return 业务结果状态提示信息
*/
@Override
public String getResultMsg() {
return null;
}
/**
* 退款金额
*
* @return 退款金额
*/
@Override
public BigDecimal getRefundFee() {
return null;
}
/**
* 退款币种信息
*
* @return 币种信息
*/
@Override
public CurType getRefundCurrency() {
return null;
}
/**
* 支付平台交易号
* 发起支付时 支付平台(如支付宝)返回的交易订单号
*
* @return 支付平台交易号
*/
@Override
public String getTradeNo() {
return null;
}
/**
* 支付订单号
* 发起支付时,用户系统的订单号
*
* @return 支付订单号
*/
@Override
public String getOutTradeNo() {
return orderId;
}
/**
* 商户退款单号
*
* @return 商户退款单号
*/
@Override
public String getRefundNo() {
return null;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getSignMethod() {
return signMethod;
}
public void setSignMethod(String signMethod) {
this.signMethod = signMethod;
}
public String getRespCode() {
return respCode;
}
public void setRespCode(String respCode) {
this.respCode = respCode;
}
public String getRespMsg() {
return respMsg;
}
public void setRespMsg(String respMsg) {
this.respMsg = respMsg;
}
public String getSignPubKeyCert() {
return signPubKeyCert;
}
public void setSignPubKeyCert(String signPubKeyCert) {
this.signPubKeyCert = signPubKeyCert;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public String getBizType() {
return bizType;
}
public void setBizType(String bizType) {
this.bizType = bizType;
}
public String getTxnTime() {
return txnTime;
}
public void setTxnTime(String txnTime) {
this.txnTime = txnTime;
}
public String getTxnType() {
return txnType;
}
public void setTxnType(String txnType) {
this.txnType = txnType;
}
public String getTxnSubType() {
return txnSubType;
}
public void setTxnSubType(String txnSubType) {
this.txnSubType = txnSubType;
}
public String getAccessType() {
return accessType;
}
public void setAccessType(String accessType) {
this.accessType = accessType;
}
public String getReqReserved() {
return reqReserved;
}
public void setReqReserved(String reqReserved) {
this.reqReserved = reqReserved;
}
public String getMerId() {
return merId;
}
public void setMerId(String merId) {
this.merId = merId;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getReserved() {
return reserved;
}
public void setReserved(String reserved) {
this.reserved = reserved;
}
public static final UnionRefundResult create(Map<String, Object> result){
UnionRefundResult refundResult = new JSONObject(result).toJavaObject(UnionRefundResult.class);
refundResult.setAttrs(result);
return refundResult;
}
}