feat: IAP 对账逻辑在激活订单前显式更新订单状态为已支付。
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m16s
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m16s
This commit is contained in:
parent
48383fa0a9
commit
d78ec194af
@ -85,7 +85,11 @@ func (l *ReconcileLogic) reconcileByTradeNo(ctx context.Context, apiCfg *iapappl
|
||||
}
|
||||
return
|
||||
}
|
||||
// 正常已付款交易 → enqueue 激活
|
||||
// 正常已付款交易 → 先将状态改为已支付,再 enqueue 激活
|
||||
if statusErr := l.svc.OrderModel.UpdateOrderStatus(ctx, ord.OrderNo, 2); statusErr != nil {
|
||||
logger.Errorf("[IAPReconcile] update order status to paid error: orderNo=%s err=%v", ord.OrderNo, statusErr)
|
||||
return
|
||||
}
|
||||
payload, _ := json.Marshal(queueTypes.ForthwithActivateOrderPayload{OrderNo: ord.OrderNo})
|
||||
task := asynq.NewTask(queueTypes.ForthwithActivateOrder, payload)
|
||||
if _, e = l.svc.Queue.EnqueueContext(ctx, task); e != nil {
|
||||
@ -144,6 +148,13 @@ func (l *ReconcileLogic) reconcileByAppAccountToken(ctx context.Context, apiCfg
|
||||
logger.Errorf("[IAPReconcile-Fallback] update trade_no error: orderNo=%s err=%v", ord.OrderNo, updateErr)
|
||||
}
|
||||
|
||||
// 先将订单状态改为已支付(status=2),activateOrderLogic 要求 status=2 才会处理
|
||||
if statusErr := l.svc.OrderModel.UpdateOrderStatus(ctx, ord.OrderNo, 2); statusErr != nil {
|
||||
logger.Errorf("[IAPReconcile-Fallback] update order status to paid error: orderNo=%s err=%v", ord.OrderNo, statusErr)
|
||||
return
|
||||
}
|
||||
logger.Infof("[IAPReconcile-Fallback] order status updated to paid: %s", ord.OrderNo)
|
||||
|
||||
// enqueue 激活
|
||||
payload, _ := json.Marshal(queueTypes.ForthwithActivateOrderPayload{OrderNo: ord.OrderNo})
|
||||
task := asynq.NewTask(queueTypes.ForthwithActivateOrder, payload)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user