diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java index 80176f3..0941966 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java @@ -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)}进行使用 + *
+ * 默认使用{@link DefaultPayMessageHandler }进行实现 + */ + @Override + public void setPayMessageHandler(PayMessageHandler handler) { + this.handler = handler; + } + + /** + * 获取支付消息处理器,这里用于处理具体的支付业务 + * 配合{@link PayService#payBack(Map, InputStream)}进行使用 + *
+ * 默认使用{@link DefaultPayMessageHandler }进行实现 + */ + @Override + public PayMessageHandler getPayMessageHandler() { + if (null == handler){ + setPayMessageHandler(new DefaultPayMessageHandler()); + } + return handler; + } } diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/DefaultPayMessageHandler.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/DefaultPayMessageHandler.java new file mode 100644 index 0000000..4af551c --- /dev/null +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/DefaultPayMessageHandler.java @@ -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 + *
+ * email egzosn@gmail.com + * date 2018-10-29 17:31:05 + *+ */ +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