rk
10 小时以前 9f8b3700ffbcc616a97e7ee2ea283ef4df3d666a
server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
@@ -22,6 +22,7 @@
import com.wechat.pay.java.service.payments.model.Transaction;
import com.wechat.pay.java.service.refund.model.RefundNotification;
import com.wechat.pay.java.service.refund.model.Status;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +37,7 @@
 * @Author : Rk
 * @create 2023/3/24 16:57
 */
@Api(tags = "支付回调业务接口")
@Slf4j
@RestController
@CrossOrigin
@@ -79,7 +81,8 @@
            if (Constants.SUCCESS.equals(result.getReturnCode())) {
                switch (result.getAttach()) {
                    case "storageOrder": {
                    case "storageOrder":
                    case "deliveryOrder": {
                        ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo);
                        break;
                    }
@@ -87,7 +90,8 @@
                        ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo);
                        break;
                    }
                    case "overdueFee": {
                    case "overdueFee":
                    case "deliveryOverdueFee": {
                        ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo);
                        break;
                    }
@@ -128,12 +132,14 @@
                if (StringUtils.isNotBlank(attach)) {
                    switch (attach) {
                        case "storageOrder":
                        case "deliveryOrder":
                            ordersService.handleStorageOrderPayNotify(outTradeNo, paymentNo);
                            break;
                        case "shopDeposit":
                            ordersService.handleShopDepositPayNotify(outTradeNo, paymentNo);
                            break;
                        case "overdueFee":
                        case "deliveryOverdueFee":
                            ordersService.handleOverdueFeePayNotify(outTradeNo, paymentNo);
                            break;
                    }
@@ -199,6 +205,16 @@
                    ordersRefundMapper.updateById(refundRecord);
                    log.info("退款记录状态已更新, refundRecordId={}, status={}", refundRecord.getId(), refundRecord.getStatus());
                    // 手动退款(type=4)退款成功 → 执行扣款
                    if (Status.SUCCESS.equals(refundStatus)
                            && Constants.equalsInteger(refundRecord.getType(), Constants.FOUR)) {
                        try {
                            ordersService.processManualRefundCallback(refundRecord);
                        } catch (Exception ex) {
                            log.error("手动退款扣款处理异常, refundRecordId={}", refundRecord.getId(), ex);
                        }
                    }
                    // 退款成功 → 通知会员
                    if (Status.SUCCESS.equals(refundStatus) && refundRecord.getOrderId() != null) {
                        Orders refundOrder = ordersMapper.selectById(refundRecord.getOrderId());
@@ -229,10 +245,13 @@
                                    templateParam.put("orderNo", refundOrder.getCode());
                                    templateParam.put("money", String.valueOf(Constants.getFormatMoney(
                                            refundOrder.getRefundAmount() != null ? refundOrder.getRefundAmount() : 0L)));
                                    boolean smsResult = AliSmsService.sendSms(refundMember.getTelephone(),
                                            Constants.SmsNotify.MEMBER_REFUNDED.getTemplateCode(),
                                            templateParam.toJSONString());
                                    if (smsResult) {
                                    String smsError = null;
                                    if (Constants.SmsNotify.MEMBER_REFUNDED.isEnabled()) {
                                        smsError = AliSmsService.sendSms(refundMember.getTelephone(),
                                                Constants.SmsNotify.MEMBER_REFUNDED.getTemplateCode(),
                                                templateParam.toJSONString());
                                    }
                                    if (smsError == null) {
                                        log.info("退款短信发送成功: phone={}", refundMember.getTelephone());
                                    } else {
                                        log.warn("退款短信发送失败: phone={}", refundMember.getTelephone());
@@ -242,7 +261,10 @@
                                    smsRecord.setPhone(refundMember.getTelephone());
                                    smsRecord.setContent(smsContent);
                                    smsRecord.setType(Constants.ONE);
                                    smsRecord.setStatus(smsResult ? Constants.ONE : Constants.ZERO);
                                    smsRecord.setStatus(smsError == null ? Constants.ONE : Constants.ZERO);
                                    if (smsError != null) {
                                        smsRecord.setRemark(smsError);
                                    }
                                    smsRecord.setCreateTime(new java.util.Date());
                                    smsRecord.setDeleted(Constants.ZERO);
                                    smsrecordMapper.insert(smsRecord);