task: 修复支付宝C端入口构建失败

移除不存在的 alipay.CalcExpireAt 调用,改为按 cfg.AliPayExpireMinutes(默认 30 分钟)
内联计算 expireAt;将所有 BuildWapPayURL 调用从 5 参数改为 4 参数(移除 returnURL)。
修复范围:getOrBuildAlipayPaymentLink、createAlipayForceRechargeOrder、createAlipayRecharge。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 14:13:46 +08:00
parent b988f99a95
commit 0948494b1c
2 changed files with 18 additions and 6 deletions

View File

@@ -386,7 +386,11 @@ func (h *ClientWalletHandler) createAlipayRecharge(
) error { ) error {
rechargeNo := generateClientRechargeNo() rechargeNo := generateClientRechargeNo()
paymentNo := generateClientPaymentNo() paymentNo := generateClientPaymentNo()
expireAt := alipay.CalcExpireAt(config) expireMinutes := config.AliPayExpireMinutes
if expireMinutes <= 0 {
expireMinutes = 30
}
expireAt := time.Now().Add(time.Duration(expireMinutes) * time.Minute)
rechargeOrder := &model.RechargeOrder{ rechargeOrder := &model.RechargeOrder{
RechargeOrderNo: rechargeNo, RechargeOrderNo: rechargeNo,
@@ -423,7 +427,7 @@ func (h *ClientWalletHandler) createAlipayRecharge(
return err return err
} }
wapURL, err := alipay.BuildWapPayURL(resolved.SkipPermissionCtx, config, payment, "资产钱包充值", config.AliReturnURL) wapURL, err := alipay.BuildWapPayURL(resolved.SkipPermissionCtx, config, payment, "资产钱包充值")
if err != nil { if err != nil {
if updateErr := h.paymentStore.UpdateStatus(resolved.SkipPermissionCtx, payment.ID, model.PaymentRecordStatusFailed); updateErr != nil { if updateErr := h.paymentStore.UpdateStatus(resolved.SkipPermissionCtx, payment.ID, model.PaymentRecordStatusFailed); updateErr != nil {
h.logger.Warn("标记支付宝支付单 failed 失败", h.logger.Warn("标记支付宝支付单 failed 失败",

View File

@@ -878,7 +878,11 @@ func (s *Service) getOrBuildAlipayPaymentLink(
) )
} }
} }
expireAt := alipay.CalcExpireAt(activeConfig) expireMinutes := activeConfig.AliPayExpireMinutes
if expireMinutes <= 0 {
expireMinutes = 30
}
expireAt := time.Now().Add(time.Duration(expireMinutes) * time.Minute)
newPayment := &model.Payment{ newPayment := &model.Payment{
PaymentNo: generateClientPaymentNo(), PaymentNo: generateClientPaymentNo(),
OrderID: orderID, OrderID: orderID,
@@ -903,7 +907,7 @@ func (s *Service) getOrBuildAlipayPaymentLink(
) )
} }
wapURL, err := alipay.BuildWapPayURL(ctx, activeConfig, payment, subject, activeConfig.AliReturnURL) wapURL, err := alipay.BuildWapPayURL(ctx, activeConfig, payment, subject)
if err != nil { if err != nil {
// 新建的 payment 生成链接失败,标记 failed // 新建的 payment 生成链接失败,标记 failed
if existing == nil || payment.ID != existing.ID { if existing == nil || payment.ID != existing.ID {
@@ -982,7 +986,11 @@ func (s *Service) createAlipayForceRechargeOrder(
PaymentConfigID: &activeConfig.ID, PaymentConfigID: &activeConfig.ID,
} }
expireAt := alipay.CalcExpireAt(activeConfig) expireMinutesForce := activeConfig.AliPayExpireMinutes
if expireMinutesForce <= 0 {
expireMinutesForce = 30
}
expireAt := time.Now().Add(time.Duration(expireMinutesForce) * time.Minute)
paymentNo := generateClientPaymentNo() paymentNo := generateClientPaymentNo()
payment := &model.Payment{ payment := &model.Payment{
PaymentNo: paymentNo, PaymentNo: paymentNo,
@@ -1005,7 +1013,7 @@ func (s *Service) createAlipayForceRechargeOrder(
return nil, err return nil, err
} }
wapURL, err := alipay.BuildWapPayURL(ctx, activeConfig, payment, "余额充值", activeConfig.AliReturnURL) wapURL, err := alipay.BuildWapPayURL(ctx, activeConfig, payment, "余额充值")
if err != nil { if err != nil {
if updateErr := s.paymentStore.UpdateStatus(ctx, payment.ID, model.PaymentRecordStatusFailed); updateErr != nil { if updateErr := s.paymentStore.UpdateStatus(ctx, payment.ID, model.PaymentRecordStatusFailed); updateErr != nil {
s.logger.Warn("标记支付宝支付单 failed 失败", s.logger.Warn("标记支付宝支付单 failed 失败",