8.8. 管理后台 - 同意退款(支付宝)
支付宝退款
上一节我们完成了拒绝退款的逻辑,这一节我们要实现同意退款的逻辑。
1. 生成退款订单号
不管是支付宝还是微信,在申请退款的时候都需要我们提交一个唯一字符串作为退款订单号,之后可以通过退款订单号来查询退款进度,退款的回调也会带上退款订单号。
我们选择在 Order
模型中写这个逻辑:
app\Models\Order.php
use Ramsey\Uuid\Uuid;
.
.
.
public static function getAvailableRefundNo()
{
do {
// Uuid类可以用来生成大概率不重复的字符串
$no = Uuid::uuid4()->getHex();
// 为了避免重复我们在生成之后在数据库中查询看看是否已经存在相同的退款订单号
} while (self::query()->where('refund_no', $no)->exists());
return $no;
}
2. 控制器
接下来我们要完善一下我们之前在 OrdersController
里的 handleRefund()
方法,由于调用退款的逻辑比较多,因此我们单独拆出一个方法 _refundOrder()