Должна ли логика обработки STRIPE находиться в контроллере Laravel или в валидаторе? - PullRequest
0 голосов
/ 13 ноября 2018

Я новичок в Laravel. У меня есть контроллер ProductController, как это

    public function buy(Request $request, User $user) {

    \Stripe\Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxxx");

    $token = $_POST['stripeToken'];

    $charge = \Stripe\Charge::create([
        'amount' => 100,
        'currency' => 'aud',
        'description' => 'Example charge',
        'source' => $token,
    ]);

    if ($charge->status === "succeeded") {
        //-- Processing... --//
    }

Я хотел бы спросить о более подходящем стиле дизайна, если бы я поместил часть STTRIE в другие места, такие как валидатор. Если да, это сделать правило и запрос, чем проверить его в валидаторе?

Может кто-нибудь подсказать, как использовать правило в запросе?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Для написания проверки с использованием Laravel 5.5 +

public function buy(Request $request, User $user)
{
    // first define your rules
    $rules = [
        'amount' => 'required|numeric'
    ];

    $validatedData = $request->validate($rules);

    // The purchase is valid...
}

Для Laravel 5.0 - 5.4:

public function buy(Request $request, User $user)
{
    // first define your rules
    $rules = [
        'amount' => 'required|numeric'
    ];

    $validatedData = $this->validate($rules);

    // The purchase is valid...
}

Типичные обязанности контроллера на мой взгляд:

  1. Примите запрос
  2. Вернуть ответ

Я думаю, что, возможно, хорошо иметь одну условную или проверочную проверку.

0 голосов
/ 13 ноября 2018

Создание начисления платы не является проверкой запроса.Это вызов API для Stripe.Таким образом, он определенно не должен оставаться в валидаторе.

Вы можете использовать эту логику в контроллере для небольших приложений, но для средних / крупных приложений с абстракцией (например, если вы хотите иметь возможность изменить позже).поставщик платежей из Stripe (скажем, Braintree), он должен быть в классе обслуживания.

Кроме того, никогда не используйте $_POST напрямую.Используйте $request->input вместо этого.Как правило, если у вас есть 2 способа сделать что-то в коде, всегда используйте способ, который реализует библиотеки более высокого уровня (библиотеки> затем Framework> затем ядро ​​PHP).

...