mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-05-13 00:49:58 +08:00
1. 支付回调接口定义
2. 定义默认的回调消息实现
This commit is contained in:
@@ -5,6 +5,8 @@ import com.egzosn.pay.common.bean.result.PayException;
|
||||
import com.egzosn.pay.common.exception.PayErrorException;
|
||||
import com.egzosn.pay.common.util.sign.CertDescriptor;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
@@ -87,6 +89,11 @@ public abstract class BasePayConfigStorage implements PayConfigStorage{
|
||||
*/
|
||||
private boolean isCertSign = false;
|
||||
|
||||
/**
|
||||
* 支付回调消息
|
||||
*/
|
||||
protected volatile PayMessageHandler handler;
|
||||
|
||||
@Override
|
||||
public Object getAttach() {
|
||||
return attach;
|
||||
@@ -262,4 +269,31 @@ public abstract class BasePayConfigStorage implements PayConfigStorage{
|
||||
certDescriptor = new CertDescriptor();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置支付消息处理器,这里用于处理具体的支付业务
|
||||
*
|
||||
* @param handler 消息处理器
|
||||
* 配合{@link PayService#payBack(Map, InputStream)}进行使用
|
||||
* <p>
|
||||
* 默认使用{@link DefaultPayMessageHandler }进行实现
|
||||
*/
|
||||
@Override
|
||||
public void setPayMessageHandler(PayMessageHandler handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付消息处理器,这里用于处理具体的支付业务
|
||||
* 配合{@link PayService#payBack(Map, InputStream)}进行使用
|
||||
* <p>
|
||||
* 默认使用{@link DefaultPayMessageHandler }进行实现
|
||||
*/
|
||||
@Override
|
||||
public PayMessageHandler getPayMessageHandler() {
|
||||
if (null == handler){
|
||||
setPayMessageHandler(new DefaultPayMessageHandler());
|
||||
}
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.egzosn.pay.common.api;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.egzosn.pay.common.bean.PayMessage;
|
||||
import com.egzosn.pay.common.bean.PayOutMessage;
|
||||
import com.egzosn.pay.common.exception.PayErrorException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 默认处理支付回调消息的处理器接口
|
||||
*
|
||||
* 主要用来处理支付相关的业务
|
||||
* @author egan
|
||||
* <pre>
|
||||
* email egzosn@gmail.com
|
||||
* date 2018-10-29 17:31:05
|
||||
* </pre>
|
||||
*/
|
||||
public class DefaultPayMessageHandler implements PayMessageHandler {
|
||||
|
||||
protected final Log log = LogFactory.getLog(DefaultPayMessageHandler.class);
|
||||
/**
|
||||
* @param payMessage 支付消息
|
||||
* @param context 上下文,如果handler或interceptor之间有信息要传递,可以用这个
|
||||
* @param payService 支付服务
|
||||
* @return xml, text格式的消息,如果在异步规则里处理的话,可以返回null
|
||||
*/
|
||||
@Override
|
||||
public PayOutMessage handle(PayMessage payMessage, Map<String, Object> context, PayService payService) throws PayErrorException {
|
||||
log.info("回调支付消息处理器,回调消息:" + JSON.toJSONString(payMessage));
|
||||
return payService.successPayOutMessage(payMessage);
|
||||
}
|
||||
}
|
||||
@@ -152,4 +152,26 @@ import java.util.concurrent.locks.Lock;
|
||||
* @return true测试环境
|
||||
*/
|
||||
boolean isTest();
|
||||
|
||||
|
||||
/**
|
||||
* 设置支付消息处理器,这里用于处理具体的支付业务
|
||||
* @param handler 消息处理器
|
||||
* 配合{@link com.egzosn.pay.common.api.PayService#payBack(java.util.Map, java.io.InputStream)}进行使用
|
||||
*
|
||||
* 默认使用{@link com.egzosn.pay.common.api.DefaultPayMessageHandler }进行实现
|
||||
*
|
||||
*/
|
||||
void setPayMessageHandler(PayMessageHandler handler);
|
||||
|
||||
|
||||
/**
|
||||
* 获取支付消息处理器,这里用于处理具体的支付业务
|
||||
* 配合{@link com.egzosn.pay.common.api.PayService#payBack(java.util.Map, java.io.InputStream)}进行使用
|
||||
*
|
||||
* 默认使用{@link com.egzosn.pay.common.api.DefaultPayMessageHandler }进行实现
|
||||
*
|
||||
*/
|
||||
PayMessageHandler getPayMessageHandler();
|
||||
|
||||
}
|
||||
|
||||
@@ -361,6 +361,13 @@ public interface PayService<PC extends PayConfigStorage> {
|
||||
*/
|
||||
<T>T transferQuery(String outNo, String tradeNo, Callback<T> callback);
|
||||
|
||||
|
||||
/**
|
||||
* 将请求参数或者请求流转化为 Map
|
||||
*
|
||||
* @param parameterMap 请求参数
|
||||
* @param is 请求流
|
||||
* @return 获得回调响应信息
|
||||
*/
|
||||
PayOutMessage payBack(Map<String, String[]> parameterMap, InputStream is);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user