支付回调,这里需要加事务的吧
// 更新对应的还款计划
$item->update([
'paid_at' => Carbon::now(), // 支付时间
'payment_method' => 'alipay', // 支付方式
'payment_no' => $data->trade_no, // 支付宝订单号
]);
// 如果这是第一笔还款
if ($item->sequence === 0) {
// 将分期付款的状态改为还款中
$installment->update(['status' => Installment::STATUS_REPAYING]);
// 将分期付款对应的商品订单状态改为已支付
$installment->order->update([
'paid_at' => Carbon::now(),
'payment_method' => 'installment', // 支付方式为分期付款
'payment_no' => $no, // 支付订单号为分期付款的流水号
]);
// 触发商品订单已支付的事件
event(new OrderPaid($installment->order));
}
// 如果这是最后一笔还款
if ($item->sequence === $installment->count - 1) {
// 将分期付款状态改为已结清
$installment->update(['status' => Installment::STATUS_FINISHED]);
}
这个位置不加事务会有问题吧?
还有一个问题是用事件去触发监听,但是某个监听逻辑出现更新异常怎么办,事件不能被重新触发,如果重新触发,又会影响到同一个事件下的其他监听,这个怎么处理啊
推荐文章: