From de7218d5ffb5ac00565d14a30735faf2bdc0dc32 Mon Sep 17 00:00:00 2001 From: egan Date: Tue, 31 Oct 2017 23:40:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/ali/api/AliPayConfigStorage.java | 22 ++----- .../com/egzosn/pay/ali/api/AliPayService.java | 10 +--- .../pay/ali/bean/AliTransactionType.java | 58 +++++++++++++++---- .../pay/ali/before/api/AliPayService.java | 8 +-- .../ali/before/bean/AliTransactionType.java | 40 +++++++++++-- .../pay/common/api/BasePayConfigStorage.java | 2 +- .../pay/common/api/PayMessageRouterRule.java | 6 +- .../pay/demo/controller/PayController.java | 4 +- .../egzosn/pay/demo/service/PayResponse.java | 4 -- .../service/handler/AliPayMessageHandler.java | 2 + .../pay/union/api/UnionPayConfigStorage.java | 30 +--------- .../egzosn/pay/wx/api/WxPayConfigStorage.java | 8 +-- .../egzosn/pay/wx/bean/WxTransactionType.java | 43 ++++++++++---- 13 files changed, 134 insertions(+), 103 deletions(-) diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayConfigStorage.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayConfigStorage.java index 54acd26..fad78e7 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayConfigStorage.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayConfigStorage.java @@ -12,32 +12,18 @@ import com.egzosn.pay.common.api.BasePayConfigStorage; public class AliPayConfigStorage extends BasePayConfigStorage { /** - * 商户PID + * 商户应用id */ - public volatile String appId ; + private volatile String appId ; /** * 商户签约拿到的pid,partner_id的简称,合作伙伴身份等同于 partner */ - public volatile String pid ; + private volatile String pid ; /** * 商户收款账号 */ - public volatile String seller; - /** - * 公钥 - */ - private volatile String aliPublicKey; - - - public String getAliPublicKey() { - return aliPublicKey; - } - - public void setAliPublicKey(String aliPublicKey) { - setKeyPublic(aliPublicKey); - this.aliPublicKey = aliPublicKey; - } + private volatile String seller; diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java index 68c94bb..d5d832c 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java @@ -163,11 +163,6 @@ public class AliPayService extends BasePayService { */ private Map getOrder(PayOrder order) { - //兼容上一版本 即时收款 - /* if (AliTransactionType.DIRECT == order.getTransactionType() || AliTransactionType.MOBILE == order.getTransactionType() || AliTransactionType.WAPPAY == order.getTransactionType()){ - return getOrderBefore(order); - } -*/ Map orderInfo = getPublicParameters(order.getTransactionType()); @@ -185,7 +180,6 @@ public class AliPayService extends BasePayService { case DIRECT: bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); orderInfo.put("return_url", payConfigStorage.getReturnUrl()); -// bizContent.remove("seller_id"); break; case WAP: bizContent.put("product_code", "QUICK_WAP_PAY"); @@ -245,7 +239,6 @@ public class AliPayService extends BasePayService { valueStr += (i == len - 1) ? values[i] : values[i] + ","; } //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 - //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk"); if (!valueStr.matches("\\w+")){ try { if(valueStr.equals(new String(valueStr.getBytes("iso8859-1"), "iso8859-1"))){ @@ -313,8 +306,7 @@ public class AliPayService extends BasePayService { Map orderInfo = orderInfo(order); -// Map content = new HashMap<>(1); -// content.put("biz_content", orderInfo.remove("biz_content")); + //预订单 JSONObject result = getHttpRequestTemplate().postForObject(getReqUrl() + "?" + UriVariables.getMapToParameters(orderInfo), null, JSONObject.class); JSONObject response = result.getJSONObject("alipay_trade_precreate_response"); diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java index df56276..57c4ea2 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/bean/AliTransactionType.java @@ -19,16 +19,54 @@ import com.egzosn.pay.common.bean.TransactionType; * date 2016/10/19 22:58 */ public enum AliTransactionType implements TransactionType { - //即时到帐 //手机网站支付 - DIRECT("alipay.trade.page.pay"),APP("alipay.trade.app.pay"),WAP("alipay.trade.wap.pay") - // TODO 2017/2/23 20:26 author: egan 以下三个为主动交易类型 暂未测试, - //扫码付 //条码付 // 声波付 - ,SWEEPPAY("alipay.trade.precreate"),BAR_CODE("alipay.trade.pay"),WAVE_CODE("alipay.trade.pay") - //交易辅助接口 - ,QUERY("alipay.trade.query"),CLOSE("alipay.trade.close"),REFUND("alipay.trade.refund"),REFUNDQUERY("alipay.trade.fastpay.refund.query"),DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query") + /** + * 即时到帐 + */ + DIRECT("alipay.trade.page.pay"), + /** + * APP支付 + */ + APP("alipay.trade.app.pay"), + /** + * 手机网站支付 + */ + WAP("alipay.trade.wap.pay") + + /** + * 扫码付 + */ + ,SWEEPPAY("alipay.trade.precreate"), + /** + * 条码付 + */ + BAR_CODE("alipay.trade.pay"), + /** + * 声波付 + */ + WAVE_CODE("alipay.trade.pay") + //交易辅助接口 + + /** + * 交易订单查询 + */ + ,QUERY("alipay.trade.query"), + /** + * 交易订单关闭 + */ + CLOSE("alipay.trade.close"), + /** + * 退款 + */ + REFUND("alipay.trade.refund"), + /** + * 退款查询 + */ + REFUNDQUERY("alipay.trade.fastpay.refund.query"), + /** + * 下载对账单 + */ + DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query") - //回调通知,回调后不清楚交易类型,以此定义 - ,UNAWARE("UNAWARE") ; @@ -44,7 +82,7 @@ public enum AliTransactionType implements TransactionType { return this.name(); } - /** + /* * * 获取接口名称 * @return 接口名称 */ diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java index bc64224..8aa2b58 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/api/AliPayService.java @@ -36,8 +36,8 @@ public class AliPayService extends BasePayService { protected final Log LOG = LogFactory.getLog(AliPayService.class); - private String HTTPS_REQ_URL = "https://mapi.alipay.com/gateway.do"; - private String QUERY_REQ_URL = "https://openapi.alipay.com/gateway.do"; + private static final String HTTPS_REQ_URL = "https://mapi.alipay.com/gateway.do"; + private static final String QUERY_REQ_URL = "https://openapi.alipay.com/gateway.do"; public AliPayService(PayConfigStorage payConfigStorage) { super(payConfigStorage); @@ -164,7 +164,7 @@ public class AliPayService extends BasePayService { } private String getOrderInfo(PayOrder order) { - String orderInfo = "partner=\"" + this.payConfigStorage.getPartner() + "\""; + String orderInfo = "partner=\"" + this.payConfigStorage.getPid() + "\""; orderInfo = orderInfo + "&seller_id=\"" + this.payConfigStorage.getSeller() + "\""; orderInfo = orderInfo + "&out_trade_no=\"" + order.getOutTradeNo() + "\""; orderInfo = orderInfo + "&subject=\"" + order.getSubject() + "\""; @@ -190,7 +190,7 @@ public class AliPayService extends BasePayService { private Map getOrder(PayOrder order) { Map orderInfo = new TreeMap<>(); // 签约合作者身份ID - orderInfo.put("partner", payConfigStorage.getPartner()); + orderInfo.put("partner", payConfigStorage.getPid()); // 签约卖家支付宝账号 orderInfo.put("seller_id", payConfigStorage.getSeller()); // 商户网站唯一订单号 diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/bean/AliTransactionType.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/bean/AliTransactionType.java index d3e2963..f178979 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/bean/AliTransactionType.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/before/bean/AliTransactionType.java @@ -22,13 +22,41 @@ import com.egzosn.pay.common.bean.TransactionType; */ @Deprecated public enum AliTransactionType implements TransactionType { - //即时到帐 //移动支付 //手机网站支付 - DIRECT("create_direct_pay_by_user"),APP("mobile.securitypay.pay"),WAP("alipay.wap.create.direct.pay.by.user"), - //交易辅助接口 - QUERY("alipay.trade.query"),CLOSE("alipay.trade.close"),REFUND("alipay.trade.refund"),REFUNDQUERY("alipay.trade.fastpay.refund.query"),DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query") + /** + * 即时到帐 + */ + DIRECT("create_direct_pay_by_user"), + /** + * 移动支付 + */ + APP("mobile.securitypay.pay"), + /** + * 手机网站支付 + */ + WAP("alipay.wap.create.direct.pay.by.user"), - //不知道交易类型,主要用于回调通知,回调后不清楚交易类型,以此定义 - ,UNAWARE("UNAWARE") + //交易辅助接口 + + /** + * 交易订单查询 + */ + QUERY("alipay.trade.query"), + /** + * 交易订单关闭 + */ + CLOSE("alipay.trade.close"), + /** + * 退款 + */ + REFUND("alipay.trade.refund"), + /** + * 退款查询 + */ + REFUNDQUERY("alipay.trade.fastpay.refund.query"), + /** + * 下载对账单 + */ + DOWNLOADBILL("alipay.data.dataservice.bill.downloadurl.query") ; private String method; 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 6384319..cc7ebd0 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 @@ -31,7 +31,7 @@ public abstract class BasePayConfigStorage implements PayConfigStorage{ /** * 同步回调地址,支付完成后展示的页面 */ - private volatile String returnUrl;; + private volatile String returnUrl; /** * 签名加密类型 */ diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouterRule.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouterRule.java index 09a0171..97bd210 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouterRule.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayMessageRouterRule.java @@ -27,8 +27,10 @@ public class PayMessageRouterRule { private final PayMessageRouter routerBuilder; - - private boolean async = true; + /** + * 默认同步 + */ + private boolean async = false; /** * 消息类型 diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java index 8bcd0aa..425f40c 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayController.java @@ -95,7 +95,7 @@ public class PayController { * @param payId 账户id * @param openid openid * @param price 金额 - * @return 跳到支付页面 + * @return 返回jsapi所需参数 */ @RequestMapping(value = "jsapi" ) public Map toPay(Integer payId, String openid, BigDecimal price) { @@ -130,7 +130,7 @@ public class PayController { order.setAuthCode(authCode); //支付结果 Map params = payResponse.getService().microPay(order); - PayConfigStorage storage = payResponse.getStorage(); + PayConfigStorage storage = payResponse.getService().getPayConfigStorage(); //校验 if (payResponse.getService().verify(params)) { PayMessage message = new PayMessage(params, storage.getPayType(), storage.getMsgType().name()); diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/PayResponse.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/PayResponse.java index 5a2f43e..f4ca4f2 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/PayResponse.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/PayResponse.java @@ -91,7 +91,6 @@ public class PayResponse { router = new PayMessageRouter(this.service); router .rule() - .async(false) //消息类型 .msgType(MsgType.text.name()) //支付账户事件类型 @@ -102,20 +101,17 @@ public class PayResponse { .handler(autowire(new AliPayMessageHandler(payId))) .end() .rule() - .async(false) .msgType(MsgType.xml.name()) .payType(PayType.wxPay.name()) .handler(autowire(new WxPayMessageHandler(payId))) .end() .rule() - .async(false) .msgType(MsgType.json.name()) .payType(PayType.youdianPay.name()) .interceptor(new YoudianPayMessageInterceptor()) //拦截器 .handler(autowire(new YouDianPayMessageHandler(payId))) .end() .rule() - .async(false) .msgType(MsgType.xml.name()) .payType(PayType.fuiou.name()) .handler(autowire(new FuiouPayMessageHandler(payId))) diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/handler/AliPayMessageHandler.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/handler/AliPayMessageHandler.java index 80ec804..2d09214 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/handler/AliPayMessageHandler.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/service/handler/AliPayMessageHandler.java @@ -3,6 +3,7 @@ package com.egzosn.pay.demo.service.handler; import com.egzosn.pay.common.api.PayService; import com.egzosn.pay.common.bean.PayMessage; import com.egzosn.pay.common.bean.PayOutMessage; +import com.egzosn.pay.common.bean.outbuilder.TextBuilder; import com.egzosn.pay.common.exception.PayErrorException; import java.math.BigDecimal; @@ -42,6 +43,7 @@ public class AliPayMessageHandler extends BasePayMessageHandler { }/* else if ("WAIT_BUYER_PAY".equals(trade_status) || "TRADE_CLOSED".equals(trade_status)) { }*/ + return payService.getPayOutMessage("fail", "失败"); } } diff --git a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayConfigStorage.java b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayConfigStorage.java index 0b847ee..56c2c1a 100644 --- a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayConfigStorage.java +++ b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayConfigStorage.java @@ -20,19 +20,10 @@ public class UnionPayConfigStorage extends BasePayConfigStorage { // 商户收款账号 public volatile String seller; - //公钥 - private volatile String aliPublicKey; + //全渠道固定值 public static String version = "5.0.0"; - public String getAliPublicKey() { - return aliPublicKey; - } - - public void setAliPublicKey(String aliPublicKey) { - setKeyPublic(aliPublicKey); - this.aliPublicKey = aliPublicKey; - } @@ -41,27 +32,8 @@ public class UnionPayConfigStorage extends BasePayConfigStorage { return null; } - /** - * @see #getPid() - * @return 合作者id - */ - @Deprecated - @Override - public String getPartner() { - return pid; - } - /** - * 设置合作者id - * @see #setPid(String) - * @param partner 合作者id - */ - @Deprecated - public void setPartner(String partner) { - this.pid = partner; - } - @Override public String getPid() { return pid; diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayConfigStorage.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayConfigStorage.java index b8ba922..54184b5 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayConfigStorage.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayConfigStorage.java @@ -14,22 +14,18 @@ import com.egzosn.pay.common.api.BasePayConfigStorage; public class WxPayConfigStorage extends BasePayConfigStorage { - public String appSecret; /** * 应用id */ - public String appid ; + private String appid ; /** * 商户号 合作者id */ - public String mchId; + private String mchId; - public void setAppSecret(String appSecret) { - this.appSecret = appSecret; - } @Override public String getAppid() { diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/bean/WxTransactionType.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/bean/WxTransactionType.java index 52c770e..cd6ff79 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/bean/WxTransactionType.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/bean/WxTransactionType.java @@ -10,28 +10,47 @@ import com.egzosn.pay.common.bean.TransactionType; * date 2016/10/19 22:58 */ public enum WxTransactionType implements TransactionType { - //公众号支付 + /** + * 公众号支付 + */ JSAPI("pay/unifiedorder"), - //扫码付 + /** + * 扫码付 + */ NATIVE("pay/unifiedorder"), - //移动支付 + /** + * 移动支付 + */ APP("pay/unifiedorder"), + /** + * H5支付 + */ MWEB("pay/unifiedorder"), - //刷卡付,暂未接触 + /** + * 刷卡付 + */ MICROPAY("pay/micropay"), // TODO 2017/3/8 19:14 author: egan 交易辅助接口 - //查询订单 + /** + * 查询订单 + */ QUERY("pay/orderquery"), - //关闭订单 + /** + * 关闭订单 + */ CLOSE("pay/closeorder"), - //申请退款 + /** + * 申请退款 + */ REFUND("secapi/pay/refund"), - //查询退款 + /** + * 查询退款 + */ REFUNDQUERY("pay/refundquery"), - //下载对账单 - DOWNLOADBILL("pay/downloadbill"), - //不知道交易类型,主要用于回调通知,回调后不清楚交易类型,以此定义 - UNAWARE("UNAWARE") + /** + * 下载对账单 + */ + DOWNLOADBILL("pay/downloadbill") ; WxTransactionType(String method) {