33333333333
This commit is contained in:
@@ -7,6 +7,14 @@ import lombok.Data;
|
||||
@Schema(description = "用户统计相关")
|
||||
public class UserCountVo {
|
||||
private Long userId;
|
||||
/**
|
||||
* 新增粉丝数
|
||||
*/
|
||||
private Long newFansCount;
|
||||
/**
|
||||
* 新增访客数
|
||||
*/
|
||||
private Long newVisitorCount;
|
||||
/**
|
||||
* 粉丝总数
|
||||
*/
|
||||
|
||||
@@ -100,11 +100,27 @@ public enum TrdPayTypeEnum {
|
||||
* 989 支付宝 934 微信
|
||||
*/
|
||||
V9("https://api.pay.wangwang888.cloud","/Pay_Index.html","/Pay_Trade_query.html","/api/pay/trd/notify/v9","OK"),
|
||||
/**
|
||||
* 商户对接信息
|
||||
* 商户后台:https://20.255.61.130/user
|
||||
* 登录账号:pite
|
||||
* 登录密码:abcd1234
|
||||
* 支付密码:f$4K4&dB
|
||||
* 商户编号:10062
|
||||
* 对接密钥:dqer5b7rrr4d7g6uk61rjvviyt2b50rn
|
||||
* 网关地址:https://20.255.61.130/
|
||||
* 通道编码:1
|
||||
* 回调IP:20.255.61.130
|
||||
* 用json的方式对接
|
||||
* pay_type=json
|
||||
*/
|
||||
V10("https://20.255.61.130","/Pay_Index.html","/Pay_Trade_query.html","/api/pay/trd/notify/v10","OK"),
|
||||
|
||||
;
|
||||
private final String gatewayUrl;
|
||||
private final String createOrderUrl;
|
||||
private final String queryOrderUrl;
|
||||
@Deprecated
|
||||
private final String notifyPath;
|
||||
private final String notifyResp;
|
||||
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
package com.ruoyi.cai.trdpay.handle;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.cai.domain.PayTrdConfig;
|
||||
import com.ruoyi.cai.pay.PayManager;
|
||||
import com.ruoyi.cai.pay.PayOrderInfoDTO;
|
||||
import com.ruoyi.cai.pay.PayReturnResp;
|
||||
import com.ruoyi.cai.service.OrderLogsService;
|
||||
import com.ruoyi.cai.trdpay.PayMd5Util;
|
||||
import com.ruoyi.cai.trdpay.PayTrdService;
|
||||
import com.ruoyi.cai.trdpay.TrdPayTypeEnum;
|
||||
import com.ruoyi.cai.trdpay.dto.NotifyResp;
|
||||
import com.ruoyi.cai.util.RestTemplateUtil;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PayTrdV10Service implements PayTrdService {
|
||||
|
||||
@Autowired
|
||||
private OrderLogsService orderLogsService;
|
||||
@Autowired
|
||||
private PayManager payManager;
|
||||
|
||||
@Override
|
||||
public TrdPayTypeEnum getType() {
|
||||
return TrdPayTypeEnum.V10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PayReturnResp createOrderAli(PayOrderInfoDTO payOrderInfoDTO, PayTrdConfig payTrdConfig,boolean wx) {
|
||||
TrdPayTypeEnum type = getType();
|
||||
RestTemplate rest = RestTemplateUtil.getNoSSLRest();
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("pay_memberid", payTrdConfig.getMchId());
|
||||
params.put("pay_orderid", payOrderInfoDTO.getOrderNo());
|
||||
params.put("pay_applydate", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
params.put("pay_bankcode", payTrdConfig.getProductId(wx));
|
||||
String notifyUrl = type.getNotifyUrl(payTrdConfig.getNotifyUrl(), wx);
|
||||
params.put("pay_notifyurl", notifyUrl);
|
||||
params.put("pay_amount", payOrderInfoDTO.getPriceYuanStr());
|
||||
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
||||
map.add("pay_productname",payOrderInfoDTO.getBody());
|
||||
map.add("pay_ip", ServletUtils.getClientIP());
|
||||
map.add("pay_userid", LoginHelper.getUserId()+"");
|
||||
map.add("pay_type", "json");
|
||||
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||
String createOrderUrl = gatewayUrl + type.getCreateOrderUrl();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
|
||||
String body = rest.postForObject(createOrderUrl, request, String.class);
|
||||
JSONObject jsonObject = JSON.parseObject(body);
|
||||
boolean success = checkSuccess(jsonObject);
|
||||
orderLogsService.createAliPayLogs(payOrderInfoDTO.getOrderNo(), createOrderUrl+JSON.toJSONString(map), jsonObject, success, type, getStepName(wx));
|
||||
if(!success){
|
||||
log.info("第三方支付失败 V10 统一支付失败失败 url={} params={} body={}, payTrdConfig={}, typeEnum={}", createOrderUrl,JSON.toJSONString(map), body, JSON.toJSONString(payTrdConfig), JSON.toJSONString(jsonObject));
|
||||
throw new ServiceException("调用支付失败");
|
||||
}
|
||||
String payUrl = jsonObject.getJSONObject("data").getString("payUrl");
|
||||
if(wx){
|
||||
return PayReturnResp.createH5(payUrl);
|
||||
}else{
|
||||
return PayReturnResp.createApp(payUrl);
|
||||
}
|
||||
}
|
||||
private boolean checkSuccess(JSONObject jsonObject) {
|
||||
if(jsonObject == null){
|
||||
return false;
|
||||
}
|
||||
if(!"ok".equals(jsonObject.getString("status"))){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NotifyResp getNotifyResp(Map<String, String> sourceData) {
|
||||
String mchOrderNo = sourceData.get("orderid");
|
||||
String payOrderId = sourceData.get("transaction_id");
|
||||
String status = sourceData.get("returncode");
|
||||
NotifyResp resp = new NotifyResp();
|
||||
resp.setOrderNo(mchOrderNo);
|
||||
resp.setTrdOrderNo(payOrderId);
|
||||
resp.setPayTypeEnum(getType());
|
||||
resp.setSourceData(sourceData);
|
||||
resp.setSuccess("00".equals(status));
|
||||
return resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject queryOrder(String orderNo, PayTrdConfig payTrdConfig) {
|
||||
RestTemplate rest = RestTemplateUtil.getRest();
|
||||
TrdPayTypeEnum type = getType();
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("pay_memberid", payTrdConfig.getMchId());
|
||||
params.put("pay_orderid", orderNo);
|
||||
MultiValueMap<String, String> map = PayMd5Util.createParamsOfMap(params, payTrdConfig.getSign(), "pay_md5sign");
|
||||
String gatewayUrl = getGatewayUrl(payTrdConfig);
|
||||
String queryOrderUrl = gatewayUrl + type.getQueryOrderUrl();
|
||||
String body = RestTemplateUtil.postFormData(rest, queryOrderUrl, map);
|
||||
JSONObject jsonObject = JSON.parseObject(body);
|
||||
if(jsonObject == null){
|
||||
log.error("第三方支付查询失败 返回数据为空 URL={} query={}",queryOrderUrl,JSON.toJSONString(map));
|
||||
throw new ServiceException("调用支付失败");
|
||||
}
|
||||
log.info("第三方支付查询成功 V10 URL={}, query={}, body={}",queryOrderUrl,JSON.toJSONString(map), body);
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject resetOrder(String orderNo, PayTrdConfig payTrdConfig, boolean updateData) {
|
||||
JSONObject jsonObject = this.queryOrder(orderNo,payTrdConfig);
|
||||
if(!"00".equals(jsonObject.getString("returncode"))){
|
||||
log.info("第三方支付失败 V10统一支付查询订单失败 orderNo={}, payTrdConfig={}", orderNo, JSON.toJSONString(payTrdConfig));
|
||||
throw new ServiceException("V10统一支付查询订单失败");
|
||||
}
|
||||
String status = jsonObject.getString("trade_state");
|
||||
if("SUCCESS".equals(status)){
|
||||
if(updateData){
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("str", "主动查询出来的结果");
|
||||
params.put("data", JSON.toJSONString(jsonObject));
|
||||
payManager.callBack(orderNo,null,params,"V10", null);
|
||||
}
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user