大家好!有必要以各种方式实施附加支付。目前 PaymentController@store 中只有 1 个方法:
public function store(StorePaymentRequest $request)
{
DB::beginTransaction();
try {
$order = Order::findOrFail($request->order_id);
$order->status_id = 2;
$order->save();
$order->payments()->create([
'payment_type' => $request->payment_type,
'amount' => $request->amount,
'created_at' => $request->created_at ? Carbon::parse($request->created_at)->toDateTimeString() : Carbon::now()->toDateTimeString(),
'status' => 1
]);
event(new OrderPaid($order));
DB::commit();
return response()->json(['message' => 'Payment successfully stored']);
} catch (\Exception $e) {
DB::rollBack();
return response()->json(['error' => 'System error.', 'message' => $e->getMessage()], 400);
}
}
实施支付方式后,服务器必须接受来自支付系统的带有支付状态的请求。我了解需要什么:
- 创建一个接口,该接口
IPayment
将继承为每种支付方式编写的类。 - 通过 IoC 将接口实现添加到控制器
理想情况下,我看到每个控制器方法的代码如下:
public function yandexCashier(YandexCashierService $service, Request $request)
{
try {
$service->storePayment($request);
} catch(\PaymentException $e) {
...
}
}
这种方法是否正确,实施它的最佳方法是什么?我是第一次这样做,所以社区的意见很有趣。