5.6. 分期还款(支付宝)
分期还款
前面几个章节我们完成了分期付款的创建和展示,接下来我们需要实现分期付款的核心功能:支付。
1. 实现思路
分期还款的支付与商品订单的支付是类似的,需要拉起支付 + 支付回调两个步骤。
由于分期还款的支付回调逻辑与普通商品订单支付回调逻辑是独立的,需要用另外的支付回调地址,因此我们需要在拉起支付的时候用还款回调地址覆盖掉之前在 AppServiceProvider
中设置的商品订单支付回调地址。
对于支付回调,需要判断当前还款的是第几期:如果是第一期,则需要将分期付款的状态修改为『还款中』,将对应的商品订单的支付状态标记为『已支付』,并触发一个商品订单已支付的事件;如果是最后一期则需要将分期付款的状态改为『已还清』。
2. 拉起支付
首先我们来实现拉起支付宝支付的逻辑:
app/Http/Controllers/InstallmentsController.php
use App\Exceptions\InvalidRequestException;
.
.
.
public function payByAlipay(Installment $installment)
{
if ($installment->order->closed) {
thr...