From e458b461ebb0b406e5d6da1872909b432ca9af36 Mon Sep 17 00:00:00 2001 From: "kuang.yife" Date: Fri, 15 Dec 2023 10:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=A8=A1=E5=9E=8B,=E4=B8=AD?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/web/request/AdapayReq.java | 4 ++ .../com/ruoyi/web/response/AdapayResp.java | 16 ++++++ .../com/ruoyi/web/service/AdapayService.java | 4 +- .../web/service/impl/AdapayServiceImpl.java | 54 ++++++++----------- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/request/AdapayReq.java b/ruoyi-admin/src/main/java/com/ruoyi/web/request/AdapayReq.java index 64f03424..8d801ba8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/request/AdapayReq.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/request/AdapayReq.java @@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + @Data @ApiModel(value = "支付请求对象") public class AdapayReq { + @NotNull @ApiModelProperty(value = "用户id") private Long userId; + @NotNull @ApiModelProperty(value = "订单类型 0.初级合伙人 1.高级合伙人 2.区域合伙人") private Long orderType; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/response/AdapayResp.java b/ruoyi-admin/src/main/java/com/ruoyi/web/response/AdapayResp.java index d375abfc..7b65a3fb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/response/AdapayResp.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/response/AdapayResp.java @@ -1,4 +1,20 @@ package com.ruoyi.web.response; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "App*支付响应参数") public class AdapayResp { + + @ApiModelProperty(value = "支付订单号") + private String orderNo; + + @ApiModelProperty(value = "二维码url") + private String qrcodeUrl; + + @ApiModelProperty(value = "查询url") + private String queryUrl; + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/service/AdapayService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/service/AdapayService.java index 430c677d..7dcd7c74 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/service/AdapayService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/service/AdapayService.java @@ -3,6 +3,8 @@ package com.ruoyi.web.service; import com.ruoyi.web.request.AdapayReq; import com.ruoyi.web.response.AdapayResp; +import java.util.Map; + public interface AdapayService { /** @@ -10,6 +12,6 @@ public interface AdapayService { * @param adapayReq 支付对象 * @return 响应对象 */ - public AdapayResp pay(AdapayReq adapayReq); + public AdapayResp pay(AdapayReq adapayReq) throws Exception; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/service/impl/AdapayServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/service/impl/AdapayServiceImpl.java index 328e8e37..62659f1c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/service/impl/AdapayServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/service/impl/AdapayServiceImpl.java @@ -1,8 +1,9 @@ package com.ruoyi.web.service.impl; +import com.alibaba.fastjson.JSONObject; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; -import com.ruoyi.common.json.JSONObject; +import com.ruoyi.common.utils.ExceptionUtil; import com.ruoyi.web.core.config.AdapayConfig; import com.ruoyi.web.request.AdapayReq; import com.ruoyi.web.response.AdapayResp; @@ -22,48 +23,37 @@ public class AdapayServiceImpl implements AdapayService { private AdapayConfig adapayConfig; @Override - public AdapayResp pay(AdapayReq adapayReq) { - //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + public AdapayResp pay(AdapayReq adapayReq) throws Exception{ + AdapayResp resp = new AdapayResp(); + Map paymentParams = new HashMap<>(10); - - // 设置超时时间 单位毫秒 类型 int - // adapay_connection_request_timeout 类型 int, 单位:毫秒 ms - // 非必须, 默认 10000 指从连接池获取连接的 timeout - paymentParams.put("adapay_connection_request_timeout", 1500); - // adapay_connect_timeout 单位:毫秒 ms - // 非必须, 默认 30000 指客户端和服务器建立连接的timeout - paymentParams.put("adapay_connect_timeout", 1500); - // adapay_socket_timeout 单位:毫秒 ms - // 非必须, 默认 30000 指客户端从服务器读取数据的timeout,超出后会抛出SocketTimeOutException - paymentParams.put("adapay_socket_timeout", 1500); - - // 设置网络区域 - // 非必须, 默认 shanghai, 如果要使用其他区域请提交工单备注服务器公网出口IP地址申请开通(如:beijing) -// paymentParams.put("adapay_region", "beijing"); - - + paymentParams.put("adapay_connection_request_timeout", 10000); + paymentParams.put("adapay_connect_timeout", 30000); + paymentParams.put("adapay_socket_timeout", 30000); paymentParams.put("app_id", adapayConfig.getAppId()); - paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("order_no", "match_order_" + adapayReq.getUserId() + "_" + adapayReq.getOrderType() + "_" + System.currentTimeMillis()); paymentParams.put("pay_channel", "alipay"); paymentParams.put("pay_amt", "0.01"); - - paymentParams.put("goods_title", "your goods title"); - paymentParams.put("goods_desc", "your goods desc"); - + paymentParams.put("goods_title", "全民脱单合伙人开通"); + paymentParams.put("goods_desc", "全民脱单合伙人资格开通"); paymentParams.put("div_members", ""); - //调用sdk方法,创建支付,得到支付对象 Map payment = new HashMap<>(); try { - log.info("支付交易,请求参数:" + JSONObject.valueAsStr(payment)); + log.info("调用第三方支付,入参:{}", JSONObject.toJSONString(paymentParams)); payment = Payment.create(paymentParams); - + log.info("调用第三方支付, 响应:{}", JSONObject.toJSONString(payment)); } catch (BaseAdaPayException e) { - e.printStackTrace(); + log.error("调用第三方支付报错: {}", ExceptionUtil.getExceptionMessage(e)); + throw new Exception("调用支付失败"); } - log.info("支付交易,返回参数:" + JSONObject.valueAsStr(payment)); - log.info("=======execute payment end======="); - return null; + if("succeeded".equals(String.valueOf(payment.get("status")))){ + resp.setOrderNo(String.valueOf(payment.get("order_no"))); + JSONObject expendJson = JSONObject.parseObject(String.valueOf(payment.get("expend"))); + resp.setQrcodeUrl(expendJson.getString("pay_info")); + resp.setQueryUrl(expendJson.getString("query_url")); + } + return resp; } }