支付模型,中版

This commit is contained in:
kuang.yife 2023-12-15 10:31:18 +08:00
parent 8859a72a61
commit e458b461eb
4 changed files with 45 additions and 33 deletions

View File

@ -4,13 +4,17 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
@Data @Data
@ApiModel(value = "支付请求对象") @ApiModel(value = "支付请求对象")
public class AdapayReq { public class AdapayReq {
@NotNull
@ApiModelProperty(value = "用户id") @ApiModelProperty(value = "用户id")
private Long userId; private Long userId;
@NotNull
@ApiModelProperty(value = "订单类型 0.初级合伙人 1.高级合伙人 2.区域合伙人") @ApiModelProperty(value = "订单类型 0.初级合伙人 1.高级合伙人 2.区域合伙人")
private Long orderType; private Long orderType;

View File

@ -1,4 +1,20 @@
package com.ruoyi.web.response; 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 { public class AdapayResp {
@ApiModelProperty(value = "支付订单号")
private String orderNo;
@ApiModelProperty(value = "二维码url")
private String qrcodeUrl;
@ApiModelProperty(value = "查询url")
private String queryUrl;
} }

View File

@ -3,6 +3,8 @@ package com.ruoyi.web.service;
import com.ruoyi.web.request.AdapayReq; import com.ruoyi.web.request.AdapayReq;
import com.ruoyi.web.response.AdapayResp; import com.ruoyi.web.response.AdapayResp;
import java.util.Map;
public interface AdapayService { public interface AdapayService {
/** /**
@ -10,6 +12,6 @@ public interface AdapayService {
* @param adapayReq 支付对象 * @param adapayReq 支付对象
* @return 响应对象 * @return 响应对象
*/ */
public AdapayResp pay(AdapayReq adapayReq); public AdapayResp pay(AdapayReq adapayReq) throws Exception;
} }

View File

@ -1,8 +1,9 @@
package com.ruoyi.web.service.impl; package com.ruoyi.web.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Payment; 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.core.config.AdapayConfig;
import com.ruoyi.web.request.AdapayReq; import com.ruoyi.web.request.AdapayReq;
import com.ruoyi.web.response.AdapayResp; import com.ruoyi.web.response.AdapayResp;
@ -22,48 +23,37 @@ public class AdapayServiceImpl implements AdapayService {
private AdapayConfig adapayConfig; private AdapayConfig adapayConfig;
@Override @Override
public AdapayResp pay(AdapayReq adapayReq) { public AdapayResp pay(AdapayReq adapayReq) throws Exception{
//创建支付对象的参数全部参数请参考 https://docs.adapay.tech/api/index.html AdapayResp resp = new AdapayResp();
Map<String, Object> paymentParams = new HashMap<>(10); Map<String, Object> paymentParams = new HashMap<>(10);
paymentParams.put("adapay_connection_request_timeout", 10000);
// 设置超时时间 单位毫秒 类型 int paymentParams.put("adapay_connect_timeout", 30000);
// adapay_connection_request_timeout 类型 int, 单位毫秒 ms paymentParams.put("adapay_socket_timeout", 30000);
// 非必须, 默认 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("app_id", adapayConfig.getAppId()); 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_channel", "alipay");
paymentParams.put("pay_amt", "0.01"); paymentParams.put("pay_amt", "0.01");
paymentParams.put("goods_title", "全民脱单合伙人开通");
paymentParams.put("goods_title", "your goods title"); paymentParams.put("goods_desc", "全民脱单合伙人资格开通");
paymentParams.put("goods_desc", "your goods desc");
paymentParams.put("div_members", ""); paymentParams.put("div_members", "");
//调用sdk方法创建支付得到支付对象 //调用sdk方法创建支付得到支付对象
Map<String, Object> payment = new HashMap<>(); Map<String, Object> payment = new HashMap<>();
try { try {
log.info("支付交易,请求参数:" + JSONObject.valueAsStr(payment)); log.info("调用第三方支付,入参:{}", JSONObject.toJSONString(paymentParams));
payment = Payment.create(paymentParams); payment = Payment.create(paymentParams);
log.info("调用第三方支付, 响应:{}", JSONObject.toJSONString(payment));
} catch (BaseAdaPayException e) { } catch (BaseAdaPayException e) {
e.printStackTrace(); log.error("调用第三方支付报错: {}", ExceptionUtil.getExceptionMessage(e));
throw new Exception("调用支付失败");
} }
log.info("支付交易,返回参数:" + JSONObject.valueAsStr(payment)); if("succeeded".equals(String.valueOf(payment.get("status")))){
log.info("=======execute payment end======="); resp.setOrderNo(String.valueOf(payment.get("order_no")));
return null; JSONObject expendJson = JSONObject.parseObject(String.valueOf(payment.get("expend")));
resp.setQrcodeUrl(expendJson.getString("pay_info"));
resp.setQueryUrl(expendJson.getString("query_url"));
}
return resp;
} }
} }