Merge branch 'master' of https://gitee.com/op-souls/ghy-all
This commit is contained in:
commit
17b84a4f1c
|
|
@ -21,10 +21,6 @@ public class PayCallback {
|
||||||
*/
|
*/
|
||||||
@JSONField(name = "created_time")
|
@JSONField(name = "created_time")
|
||||||
private Long createdTime;
|
private Long createdTime;
|
||||||
/**
|
|
||||||
* 支付时间
|
|
||||||
*/
|
|
||||||
private long payTime;
|
|
||||||
/**
|
/**
|
||||||
* 必填,订单号
|
* 必填,订单号
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@ import com.huifu.adapay.model.Payment;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class PaymentDTO extends Payment {
|
public class PaymentDTO extends Payment {
|
||||||
|
|
@ -20,8 +22,14 @@ public class PaymentDTO extends Payment {
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手续费
|
||||||
|
*/
|
||||||
|
@JSONField(name = "fee_amt")
|
||||||
|
private String feeAmt;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付时间
|
* 支付时间
|
||||||
*/
|
*/
|
||||||
private Long payTime;
|
private LocalDateTime payTime;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,18 +47,18 @@ public interface FinancialMasterMapper {
|
||||||
/**
|
/**
|
||||||
* 支付成功
|
* 支付成功
|
||||||
*
|
*
|
||||||
* @param orderNo 订单号
|
* @param paymentId 支付ID
|
||||||
* @param payType 支付渠道
|
* @param payType 支付渠道
|
||||||
*/
|
*/
|
||||||
void paySucceeded(@Param(value = "orderNo") String orderNo, @Param(value = "payType") int payType);
|
void paySucceeded(@Param(value = "paymentId") String paymentId, @Param(value = "payType") int payType);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付成功
|
* 支付成功
|
||||||
*
|
*
|
||||||
* @param orderNo 订单号
|
* @param orderMasterCode 主订单号
|
||||||
* @param payStatus 支付渠道
|
* @param payStatus 支付渠道
|
||||||
*/
|
*/
|
||||||
void updateOrderStatus(@Param(value = "orderNo") String orderNo, @Param(value = "payStatus") int payStatus);
|
void updateOrderStatus(@Param(value = "orderMasterCode") String orderMasterCode, @Param(value = "payStatus") int payStatus);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,10 @@ public interface FinancialMasterService {
|
||||||
/**
|
/**
|
||||||
* 支付成功
|
* 支付成功
|
||||||
*
|
*
|
||||||
* @param orderMasterCode 主订单号
|
* @param paymentId 支付ID
|
||||||
* @param payChannel 支付渠道
|
* @param payChannel 支付渠道
|
||||||
*/
|
*/
|
||||||
void paySucceeded(String orderMasterCode, String payChannel);
|
void paySucceeded(String paymentId, String payChannel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建主财务单CODE
|
* 创建主财务单CODE
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@ import com.ghy.payment.domain.FinancialMaster;
|
||||||
import com.ghy.payment.mapper.FinancialMasterMapper;
|
import com.ghy.payment.mapper.FinancialMasterMapper;
|
||||||
import com.ghy.payment.mapper.PaymentMapper;
|
import com.ghy.payment.mapper.PaymentMapper;
|
||||||
import com.ghy.payment.service.FinancialMasterService;
|
import com.ghy.payment.service.FinancialMasterService;
|
||||||
import com.huifu.adapay.model.Payment;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -21,8 +19,6 @@ import java.time.format.DateTimeFormatterBuilder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import static com.ghy.common.adapay.PayChannel.ALIPAY;
|
|
||||||
import static com.ghy.common.adapay.PayChannel.WX;
|
|
||||||
import static java.time.temporal.ChronoField.*;
|
import static java.time.temporal.ChronoField.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -74,14 +70,17 @@ public class FinancialMasterServiceImpl implements FinancialMasterService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void paySucceeded(String orderMasterCode, String payChannel) {
|
public void paySucceeded(String paymentId, String payChannel) {
|
||||||
|
int payType;
|
||||||
try {
|
try {
|
||||||
|
payType = PayTypeEnum.valueOf(payChannel.toUpperCase()).getCode();
|
||||||
financialMasterMapper.paySucceeded(orderMasterCode, PayTypeEnum.valueOf(payChannel.toUpperCase()).getCode());
|
|
||||||
financialMasterMapper.updateOrderStatus(orderMasterCode, PayStatus.PAID.getCode());
|
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
logger.warn("OrderNo[{}] Unknown payChannel [{}]!", orderMasterCode, payChannel);
|
payType = -1;
|
||||||
|
logger.error("paymentId[{}] Unknown payChannel [{}]!", paymentId, payChannel);
|
||||||
}
|
}
|
||||||
|
FinancialMaster financialMaster = financialMasterMapper.selectByPaymentId(paymentId);
|
||||||
|
financialMasterMapper.updateOrderStatus(financialMaster.getOrderMasterCode(), PayStatus.PAID.getCode());
|
||||||
|
financialMasterMapper.paySucceeded(paymentId, payType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,9 @@ import com.ghy.payment.service.FinancialMasterService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashSet;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付回调
|
* 支付回调
|
||||||
|
|
@ -27,36 +26,28 @@ public class PayCallbackService implements CallBackService {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(PayCallbackService.class);
|
private static final Logger logger = LoggerFactory.getLogger(PayCallbackService.class);
|
||||||
|
|
||||||
// 用HashSet检索效率高
|
|
||||||
private final static HashSet<String> orderNoSet = new HashSet<>(1024);
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
FinancialMasterService financialMasterService;
|
FinancialMasterService financialMasterService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCallback(Event event) {
|
public void onCallback(Event event) {
|
||||||
logger.info("pay callback is {}", event);
|
logger.info("支付回调: {}", event);
|
||||||
String data = event.getData();
|
String data = event.getData();
|
||||||
PayCallback payment = JSON.parseObject(data, PayCallback.class);
|
PayCallback payment = JSON.parseObject(data, PayCallback.class);
|
||||||
Assert.hasText(payment.getOrderNo(), "orderNo is blank !!!");
|
PaymentDTO dto = financialMasterService.selectPaymentById(payment.getId());
|
||||||
// 校验是否是本系统发出去的回调请求
|
// 校验是否是本系统发出去的支付请求
|
||||||
boolean ours = orderNoSet.remove(payment.getOrderNo());
|
if (dto != null) {
|
||||||
if (!ours) {
|
|
||||||
//如果内存里没有 就从数据库里找这条记录
|
|
||||||
PaymentDTO dto = financialMasterService.selectPaymentById(payment.getId());
|
|
||||||
ours = dto != null;
|
|
||||||
}
|
|
||||||
if (ours) {
|
|
||||||
// 更新交易记录
|
// 更新交易记录
|
||||||
PaymentDTO param = new PaymentDTO();
|
PaymentDTO param = new PaymentDTO();
|
||||||
param.setId(payment.getId());
|
param.setId(payment.getId());
|
||||||
|
param.setFeeAmt(payment.getFeeAmt());
|
||||||
param.setStatus(payment.getStatus());
|
param.setStatus(payment.getStatus());
|
||||||
param.setPayTime(System.currentTimeMillis());
|
param.setPayTime(LocalDateTime.now());
|
||||||
financialMasterService.updatePayment(param);
|
financialMasterService.updatePayment(param);
|
||||||
|
|
||||||
if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) {
|
if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) {
|
||||||
// 修改主财务单状态
|
// 更新主财务单状态
|
||||||
financialMasterService.paySucceeded(payment.getOrderNo().split("_")[0], payment.getPayChannel());
|
financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());
|
||||||
} else {
|
} else {
|
||||||
logger.warn("支付失败 : {}", payment);
|
logger.warn("支付失败 : {}", payment);
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +58,7 @@ public class PayCallbackService implements CallBackService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(JSONObject response) {
|
public void onResponse(JSONObject response) {
|
||||||
logger.info("支付结果: {}", response.toJSONString());
|
logger.info("发起支付 Response: {}", response.toJSONString());
|
||||||
// 保存一条支付记录
|
// 保存一条支付记录
|
||||||
PaymentDTO payment = response.toJavaObject(PaymentDTO.class);
|
PaymentDTO payment = response.toJavaObject(PaymentDTO.class);
|
||||||
String status = payment.getStatus();
|
String status = payment.getStatus();
|
||||||
|
|
@ -79,10 +70,8 @@ public class PayCallbackService implements CallBackService {
|
||||||
update.setPaymentId(payment.getId());
|
update.setPaymentId(payment.getId());
|
||||||
financialMasterService.updateFinancialMaster(update);
|
financialMasterService.updateFinancialMaster(update);
|
||||||
} else {
|
} else {
|
||||||
logger.warn("请求支付失败 : {}", response.toJSONString());
|
logger.warn("发起支付失败 : {}", response.toJSONString());
|
||||||
}
|
}
|
||||||
// 将记录保存到临时会话中
|
|
||||||
orderNoSet.add(response.getString("order_no"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,12 +101,12 @@
|
||||||
pay_type = #{payType},
|
pay_type = #{payType},
|
||||||
pay_time = SYSDATE(),
|
pay_time = SYSDATE(),
|
||||||
update_time = SYSDATE()
|
update_time = SYSDATE()
|
||||||
WHERE order_master_code = #{orderNo}
|
WHERE payment_id = #{paymentId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updateOrderStatus">
|
<update id="updateOrderStatus">
|
||||||
UPDATE order_master SET pay_status = #{payStatus} , pay_time = SYSDATE(), update_time = SYSDATE()
|
UPDATE order_master SET pay_status = #{payStatus} , pay_time = SYSDATE(), update_time = SYSDATE()
|
||||||
WHERE code = #{orderNo}
|
WHERE code = #{orderMasterCode}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<insert id="insertFinancialMaster" parameterType="com.ghy.payment.domain.FinancialMaster" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insertFinancialMaster" parameterType="com.ghy.payment.domain.FinancialMaster" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
UPDATE adapay_pay_log
|
UPDATE adapay_pay_log
|
||||||
<set>
|
<set>
|
||||||
<if test="status != null and status != ''">status = #{status},</if>
|
<if test="status != null and status != ''">status = #{status},</if>
|
||||||
<if test="payTime != null and payTime != ''">pay_time = #{payTime},</if>
|
<if test="payTime != null">pay_time = #{payTime},</if>
|
||||||
update_time = SYSDATE()
|
update_time = SYSDATE()
|
||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
|
|
|
||||||
2
pom.xml
2
pom.xml
|
|
@ -40,6 +40,8 @@
|
||||||
<Adapay.version>1.2.10</Adapay.version>
|
<Adapay.version>1.2.10</Adapay.version>
|
||||||
<commons.codec.version>1.10</commons.codec.version>
|
<commons.codec.version>1.10</commons.codec.version>
|
||||||
<httpcomponents.version>4.5.13</httpcomponents.version>
|
<httpcomponents.version>4.5.13</httpcomponents.version>
|
||||||
|
<!-- 打包时跳过单元测试 -->
|
||||||
|
<skipTests>true</skipTests>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- 依赖声明 -->
|
<!-- 依赖声明 -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue