支付模型,中版

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 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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<String, Object> 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<String, Object> 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;
}
}