移除已废弃的字段与方法

This commit is contained in:
egzosn
2021-01-17 22:38:11 +08:00
parent 0f9439fd4e
commit c6cfd2e8d1
39 changed files with 1099 additions and 1083 deletions

View File

@@ -2,6 +2,22 @@
package com.egzosn.pay.demo.controller;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.egzosn.pay.ali.api.AliPayConfigStorage;
import com.egzosn.pay.ali.api.AliPayService;
import com.egzosn.pay.ali.bean.AliRefundResult;
@@ -18,20 +34,6 @@ import com.egzosn.pay.common.util.sign.SignUtils;
import com.egzosn.pay.demo.request.QueryOrder;
import com.egzosn.pay.demo.service.handler.AliPayMessageHandler;
import com.egzosn.pay.demo.service.interceptor.AliPayMessageInterceptor;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
@@ -48,22 +50,24 @@ public class AliPayController {
private AliPayService service = null;
@Resource
private AutowireCapableBeanFactory spring;
/**
* 设置普通公钥的方式
* 普通公钥方式与证书公钥方式为两者取其一的方式
* @param aliPayConfigStorage 支付宝配置信息
*
* @param aliPayConfigStorage 支付宝配置信息
*/
private static void keyPublic(AliPayConfigStorage aliPayConfigStorage){
private static void keyPublic(AliPayConfigStorage aliPayConfigStorage) {
aliPayConfigStorage.setKeyPublic("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB");
}
/**
* 设置证书公钥信息
* 普通公钥方式与证书公钥方式为两者取其一的方式
*
* @param aliPayConfigStorage 支付宝配置信息
*/
private static void certKeyPublic(AliPayConfigStorage aliPayConfigStorage){
private static void certKeyPublic(AliPayConfigStorage aliPayConfigStorage) {
//设置为证书方式
aliPayConfigStorage.setCertSign(true);
//设置证书存储方式,这里为路径
@@ -79,10 +83,10 @@ public class AliPayController {
aliPayConfigStorage.setPid("2088102169916436");
aliPayConfigStorage.setAppid("2016080400165436");
//普通公钥方式与证书公钥方式为两者取其一的方式
// keyPublic(aliPayConfigStorage);
certKeyPublic(aliPayConfigStorage);
// aliPayConfigStorage.setKeyPrivate("MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKroe/8h5vC4L6T+B2WdXiVwGsMvUKgb2XsKix6VY3m2wcf6tyzpNRDCNykbIwGtaeo7FshN+qZxdXHLiIam9goYncBit/8ojfLGy2gLxO/PXfzGxYGs0KsDZ+ryVPPmE34ZZ8jiJpR0ygzCFl8pN3QJPJRGTJn5+FTT9EF/9zyZAgMBAAECgYAktngcYC35u7cQXDk+jMVyiVhWYU2ULxdSpPspgLGzrZyG1saOcTIi/XVX8Spd6+B6nmLQeF/FbU3rOeuD8U2clzul2Z2YMbJ0FYay9oVZFfp5gTEFpFRTVfzqUaZQBIjJe/xHL9kQVqc5xHlE/LVA27/Kx3dbC35Y7B4EVBDYAQJBAOhsX8ZreWLKPhXiXHTyLmNKhOHJc+0tFH7Ktise/0rNspojU7o9prOatKpNylp9v6kux7migcMRdVUWWiVe+4ECQQC8PqsuEz7B0yqirQchRg1DbHjh64bw9Kj82EN1/NzOUd53tP9tg+SO97EzsibK1F7tOcuwqsa7n2aY48mQ+y0ZAkBndA2xcRcnvOOjtAz5VO8G7R12rse181HjGfG6AeMadbKg30aeaGCyIxN1loiSfNR5xsPJwibGIBg81mUrqzqBAkB+K6rkaPXJR9XtzvdWb/N3235yPkDlw7Z4MiOVM3RzvR/VMDV7m8lXoeDde2zQyeMOMYy6ztwA6WgE1bhGOnQRAkEAouUBv1sVdSBlsexX15qphOmAevzYrpufKgJIRLFWQxroXMS7FTesj+f+FmGrpPCxIde1dqJ8lqYLTyJmbzMPYw==");
aliPayConfigStorage.setKeyPrivate("MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCw7MD2Cwv/jnXssFjXnGx3JlGF57gJa2aYbJRV8MnNiPVpX4Ha+8ZjnQDhvkrWH4hHmzcujOr213HqloMpUSYBzCPiXGVRUUvdimejcHHTod7nI4g6nztzzfey/TXNDHmp7vY3pOIcjB0Zn0pkNAz2tKAFkqb4raHOqTB0QA0zD24Cn+26J2UJyYRcgeH0GtSQuUrm7yaGsuKakh+qtgWF6R71n5PMGOTQ5LH3i0WVHfCBkNGgJC6yC96HR4D7cosoyKD0+lp8UB/NVUWl7Tt/KLOgFUwh0GKSYFfv56O/VBV2+xqCGE4PlZESfVuOqz5vjjxzw3xDAUJrV8hSX/AJAgMBAAECggEBAKE0d3U4B4yo/2XUIH8EdgfykCFUSum6RFbpyBauORHfksyaSzV+ZvtomN8XhhSn0oJ8OMFfgM+86nz2+zdwSxMkMCYWTfLUAi4v59KRqAVO3kz4oS3Y3FDeAK3D7XuRvGFL7GgzAhtEx1cLPrsiehVn6s5pG15GxsIIgq/JlL1J88wn1zENLrVHmD6z/JpXvfb/RS1yR+5lyoohp4g0Ph9jJ3bCyUbRpK0QkPEzgAuWL0K2ITCL7PYHNAplI8d2xHHOLF9Qdjyx+ZrQ/RxtqzfyWzhqjsmp2qlgNCxWlt3woS9UhDB+nRvjEoWTJmIOszAMYuj8wGlX+3Ui3ALOdQECgYEA25EqnFPFinUnzgNvB6NYmh5STmZun6s4bUOLqwefKtEvrOtRwTu7sB7NIf37fizG3/MJUWHxiLy2/3ub4d2JxdDNBtJoEqnp6QB12qglCNa4CajdjtJa1dR81F9QvytsqEkmPYXFPPyviB0FcSIDAGMb3IbwvIfzBPY9WY8dJnECgYEAzkg3yKEFBZ8BU0WQ+3hyfKUoAhBEnxouxRSTBcXxwstJRiqaGTVe5aoJGQI+0xS7Z6q07XDtN2t97s6DnRLWbljsX6B64itzNhXRyzjdD3iZDU/KSw7khjhXf8XOZaj9eXmACDiUnkEn1xsM8bLiRGqB8y5f3aMY/RpuACGXnxkCgYEAx/zwT9Vpr1RIfjfYcJ+Su0X0994K0roUukj0tUJK8qf4gcsQ+y1aJe/YLib1ZBaKyj7G9O5+HmqtUAUZld/AdoJZzOXmz2EeYhD+R7wxh1xz4rCBpW3qOKvDS3jJxmZaIOoHv6/RWFxb0WGFrGcrTrX3EaWDLmWxr4pNlP5qsbECgYATllntrBR8/ycyEAX/SuWcHlaZM5BAh0zvm8+GGdCmDYWMqxjs0duL9URd4o+ynWJaKqR5c2KjA4r2tRdcP+Cqo7j2L5fbiAKtnQ7JvEGJaYsm72+nBuf+MrVkRZUepBhFg5r7rNu31zoAO+pTvQetNWvXeozRz93ckrjlPEtYaQKBgQDFwbV92rlRMLjZzlY+o0knoeJBjPQmPdiBTpGNimdy9L4c2Ure7affjcUiYhkKqrK5k5SScJTATgyQ7JF346FdtUtZ/6Kkj1RwJmmprPrDa9CATLoTle7g9OVd4sHT2ITHZMzPaF3ILvzcwJ70AD1xcxCQb+/7sDPmw7Mc8gOA7Q==");
keyPublic(aliPayConfigStorage);
aliPayConfigStorage.setKeyPrivate("MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKroe/8h5vC4L6T+B2WdXiVwGsMvUKgb2XsKix6VY3m2wcf6tyzpNRDCNykbIwGtaeo7FshN+qZxdXHLiIam9goYncBit/8ojfLGy2gLxO/PXfzGxYGs0KsDZ+ryVPPmE34ZZ8jiJpR0ygzCFl8pN3QJPJRGTJn5+FTT9EF/9zyZAgMBAAECgYAktngcYC35u7cQXDk+jMVyiVhWYU2ULxdSpPspgLGzrZyG1saOcTIi/XVX8Spd6+B6nmLQeF/FbU3rOeuD8U2clzul2Z2YMbJ0FYay9oVZFfp5gTEFpFRTVfzqUaZQBIjJe/xHL9kQVqc5xHlE/LVA27/Kx3dbC35Y7B4EVBDYAQJBAOhsX8ZreWLKPhXiXHTyLmNKhOHJc+0tFH7Ktise/0rNspojU7o9prOatKpNylp9v6kux7migcMRdVUWWiVe+4ECQQC8PqsuEz7B0yqirQchRg1DbHjh64bw9Kj82EN1/NzOUd53tP9tg+SO97EzsibK1F7tOcuwqsa7n2aY48mQ+y0ZAkBndA2xcRcnvOOjtAz5VO8G7R12rse181HjGfG6AeMadbKg30aeaGCyIxN1loiSfNR5xsPJwibGIBg81mUrqzqBAkB+K6rkaPXJR9XtzvdWb/N3235yPkDlw7Z4MiOVM3RzvR/VMDV7m8lXoeDde2zQyeMOMYy6ztwA6WgE1bhGOnQRAkEAouUBv1sVdSBlsexX15qphOmAevzYrpufKgJIRLFWQxroXMS7FTesj+f+FmGrpPCxIde1dqJ8lqYLTyJmbzMPYw==");
// certKeyPublic(aliPayConfigStorage);
// aliPayConfigStorage.setKeyPrivate("MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCw7MD2Cwv/jnXssFjXnGx3JlGF57gJa2aYbJRV8MnNiPVpX4Ha+8ZjnQDhvkrWH4hHmzcujOr213HqloMpUSYBzCPiXGVRUUvdimejcHHTod7nI4g6nztzzfey/TXNDHmp7vY3pOIcjB0Zn0pkNAz2tKAFkqb4raHOqTB0QA0zD24Cn+26J2UJyYRcgeH0GtSQuUrm7yaGsuKakh+qtgWF6R71n5PMGOTQ5LH3i0WVHfCBkNGgJC6yC96HR4D7cosoyKD0+lp8UB/NVUWl7Tt/KLOgFUwh0GKSYFfv56O/VBV2+xqCGE4PlZESfVuOqz5vjjxzw3xDAUJrV8hSX/AJAgMBAAECggEBAKE0d3U4B4yo/2XUIH8EdgfykCFUSum6RFbpyBauORHfksyaSzV+ZvtomN8XhhSn0oJ8OMFfgM+86nz2+zdwSxMkMCYWTfLUAi4v59KRqAVO3kz4oS3Y3FDeAK3D7XuRvGFL7GgzAhtEx1cLPrsiehVn6s5pG15GxsIIgq/JlL1J88wn1zENLrVHmD6z/JpXvfb/RS1yR+5lyoohp4g0Ph9jJ3bCyUbRpK0QkPEzgAuWL0K2ITCL7PYHNAplI8d2xHHOLF9Qdjyx+ZrQ/RxtqzfyWzhqjsmp2qlgNCxWlt3woS9UhDB+nRvjEoWTJmIOszAMYuj8wGlX+3Ui3ALOdQECgYEA25EqnFPFinUnzgNvB6NYmh5STmZun6s4bUOLqwefKtEvrOtRwTu7sB7NIf37fizG3/MJUWHxiLy2/3ub4d2JxdDNBtJoEqnp6QB12qglCNa4CajdjtJa1dR81F9QvytsqEkmPYXFPPyviB0FcSIDAGMb3IbwvIfzBPY9WY8dJnECgYEAzkg3yKEFBZ8BU0WQ+3hyfKUoAhBEnxouxRSTBcXxwstJRiqaGTVe5aoJGQI+0xS7Z6q07XDtN2t97s6DnRLWbljsX6B64itzNhXRyzjdD3iZDU/KSw7khjhXf8XOZaj9eXmACDiUnkEn1xsM8bLiRGqB8y5f3aMY/RpuACGXnxkCgYEAx/zwT9Vpr1RIfjfYcJ+Su0X0994K0roUukj0tUJK8qf4gcsQ+y1aJe/YLib1ZBaKyj7G9O5+HmqtUAUZld/AdoJZzOXmz2EeYhD+R7wxh1xz4rCBpW3qOKvDS3jJxmZaIOoHv6/RWFxb0WGFrGcrTrX3EaWDLmWxr4pNlP5qsbECgYATllntrBR8/ycyEAX/SuWcHlaZM5BAh0zvm8+GGdCmDYWMqxjs0duL9URd4o+ynWJaKqR5c2KjA4r2tRdcP+Cqo7j2L5fbiAKtnQ7JvEGJaYsm72+nBuf+MrVkRZUepBhFg5r7rNu31zoAO+pTvQetNWvXeozRz93ckrjlPEtYaQKBgQDFwbV92rlRMLjZzlY+o0knoeJBjPQmPdiBTpGNimdy9L4c2Ure7affjcUiYhkKqrK5k5SScJTATgyQ7JF346FdtUtZ/6Kkj1RwJmmprPrDa9CATLoTle7g9OVd4sHT2ITHZMzPaF3ILvzcwJ70AD1xcxCQb+/7sDPmw7Mc8gOA7Q==");
aliPayConfigStorage.setNotifyUrl("http://pay.egzosn.com/payBack.json");
aliPayConfigStorage.setReturnUrl("http://pay.egzosn.com/payBack.html");
aliPayConfigStorage.setSignType(SignUtils.RSA2.name());
@@ -97,7 +101,7 @@ public class AliPayController {
httpConfigStorage.setMaxTotal(20);
//默认的每个路由的最大连接数
httpConfigStorage.setDefaultMaxPerRoute(10);
service = new AliPayService(aliPayConfigStorage, httpConfigStorage);
service = new AliPayService(aliPayConfigStorage, httpConfigStorage);
//增加支付回调消息拦截器
service.addPayMessageInterceptor(new AliPayMessageInterceptor());
//设置回调消息处理
@@ -105,16 +109,15 @@ public class AliPayController {
}
/**
* 跳到支付页面
* 针对实时支付,即时付款
*
* @param price 金额
* @param price 金额
* @return 跳到支付页面
*/
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
public String toPay( BigDecimal price) {
public String toPay(BigDecimal price) {
//及时收款
PayOrder order = new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.PAGE);
//WAP
@@ -127,8 +130,6 @@ public class AliPayController {
}
/**
* 获取支付预订单信息
*
@@ -148,35 +149,39 @@ public class AliPayController {
/**
* 获取二维码图像
* 二维码支付
* @param price 金额
*
* @param price 金额
* @return 二维码图像
* @throws IOException IOException
*/
@RequestMapping(value = "toQrPay.jpg", produces = "image/jpeg;charset=UTF-8")
public byte[] toQrPay( BigDecimal price) throws IOException {
public byte[] toQrPay(BigDecimal price) throws IOException {
//获取对应的支付账户操作工具可根据账户id
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(service.genQrPay( new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis()+"", AliTransactionType.SWEEPPAY)), "JPEG", baos);
ImageIO.write(service.genQrPay(new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis() + "", AliTransactionType.SWEEPPAY)), "JPEG", baos);
return baos.toByteArray();
}
/**
* 获取二维码地址
* 二维码支付
* @param price 金额
*
* @param price 金额
* @return 二维码图像
* @throws IOException IOException
*/
@RequestMapping(value = "getQrPay.json")
public String getQrPay(BigDecimal price) throws IOException {
//获取对应的支付账户操作工具可根据账户id
return service.getQrPay( new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis()+"", AliTransactionType.SWEEPPAY));
return service.getQrPay(new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis() + "", AliTransactionType.SWEEPPAY));
}
/**
* 刷卡付,pos主动扫码付款(条码付)
* @param authCode 授权码,条码等
* @param price 金额
*
* @param authCode 授权码,条码等
* @param price 金额
* @return 支付结果
*/
@RequestMapping(value = "microPay")
@@ -184,7 +189,7 @@ public class AliPayController {
//获取对应的支付账户操作工具可根据账户id
//条码付
PayOrder order = new PayOrder("egan order", "egan order", null == price ? BigDecimal.valueOf(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.BAR_CODE);
//声波付
//声波付
// PayOrder order = new PayOrder("egan order", "egan order", null == price ? BigDecimal.valueOf(0.01) : price, UUID.randomUUID().toString().replace("-", ""), AliTransactionType.WAVE_CODE);
//设置授权码,条码等
order.setAuthCode(authCode);
@@ -204,15 +209,13 @@ public class AliPayController {
/**
* 支付回调地址 方式一
*
* <p>
* 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
*
*
* @param request 请求
*
* @return 返回对应的响应码
* @see #payBack(HttpServletRequest)
* @throws IOException IOException
* @see #payBack(HttpServletRequest)
*/
@Deprecated
@RequestMapping(value = "payBackBefore.json")
@@ -233,15 +236,15 @@ public class AliPayController {
return service.getPayOutMessage("fail", "失败").toMessage();
}
/**
* 支付回调地址
*
* @param request 请求
*
* @return 返回对应的响应码
*
* <p>
* 业务处理在对应的PayMessageHandler里面处理在哪里设置PayMessageHandler详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
*
* <p>
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
* @throws IOException IOException
*/
@@ -290,6 +293,7 @@ public class AliPayController {
public Map<String, Object> close(QueryOrder order) {
return service.close(order.getTradeNo(), order.getOutTradeNo());
}
/**
* 交易c撤销接口
*
@@ -339,7 +343,6 @@ public class AliPayController {
* 转账
*
* @param order 转账订单
*
* @return 对应的转账结果
*/
@RequestMapping("transfer")
@@ -363,7 +366,6 @@ public class AliPayController {
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
@RequestMapping("transferQuery")

View File

@@ -2,13 +2,37 @@
package com.egzosn.pay.demo.controller;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import static com.egzosn.pay.demo.dao.ApyAccountRepository.apyAccounts;
import com.alibaba.fastjson.JSONObject;
import com.egzosn.pay.ali.api.AliPayService;
import com.egzosn.pay.ali.bean.AliTransactionType;
import com.egzosn.pay.common.api.PayConfigStorage;
import com.egzosn.pay.common.api.PayMessageInterceptor;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.*;
import com.egzosn.pay.common.bean.MethodType;
import com.egzosn.pay.common.bean.PayMessage;
import com.egzosn.pay.common.bean.PayOrder;
import com.egzosn.pay.common.bean.PayOutMessage;
import com.egzosn.pay.common.bean.RefundOrder;
import com.egzosn.pay.common.bean.RefundResult;
import com.egzosn.pay.common.bean.TransferOrder;
import com.egzosn.pay.common.http.UriVariables;
import com.egzosn.pay.common.util.MatrixToImageWriter;
import com.egzosn.pay.common.util.str.StringUtils;
@@ -18,22 +42,6 @@ import com.egzosn.pay.demo.request.QueryOrder;
import com.egzosn.pay.demo.service.ApyAccountService;
import com.egzosn.pay.demo.service.PayResponse;
import com.egzosn.pay.wx.bean.WxTransactionType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import static com.egzosn.pay.demo.dao.ApyAccountRepository.apyAccounts;
/**
* 发起支付入口
@@ -76,7 +84,7 @@ public class PayController {
* 跳到支付页面
* 针对实时支付,即时付款
*
* @param request 请求
* @param request 请求
* @param payId 账户id
* @param transactionType 交易类型, 这个针对于每一个 支付类型的对应的几种交易方式
* @param bankType 针对刷卡支付,卡的类型,类型值
@@ -115,6 +123,7 @@ public class PayController {
/**
* 跳到支付页面
* 针对实时支付,即时付款
*
* @param request 请求
* @return 跳到支付页面
*/
@@ -164,7 +173,7 @@ public class PayController {
*
* @param payId 支付账户id
* @param transactionType 交易类型
* @param price 金额
* @param price 金额
* @return 支付预订单信息
*/
@RequestMapping("app")
@@ -188,7 +197,7 @@ public class PayController {
* @return 支付结果
*/
@RequestMapping(value = "microPay")
public Map<String, Object> microPay(Integer payId, String transactionType, BigDecimal price, String authCode) {
public Map<String, Object> microPay(Integer payId, String transactionType, BigDecimal price, String authCode) {
//获取对应的支付账户操作工具可根据账户id
PayResponse payResponse = service.getPayResponse(payId);
@@ -200,7 +209,7 @@ public class PayController {
PayConfigStorage storage = payResponse.getService().getPayConfigStorage();
//校验
if (payResponse.getService().verify(params)) {
PayMessage message = new PayMessage(params, storage.getPayType(), storage.getMsgType().name());
PayMessage message = new PayMessage(params, storage.getPayType());
//支付校验通过后的处理
payResponse.getRouter().route(message);
}
@@ -215,7 +224,6 @@ public class PayController {
* @param payId 账户id
* @param transactionType 交易类型, 这个针对于每一个 支付类型的对应的几种交易方式
* @param price 金额
*
* @return 二维码图像
* @throws IOException IOException
*/
@@ -228,10 +236,12 @@ public class PayController {
ImageIO.write(payResponse.getService().genQrPay(new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis() + "", PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType))), "JPEG", baos);
return baos.toByteArray();
}
/**
* 获取二维码地址
* 二维码支付
* @param price 金额
*
* @param price 金额
* @return 二维码图像
* @throws IOException IOException
*/
@@ -240,8 +250,9 @@ public class PayController {
//获取对应的支付账户操作工具可根据账户id
//获取对应的支付账户操作工具可根据账户id
PayResponse payResponse = service.getPayResponse(payId);
return payResponse.getService().getQrPay( new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis() + "", PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType)));
return payResponse.getService().getQrPay(new PayOrder("订单title", "摘要", null == price ? BigDecimal.valueOf(0.01) : price, System.currentTimeMillis() + "", PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(transactionType)));
}
/**
* 获取一码付二维码图像
* 二维码支付
@@ -249,7 +260,7 @@ public class PayController {
* @param wxPayId 微信账户id
* @param aliPayId 支付宝id
* @param price 金额
* @param request 请求
* @param request 请求
* @return 二维码图像
* @throws IOException IOException
*/
@@ -279,7 +290,7 @@ public class PayController {
* @param wxPayId 微信账户id
* @param aliPayId 支付宝id
* @param price 金额
* @param request 请求
* @param request 请求
* @return 支付宝与微信平台的判断
* @throws IOException IOException
*/
@@ -309,15 +320,13 @@ public class PayController {
}
/**
* 支付回调地址 方式一
* <p>
* 方式二,{@link #payBack(HttpServletRequest, Integer)} 是属于简化方式, 试用与简单的业务场景
*
* @param request 请求
* @param payId 账户id
* @param payId 账户id
* @return 支付是否成功
* @throws IOException IOException
*/
@@ -361,14 +370,14 @@ public class PayController {
* 方式二
*
* @param request 请求
* @param payId 账户id
* @param payId 账户id
* @return 支付是否成功
* @throws IOException IOException
* 拦截器相关增加, 详情查看{@link com.egzosn.pay.common.api.PayService#addPayMessageInterceptor(PayMessageInterceptor)}
* <p>
* 业务处理在对应的PayMessageHandler里面处理在哪里设置PayMessageHandler详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
* </p>
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
* 拦截器相关增加, 详情查看{@link com.egzosn.pay.common.api.PayService#addPayMessageInterceptor(PayMessageInterceptor)}
* <p>
* 业务处理在对应的PayMessageHandler里面处理在哪里设置PayMessageHandler详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
* </p>
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
*/
@RequestMapping(value = "payBack{payId}.json")
public String payBack(HttpServletRequest request, @PathVariable Integer payId) throws IOException {
@@ -417,6 +426,7 @@ public class PayController {
/**
* 申请退款接口
*
* @param payId 账户id
* @param order 订单的请求体
* @return 返回支付方申请退款后的结果
@@ -426,7 +436,8 @@ public class PayController {
PayResponse payResponse = service.getPayResponse(payId);
// return payResponse.getService().refund(order.getTradeNo(), order.getOutTradeNo(), order.getRefundAmount(), order.getTotalAmount());
return payResponse.getService().refund(order);
final PayService service = payResponse.getService();
return service.refund(order);
}
/**
@@ -457,22 +468,9 @@ public class PayController {
}
/**
* 通用查询接口,根据 TransactionType 类型进行实现,此接口不包括退款
*
* @param order 订单的请求体
* @return 返回支付方对应接口的结果
*/
@RequestMapping("secondaryInterface")
public Map<String, Object> secondaryInterface(QueryOrder order) {
PayResponse payResponse = service.getPayResponse(order.getPayId());
TransactionType type = PayType.valueOf(payResponse.getStorage().getPayType()).getTransactionType(order.getTransactionType());
return payResponse.getService().secondaryInterface(order.getTradeNoOrBillDate(), order.getOutTradeNoBillType(), type);
}
/**
* 转账
*
* @param payId 账户id
* @param order 转账订单
* @return 对应的转账结果
@@ -485,7 +483,8 @@ public class PayController {
/**
* 转账查询
* @param payId 账户id
*
* @param payId 账户id
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
* @return 对应的转账订单

View File

@@ -1,6 +1,18 @@
package com.egzosn.pay.demo.controller;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.DefaultCurType;
import com.egzosn.pay.common.bean.PayOrder;
@@ -10,17 +22,6 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.paypal.api.PayPalConfigStorage;
import com.egzosn.pay.paypal.api.PayPalPayService;
import com.egzosn.pay.paypal.bean.PayPalTransactionType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.Map;
import java.util.UUID;
/**
* 发起支付入口
@@ -39,13 +40,13 @@ public class PayPalPayController {
@PostConstruct
public void init() {
PayPalConfigStorage storage = new PayPalConfigStorage();
storage.setClientID("AZ7HTcvrEAxYbzYx_iDZAi06GdqbjhqqQzFgPBFLxm2VUMzwlmiNUBk_y_5QNP4zWKblTuM6ZBAmxScd");
storage.setClientSecret("EBMIjAag6NiRdXZxteTv0amEsmKN345xJv3bN7f_HRXSqcRJlW7PXhYXjI9sk5I4nKYOHgeqzhXCXKFo");
storage.setClientID("AZDS0IhUZvJTO99unlvSDMfbZIP-p-UecYXZdJoweha9LFuqKXKcQIGZgfVaX6oGiAOJAUuJD7JwyTl1");
storage.setClientSecret("EK2YaOrw3oLSDWIRzvb9BWGTjiPPhY1fFUu5ylhUsGYLc_h_dlpJ0hr_LDEkbO9MyKP2P83YcywbPaem");
storage.setTest(true);
//发起付款后的页面转跳地址
storage.setReturnUrl("http://www.egzosn.com/payPal/payBack.json");
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
storage.setNotifyUrl("http://www.egzosn.com/pay/cancel");
storage.setCancelUrl("http://www.egzosn.com/pay/cancel");
service = new PayPalPayService(storage);
//请求连接池配置
@@ -76,11 +77,12 @@ public class PayPalPayController {
String toPayHtml = service.toPay(order);
//某些支付下单时无法设置单号,通过下单后返回对应单号,如 paypal友店。
String outTradeNo = order.getOutTradeNo();
System.out.println("支付订单号:" + outTradeNo + " 这里可以进行回存");
String tradeNo = order.getTradeNo();
System.out.println("支付订单号:" + tradeNo + " 这里可以进行回存");
return toPayHtml;
}
/**
* 申请退款接口
*
@@ -98,10 +100,13 @@ public class PayPalPayController {
}
/* */
/**
* return url
* PayPal确认付款调用的接口
* 用户确认付款后paypal调用的这个方法执行付款
*
* @param request 请求
* @return 付款成功信息
* @throws IOException IOException
@@ -118,17 +123,17 @@ public class PayPalPayController {
return "failure";
}
/* */
/**
* 支付回调地址
*
* @param request 请求
*
* @param request 请求
* @return 结果
* @throws IOException IOException
* 业务处理在对应的PayMessageHandler里面处理在哪里设置PayMessageHandler详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
*
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
*
* 业务处理在对应的PayMessageHandler里面处理在哪里设置PayMessageHandler详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
* <p>
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
*/
@RequestMapping(value = "payBack.json")
public String payBack(HttpServletRequest request) throws IOException {

View File

@@ -1,23 +1,30 @@
package com.egzosn.pay.demo.controller;
import com.egzosn.pay.common.bean.*;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.demo.request.QueryOrder;
import com.egzosn.pay.payoneer.api.PayoneerConfigStorage;
import com.egzosn.pay.payoneer.api.PayoneerPayService;
import com.egzosn.pay.payoneer.bean.PayoneerTransactionType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.egzosn.pay.common.bean.DefaultCurType;
import com.egzosn.pay.common.bean.PayOrder;
import com.egzosn.pay.common.bean.RefundOrder;
import com.egzosn.pay.common.bean.RefundResult;
import com.egzosn.pay.common.bean.TransactionType;
import com.egzosn.pay.common.bean.TransferOrder;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.demo.request.QueryOrder;
import com.egzosn.pay.payoneer.api.PayoneerConfigStorage;
import com.egzosn.pay.payoneer.api.PayoneerPayService;
import com.egzosn.pay.payoneer.bean.PayoneerTransactionType;
/**
* @author egan
* email egzosn@gmail.com
@@ -34,7 +41,6 @@ public class PayoneerPayController {
public void init() {
PayoneerConfigStorage configStorage = new PayoneerConfigStorage();
configStorage.setProgramId("商户id");
configStorage.setMsgType(MsgType.json);
configStorage.setInputCharset("utf-8");
configStorage.setUserName("PayoneerPay 用户名");
configStorage.setApiPassword("PayoneerPay API password");
@@ -63,11 +69,12 @@ public class PayoneerPayController {
/**
* 获取授权页面
*
* @param payeeId 用户id
* @return 获取授权页面
*/
@RequestMapping("getAuthorizationPage.json")
public Map<String ,Object> getAuthorizationPage( String payeeId ){
public Map<String, Object> getAuthorizationPage(String payeeId) {
Map<String, Object> data = new LinkedHashMap<>();
data.put("code", 0);
@@ -75,13 +82,14 @@ public class PayoneerPayController {
return data;
}
/**
/**
* 获取授权用户信息,包含用户状态,注册时间,联系人信息,地址信息等等
*
* @param payeeId 用户id
* @return 获取授权用户信息
*/
@RequestMapping("getAuthorizationUser.json")
public Map<String ,Object> getAuthorizationUser( String payeeId ){
public Map<String, Object> getAuthorizationUser(String payeeId) {
Map<String, Object> data = new LinkedHashMap<>();
data.put("code", 0);
@@ -92,36 +100,36 @@ public class PayoneerPayController {
/**
* 主动收款
* @param price 金额
* @param userId 付款用户
*
* @param price 金额
* @param userId 付款用户
* @return 支付结果
*/
@ResponseBody
@RequestMapping(value = "microPay.json")
public Map<String, Object> microPay(BigDecimal price, String userId){
public Map<String, Object> microPay(BigDecimal price, String userId) {
PayOrder order = new PayOrder("Order_payment:", "Order payment", price, UUID.randomUUID().toString().replace("-", ""), PayoneerTransactionType.CHARGE);
//币种
order.setCurType(DefaultCurType.USD);
//设置授权码,条码等
order.setAuthCode( userId);
order.setAuthCode(userId);
//支付结果
Map<String, Object> params = service.microPay(order);
if (10700 == (Integer) params.get(PayoneerPayService.CODE)){
if (10700 == (Integer) params.get(PayoneerPayService.CODE)) {
System.out.println("未授权");
}else if (0 == (Integer) params.get(PayoneerPayService.CODE)){
}
else if (0 == (Integer) params.get(PayoneerPayService.CODE)) {
System.out.println("收款成功");
}
return params;
}
/**
* 用户授权回调地址
*
* @param request 请求
*
* @return 是否成功
* @throws IOException IOException
*/
@@ -166,6 +174,7 @@ public class PayoneerPayController {
public Map<String, Object> close(QueryOrder order) {
return service.close(order.getTradeNo(), order.getOutTradeNo());
}
/**
* 申请退款接口
*
@@ -173,7 +182,7 @@ public class PayoneerPayController {
* @return 返回支付方申请退款后的结果
*/
@RequestMapping("refund")
public Map<String, Object> refund(RefundOrder order) {
public RefundResult refund(RefundOrder order) {
return service.refund(order);
}
@@ -195,7 +204,6 @@ public class PayoneerPayController {
* 转账
*
* @param order 转账订单
*
* @return 对应的转账结果
*/
@RequestMapping("transfer")
@@ -213,7 +221,6 @@ public class PayoneerPayController {
*
* @param outNo 商户转账订单号
* @param tradeNo 支付平台转账订单号
*
* @return 对应的转账订单
*/
@RequestMapping("transferQuery")

View File

@@ -3,16 +3,16 @@
package com.egzosn.pay.demo.dao;
import com.egzosn.pay.common.bean.MsgType;
import java.util.HashMap;
import java.util.Map;
import com.egzosn.pay.common.util.sign.SignUtils;
import com.egzosn.pay.demo.entity.ApyAccount;
import com.egzosn.pay.demo.entity.PayType;
import java.util.HashMap;
import java.util.Map;
/**
* 账户
*
* @author: egan
* email egzosn@gmail.com
* date 2016/11/18 1:21
@@ -21,12 +21,11 @@ import java.util.Map;
public class ApyAccountRepository {
// 这里简单模拟引入orm等框架之后可自行删除
public static Map<Integer, ApyAccount> apyAccounts = new HashMap<>();
public static Map<Integer, ApyAccount> apyAccounts = new HashMap<>();
/**
* 这里简单初始化引入orm等框架之后可自行删除
*/
{
*/ {
ApyAccount apyAccount1 = new ApyAccount();
apyAccount1.setPayId(1);
apyAccount1.setPartner("2088102169916436");
@@ -41,7 +40,6 @@ public class ApyAccountRepository {
apyAccount1.setSeller("2088102169916436");
apyAccount1.setSignType(SignUtils.RSA.name());
apyAccount1.setPayType(PayType.aliPay);
apyAccount1.setMsgType(MsgType.text);
//设置测试环境
apyAccount1.setTest(true);
apyAccounts.put(apyAccount1.getPayId(), apyAccount1);
@@ -60,7 +58,6 @@ public class ApyAccountRepository {
apyAccount2.setSeller("1469188802");
apyAccount2.setSignType(SignUtils.MD5.name());
apyAccount2.setPayType(PayType.wxPay);
apyAccount2.setMsgType(MsgType.xml);
//设置测试环境
apyAccount2.setTest(false);
apyAccounts.put(apyAccount2.getPayId(), apyAccount2);
@@ -78,7 +75,6 @@ public class ApyAccountRepository {
apyAccount3.setInputCharset("UTF-8");
apyAccount3.setSignType(SignUtils.MD5.name());
apyAccount3.setPayType(PayType.wxPay);
apyAccount3.setMsgType(MsgType.xml);
apyAccounts.put(apyAccount3.getPayId(), apyAccount3);
ApyAccount apyAccount4 = new ApyAccount();
@@ -95,7 +91,6 @@ public class ApyAccountRepository {
apyAccount4.setInputCharset("UTF-8");
apyAccount4.setSignType(SignUtils.RSA2.name());
apyAccount4.setPayType(PayType.unionPay);
apyAccount4.setMsgType(MsgType.json);
apyAccount4.setTest(true);
apyAccounts.put(apyAccount4.getPayId(), apyAccount4);
@@ -106,7 +101,6 @@ public class ApyAccountRepository {
apyAccount5.setStorePassword("12BkDT8152Zj");//API password
apyAccount5.setInputCharset("UTF-8");
apyAccount5.setPayType(PayType.payoneer);
apyAccount5.setMsgType(MsgType.json);
apyAccount5.setTest(true);
apyAccounts.put(apyAccount5.getPayId(), apyAccount5);
@@ -116,7 +110,6 @@ public class ApyAccountRepository {
apyAccount6.setPrivateKey("1EBMIjAag6NiRdXZxteTv0amEsmKN345xJv3bN7f_HRXSqcRJlW7PXhYXjI9sk5I4nKYOHgeqzhXCXKFo");//API password
apyAccount6.setInputCharset("UTF-8");
apyAccount6.setPayType(PayType.payPal);
apyAccount6.setMsgType(MsgType.json);
apyAccount6.setTest(true);
apyAccounts.put(apyAccount6.getPayId(), apyAccount6);
}
@@ -125,10 +118,11 @@ public class ApyAccountRepository {
/**
* 根据id获取对应的账户信息
*
* @param payId 账户id
* @return 账户信息
*/
public ApyAccount findByPayId(Integer payId){
public ApyAccount findByPayId(Integer payId) {
// TODO 2016/11/18 1:23 author: egan 这里简单模拟 具体实现 略。。
return apyAccounts.get(payId);
}

View File

@@ -2,12 +2,11 @@
package com.egzosn.pay.demo.entity;
import com.egzosn.pay.common.bean.MsgType;
//import javax.persistence.*;
/**
* 支付账户
*
* @author: egan
* email egzosn@gmail.com
* date 2016/11/18 0:36
@@ -59,12 +58,9 @@ public class ApyAccount {
// @Enumerated(EnumType.STRING)
// @Column(name = "pay_type")
private PayType payType;
// 消息类型text,xml,json
// @Enumerated(EnumType.STRING)
// @Column(name = "msg_type")
private MsgType msgType;
//是否为测试环境
private boolean isTest = false;
public Integer getPayId() {
return payId;
}
@@ -145,14 +141,6 @@ public class ApyAccount {
this.payType = payType;
}
public MsgType getMsgType() {
return msgType;
}
public void setMsgType(MsgType msgType) {
this.msgType = msgType;
}
public String getInputCharset() {
return inputCharset;
}
@@ -199,7 +187,6 @@ public class ApyAccount {
", signType='" + signType + '\'' +
", inputCharset='" + inputCharset + '\'' +
", payType=" + payType +
", msgType=" + msgType +
'}';
}
}

View File

@@ -6,7 +6,6 @@ import com.egzosn.pay.ali.bean.AliTransactionType;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.BasePayType;
import com.egzosn.pay.common.bean.CertStoreType;
import com.egzosn.pay.common.bean.MsgType;
import com.egzosn.pay.common.bean.TransactionType;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.demo.service.handler.WxPayMessageHandler;
@@ -30,7 +29,6 @@ import com.egzosn.pay.wx.youdian.api.WxYouDianPayService;
import com.egzosn.pay.wx.youdian.bean.YoudianTransactionType;
/**
* 支付类型
*
@@ -41,7 +39,7 @@ import com.egzosn.pay.wx.youdian.bean.YoudianTransactionType;
public enum PayType implements BasePayType {
aliPay{
aliPay {
/**
* @see com.egzosn.pay.ali.api.AliPayService
* @param apyAccount
@@ -61,7 +59,6 @@ public enum PayType implements BasePayType {
configStorage.setSignType(apyAccount.getSignType());
configStorage.setSeller(apyAccount.getSeller());
configStorage.setPayType(apyAccount.getPayType().toString());
configStorage.setMsgType(apyAccount.getMsgType());
configStorage.setInputCharset(apyAccount.getInputCharset());
configStorage.setTest(apyAccount.isTest());
//请求连接池配置
@@ -82,7 +79,7 @@ public enum PayType implements BasePayType {
}
},wxPay {
}, wxPay {
@Override
public PayService getPayService(ApyAccount apyAccount) {
WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage();
@@ -95,7 +92,6 @@ public enum PayType implements BasePayType {
wxPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
wxPayConfigStorage.setSignType(apyAccount.getSignType());
wxPayConfigStorage.setPayType(apyAccount.getPayType().toString());
wxPayConfigStorage.setMsgType(apyAccount.getMsgType());
wxPayConfigStorage.setInputCharset(apyAccount.getInputCharset());
wxPayConfigStorage.setTest(apyAccount.isTest());
@@ -124,7 +120,7 @@ public enum PayType implements BasePayType {
return WxTransactionType.valueOf(transactionType);
}
},youdianPay {
}, youdianPay {
@Override
public PayService getPayService(ApyAccount apyAccount) {
// TODO 2017/1/23 14:12 author: egan 集群的话,友店可能会有bug。暂未测试集群环境
@@ -135,11 +131,10 @@ public enum PayType implements BasePayType {
// wxPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
wxPayConfigStorage.setSignType(apyAccount.getSignType());
wxPayConfigStorage.setPayType(apyAccount.getPayType().toString());
wxPayConfigStorage.setMsgType(apyAccount.getMsgType());
wxPayConfigStorage.setSeller(apyAccount.getSeller());
wxPayConfigStorage.setInputCharset(apyAccount.getInputCharset());
wxPayConfigStorage.setTest(apyAccount.isTest());
return new WxYouDianPayService(wxPayConfigStorage);
return new WxYouDianPayService(wxPayConfigStorage);
}
/**
@@ -153,8 +148,7 @@ public enum PayType implements BasePayType {
return YoudianTransactionType.valueOf(transactionType);
}
},fuiou{
}, fuiou {
@Override
public PayService getPayService(ApyAccount apyAccount) {
FuiouPayConfigStorage fuiouPayConfigStorage = new FuiouPayConfigStorage();
@@ -164,7 +158,6 @@ public enum PayType implements BasePayType {
fuiouPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
fuiouPayConfigStorage.setSignType(apyAccount.getSignType());
fuiouPayConfigStorage.setPayType(apyAccount.getPayType().toString());
fuiouPayConfigStorage.setMsgType(apyAccount.getMsgType());
fuiouPayConfigStorage.setInputCharset(apyAccount.getInputCharset());
fuiouPayConfigStorage.setTest(apyAccount.isTest());
return new FuiouPayService(fuiouPayConfigStorage);
@@ -176,8 +169,7 @@ public enum PayType implements BasePayType {
}
},unionPay{
}, unionPay {
@Override
public PayService getPayService(ApyAccount apyAccount) {
UnionPayConfigStorage unionPayConfigStorage = new UnionPayConfigStorage();
@@ -201,7 +193,6 @@ public enum PayType implements BasePayType {
unionPayConfigStorage.setReturnUrl(apyAccount.getReturnUrl());
unionPayConfigStorage.setSignType(apyAccount.getSignType());
unionPayConfigStorage.setPayType(apyAccount.getPayType().toString());
unionPayConfigStorage.setMsgType(apyAccount.getMsgType());
unionPayConfigStorage.setInputCharset(apyAccount.getInputCharset());
unionPayConfigStorage.setTest(apyAccount.isTest());
return new UnionPayService(unionPayConfigStorage);
@@ -213,13 +204,12 @@ public enum PayType implements BasePayType {
}
},payoneer{
}, payoneer {
@Override
public PayService getPayService(ApyAccount apyAccount) {
PayoneerConfigStorage configStorage = new PayoneerConfigStorage();
//设置商户Id
configStorage.setProgramId(apyAccount.getPartner());
configStorage.setMsgType(MsgType.json);
configStorage.setInputCharset("utf-8");
//"PayoneerPay 用户名"
configStorage.setUserName(apyAccount.getSeller());
@@ -243,7 +233,7 @@ public enum PayType implements BasePayType {
}
},payPal{
}, payPal {
@Override
public PayService getPayService(ApyAccount apyAccount) {
PayPalConfigStorage storage = new PayPalConfigStorage();

View File

@@ -1,22 +1,28 @@
package com.egzosn.pay.demo.service;
import javax.annotation.Resource;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import com.egzosn.pay.common.api.PayConfigStorage;
import com.egzosn.pay.common.api.PayMessageHandler;
import com.egzosn.pay.common.api.PayMessageRouter;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.MsgType;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.demo.entity.ApyAccount;
import com.egzosn.pay.demo.entity.PayType;
import com.egzosn.pay.demo.service.handler.*;
import com.egzosn.pay.demo.service.handler.AliPayMessageHandler;
import com.egzosn.pay.demo.service.handler.FuiouPayMessageHandler;
import com.egzosn.pay.demo.service.handler.PayoneerMessageHandler;
import com.egzosn.pay.demo.service.handler.UnionPayMessageHandler;
import com.egzosn.pay.demo.service.handler.WxPayMessageHandler;
import com.egzosn.pay.demo.service.handler.YouDianPayMessageHandler;
import com.egzosn.pay.demo.service.interceptor.AliPayMessageInterceptor;
import com.egzosn.pay.demo.service.interceptor.YoudianPayMessageInterceptor;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import javax.annotation.Resource;
/**
* 支付响应对象
*
* @author: egan
* email egzosn@gmail.com
* date 2016/11/18 0:34
@@ -38,6 +44,7 @@ public class PayResponse {
/**
* 初始化支付配置
*
* @param apyAccount 账户信息
* @see ApyAccount 对应表结构详情--》 /pay-java-demo/resources/apy_account.sql
*/
@@ -52,13 +59,14 @@ public class PayResponse {
/**
* 获取http配置如果配置为null则为默认配置无代理,无证书的请求方式。
* 此处非必需
* 此处非必需
*
* @param apyAccount 账户信息
* @return 请求配置
*/
public HttpConfigStorage getHttpConfigStorage(ApyAccount apyAccount){
public HttpConfigStorage getHttpConfigStorage(ApyAccount apyAccount) {
HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
/* 网路代理配置 根据需求进行设置*/
/* 网路代理配置 根据需求进行设置*/
// //http代理地址
// httpConfigStorage.setHttpProxyHost("192.168.1.69");
// //代理端口
@@ -77,6 +85,7 @@ public class PayResponse {
/**
* 配置路由
*
* @param payId 指定账户id用户多微信支付多支付宝支付
*/
private void buildRouter(Integer payId) {
@@ -84,7 +93,6 @@ public class PayResponse {
router
.rule()
//消息类型
.msgType(MsgType.text.name())
//支付账户事件类型
.payType(PayType.aliPay.name())
//拦截器
@@ -93,33 +101,27 @@ public class PayResponse {
.handler(spring.getBean(AliPayMessageHandler.class))
.end()
.rule()
.msgType(MsgType.xml.name())
.payType(PayType.wxPay.name())
.handler(autowire(new WxPayMessageHandler(payId)))
.end()
.rule()
.msgType(MsgType.json.name())
.payType(PayType.youdianPay.name())
.interceptor(new YoudianPayMessageInterceptor()) //拦截器
.handler(autowire(new YouDianPayMessageHandler(payId)))
.end()
.rule()
.msgType(MsgType.xml.name())
.payType(PayType.fuiou.name())
.handler(autowire(new FuiouPayMessageHandler(payId)))
.end()
.rule()
.msgType(MsgType.json.name())
.payType(PayType.unionPay.name())
.handler(autowire(new UnionPayMessageHandler(payId)))
.end()
.rule()
.msgType(MsgType.json.name())
.payType(PayType.payoneer.name())
.handler(autowire(new PayoneerMessageHandler(payId)))
.end()
.rule()
.msgType(MsgType.text.name())
.payType(PayType.payPal.name())
.handler(spring.getBean(AliPayMessageHandler.class))
.end()