Должна ли логика обработки STRIPE быть в контроллере Laravel или в валидаторе?

Я новичок в 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 в другие места, например, в валидатор. Если да, то сделать правило и запрос, чем проверять в валидаторе?

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

Скорее всего, ни одно из этих мест не является лучшим местом для этого. Бизнес-логика должна жить в моделях или классах обслуживания.

Devon 13.11.2018 16:09

вы проверяете полосу $charge или ваш $request?

adam 13.11.2018 20:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

Чтобы написать валидацию с помощью 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. Вернуть ответ

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

Спасибо @adam. Я предпочитаю разделить логику по разным местам, чтобы контроллер не выглядел слишком запутанным. Первоначально я думал, что настрою правило STRIPE, а затем использую его в запросе laravel.

Jhih Wei Jhan 14.11.2018 03:04

Другие вопросы по теме