diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java index b7d8124..261c794 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayService.java @@ -125,7 +125,6 @@ public abstract class BasePayService implements Pay * @param characterEncoding 字符编码 * @return 签名 */ - @Override public String createSign(Map content, String characterEncoding) { return SignUtils.valueOf(payConfigStorage.getSignType()).sign(content, payConfigStorage.getKeyPrivate(), characterEncoding); } @@ -141,6 +140,16 @@ public abstract class BasePayService implements Pay Map orderInfo = orderInfo(order); return buildRequest(orderInfo, MethodType.POST); } + /** + * app支付 + * @param order 订单信息 + * @param 预订单类型 + * @return 对应app所需参数信息 + */ + @Override + public Map app(O order) { + return orderInfo(order); + } /** * 生成二维码支付 diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java index 9397046..d93bca9 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayService.java @@ -98,6 +98,13 @@ public interface PayService { * @return 对应页面重定向信息 */ String toPay(O order); + /** + * app支付 + * @param order 订单信息 + * @param 预订单类型 + * @return 对应app所需参数信息 + */ + Map app(O order); /** * 创建签名 @@ -108,14 +115,7 @@ public interface PayService { */ String createSign(String content, String characterEncoding); - /** - * 创建签名 - * - * @param content 需要签名的内容 - * @param characterEncoding 字符编码 - * @return 签名 - */ - String createSign(Map content, String characterEncoding); + /** * 将请求参数或者请求流转化为 Map diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/AliPayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/AliPayController.java index e9f5ee6..93a50af 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/AliPayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/AliPayController.java @@ -113,7 +113,7 @@ public class AliPayController { PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", "")); //App支付 order.setTransactionType(AliTransactionType.APP); - data.put("orderInfo", UriVariables.getMapToParameters(service.orderInfo(order))); + data.put("orderInfo", UriVariables.getMapToParameters(service.app(order))); return data; } diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxPayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxPayController.java index ef58916..0728800 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxPayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxPayController.java @@ -144,7 +144,7 @@ public class WxPayController { PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01), UUID.randomUUID().toString().replace("-", "")); //App支付 order.setTransactionType(WxTransactionType.APP); - data.put("orderInfo", service.orderInfo(order)); + data.put("orderInfo", service.app(order)); return data; } diff --git a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java index 978d180..6e97c3d 100644 --- a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java +++ b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java @@ -23,6 +23,9 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; +import java.security.GeneralSecurityException; +import java.security.InvalidAlgorithmParameterException; +import java.security.NoSuchAlgorithmException; import java.security.cert.*; import java.sql.Timestamp; import java.text.DateFormat; @@ -359,21 +362,35 @@ public class UnionPayService extends BasePayService { CertPathBuilder builder = CertPathBuilder.getInstance("PKIX"); - @SuppressWarnings("unused") - PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult) builder.build(pkixParams); + /*PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult)*/ builder.build(pkixParams); return cert; } catch (java.security.cert.CertPathBuilderException e) { LOG.error("verify certificate chain fail.", e); } catch (CertificateExpiredException e) { LOG.error(e); - } catch (CertificateNotYetValidException e) { - LOG.error(e); - } catch (Exception e) { + } catch (GeneralSecurityException e) { LOG.error(e); } return null; } + /** + * 发送订单 + * + * @param order 发起支付的订单信息 + * @return 返回支付结果 + */ + + public JSONObject postOrder(PayOrder order) { + Map params = orderInfo(order); + String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); + JSONObject response = UriVariables.getParametersToMap(responseStr); + if (response.isEmpty()) { + throw new PayErrorException(new PayException("failure", "响应内容有误!", responseStr)); + } + return response; + } + @Override public String toPay(PayOrder order) { @@ -395,20 +412,15 @@ public class UnionPayService extends BasePayService { @Override public String getQrPay(PayOrder order) { order.setTransactionType(UnionTransactionType.APPLY_QR_CODE); - Map params = orderInfo(order); - String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); - Map response = UriVariables.getParametersToMap(responseStr); - if (response.isEmpty()) { - throw new PayErrorException(new PayException("failure", "响应内容有误!", responseStr)); - } + JSONObject response = postOrder(order); if (this.verify(response)) { if (SDKConstants.OK_RESP_CODE.equals(response.get(SDKConstants.param_respCode))) { //成功 return (String) response.get(SDKConstants.param_qrCode); } - throw new PayErrorException(new PayException((String) response.get(SDKConstants.param_respCode), (String) response.get(SDKConstants.param_respMsg), responseStr)); + throw new PayErrorException(new PayException((String) response.get(SDKConstants.param_respCode), (String) response.get(SDKConstants.param_respMsg), response.toJSONString())); } - throw new PayErrorException(new PayException("failure", "验证签名失败", responseStr)); + throw new PayErrorException(new PayException("failure", "验证签名失败", response.toJSONString())); } /** @@ -420,9 +432,8 @@ public class UnionPayService extends BasePayService { @Override public Map microPay(PayOrder order) { order.setTransactionType(UnionTransactionType.CONSUME); - Map params = orderInfo(order); - String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); - return UriVariables.getParametersToMap(responseStr); + JSONObject response = postOrder(order); + return response; } @@ -499,17 +510,14 @@ public class UnionPayService extends BasePayService { /** * 功能:将订单信息进行签名并提交请求 - * 业务范围:手机控件支付产品(WAP), + * 业务范围:手机支付控件(含安卓Pay) * @param order 订单信息 * @return 成功:返回支付结果 失败:返回 */ - public Map sendHttpRequest(PayOrder order){ - Map params = orderInfo(order); - String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); - Map response = UriVariables.getParametersToMap(responseStr); - if (response.isEmpty()) { - throw new PayErrorException(new PayException("failure", "响应内容有误!", responseStr)); - } + @Override + public Map app(PayOrder order){ + order.setTransactionType(UnionTransactionType.APP); + JSONObject response = postOrder(order); if (this.verify(response)) { if (SDKConstants.OK_RESP_CODE.equals(response.get(SDKConstants.param_respCode))) { // //成功,获取tn号 @@ -517,9 +525,9 @@ public class UnionPayService extends BasePayService { // //TODO return response; } - throw new PayErrorException(new PayException((String) response.get(SDKConstants.param_respCode), (String) response.get(SDKConstants.param_respMsg), responseStr)); + throw new PayErrorException(new PayException((String) response.get(SDKConstants.param_respCode), (String) response.get(SDKConstants.param_respMsg), response.toJSONString())); } - throw new PayErrorException(new PayException("failure", "验证签名失败", responseStr)); + throw new PayErrorException(new PayException("failure", "验证签名失败", response.toJSONString())); } /**