Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Создаём сайт, применяя Laravel и Recurly. Часть 1

Anna | 31.05.2014 | нет комментариев

Проектирование и обработка платеже это легко, но не так легок прием регулярных платежей. Трудности могут появиться дюже стремительно. Вы обязаны решить, как обрабатывать отказы, данные о платежах обязаны быть непрерывно актуальны, и поддерживать востребованость данных на сайте. И вероятно, самый значимый вопрос — удерживать своих пользователей в курсе платежной информации на сайте.
К счастью, Recurly — это сервис, тот, что исполняет огромную часть задач, связанных с обработкой регулярных платежей. Применяя JavaScript-библиотеки, вы сумеете создавать защищенные формы для отправки и обновления платежной информации, включающие в себя все значимые данные платежной карты.
Позже того, как вы определили сумму и частоту платежей, Recurly заботится о расписании и принятии платежей, до тех пор, пока заказчик не будет отписан. Recurly, также рассматривает метаморфозы тарифных планов, расчетов, внесении и вычетов дополнительных платежей.
В первой статье из 2-х, я покажу Вам как сделать платную подписку применяя сайт, сделанный с применение php-фреймворка Laravel и обслуживания приема платежей Recurly. Мы начнём с создания сайта с легкой регистрацией, авторизацией и правами пользователя. После этого мы добавим обработку платежей, свяжем её с процессом регистрации, что дозволит пользователям приобретать разные тарифные планы.

Установка приложения.

Начнём создания приложения с создания новой папки для плана и запуском дальнейшей команды:

composer create-project laravel/laravel recurly --prefer-dist

Эта команда сделает новое приложение Laravel, использую Composer, скачает фреймворк и все нужные зависимости. Позднее нам потребуются несколько библиотек, следственно добавьте следующие строки в composer.json и запустите composer.phar update

"machuga/authority": "dev-develop",
"machuga/authority-l4" : "dev-master",
"recurly/recurly-client": "2.1.*@dev"

Будет скачана библиотека Authority, которая будет использована для создания ролей пользователей и прав доступа, и библиотека Recurly.
После этого, нужно настроить соединение с БД указав значение схемы, пользователя, пароля и адресс к БД в файле app/config/database.php. Laravel работает «из коробки» со следующими базами данных: MySql, Posrges, SQLite и SQL Server.
Нам так же нужна будет таблица с пользователями. Взамен того, что бы делать всё «руками», используем механизм миграций, предоставляемый Laravel. Исполните следующую команду:

php artisan migrate:make create_users_table

Эта команда сделает файл миграции в папке app/database/migrations

public function up()
{
    Schema::create('users', function($table) {
        $table->increments('id');
        $table->string('email')->unique();
        $table->string('name');
        $table->string('password');
        $table->timestamps();
    });
}

public function down()
{
    Schema::drop('users');
}

Возвратимся к командной строке и исполним:

php artisan migrate

Посмотрим в базе данных и увидим что Laravel сотворил таблицу с пользователями.

Сделаем роли пользователей и права.

Для определения типа пользователя и прав для этого пользователя, мы установим пользователям роли. Мы теснее скачали библиотеку Authoriry с поддержкой composer, и теперь мы обязаны исполнить ещё несколько шагов для настройки ролей всецело.
В файле app/config/app.php добавьте следующую строку:

'AuthorityAuthorityL4AuthorityL4ServiceProvider',

Добавьте следующую строку к алиасам:

'Authority' => 'AuthorityAuthorityL4FacadesAuthority',

и опубликуйте файл настроек Authority дальнейшей командой:

php artisan config:publish machuga/authority-l4

Возвратимся к файлу настроек позднее. А теперь, мы обязаны сделать несколько дополнительных таблиц в БД. К счастью, Laravel содержит личные миграции для них. Запустим их следующk!gt;<a href=”#contact”>Contact</a></li> </ul> </div><!–/.nav-collapse –> </div> </div> </div> <div> @if(Session::has(‘success’)) <div> <button type=”button” data-dismiss=”alert”>mk!br/>

Базовая регистрация

Нашей последней задачей, в этой части, является создание процесса регистрации. Сотворим путь для регистрации в файле app/routse/php:

Route::get('/user/register', function() {
    return View::make('user/register/index');
});

Сотворим представление в файле /app/views/user/register/index.blade.php:

@extends('layouts.default')
@section('content')
  {{ Form::open(array('url' => 'user/register')) }}

  {{ Form::label('email', 'E-Mail Address') }}
  {{ Form::text('email') }}
  {{ $errors->first('email') }}

  {{ Form::label('name', 'Your name') }}
  {{ Form::text('name') }}
  {{ $errors->first('name') }}

  {{ Form::label('password', 'Password') }}
  {{ Form::password('password') }}
  {{ $errors->first('password') }}

  {{ Form::label('password_confirmation', 'Repeat') }}
  {{ Form::password('password_confirmation') }}

  <div>
  {{ Form::submit('Register', array('class' => 'btn btn-primary')) }}
  </div>

  {{ Form::close() }}
@stop

Подмечу несколько моментов:

  • Объект $error передаётся в представлении механически, и если нет ошибок валидации, то соответствующее поле будет пустым
  • Суффикс _confirmation обозначает что поле должно соответствовать полю без суффикса, т.е. для проверки, что пароль оба раза был введен правильно

Сейчас перейдём к обработке POST данных:

Route::post('/user/register', function() {
    $validator = Validator::make(
        Input::all(),
        array(
            'name' => array('required', 'min:5'),
            'email' => array('required', 'email', 'unique:users'),
            'password' => array('required', 'confirmed')
        )
    );

    if ($validator->passes()) {
        $user = new User();
        $user->name     = Input::get('name');
        $user->email    = Input::get('email');
        $user->password = Hash::make(Input::get('password'));
        $user->save();

        $role_pending = Role::where('name', '=', 'pending')->first();
        $user->roles()->attach($role_pending);

        Auth::login($user);
        return Redirect::to('/')->with(
            'success',
            'Welcome to the site, . Auth::user()->name . '!'
        );
    }
    else {
        return Redirect::to('user/register')->with(
            'error',
            'Please correct the following errors:'
        )->withErrors($validator);
    }
});

Это довольно легкой метод. Мы создаём валидатор и передаём ему POST данные (Input::all()) и определяем правила для валидации. Если валидация прошла, ты мы создаём нового пользователя, назначаем ему роли, авторизуем, и перенаправляем его на основную страницу.
Если валидация завершилась оплошностью, то мы редиректим пользователя обратно на форму, создаём сообщение об ошибке, и передаём сообщения об ошибках от валидатора, которые будут доступны из представления в переменной $errors.

Завершение

В этой части мы шаг за шагом создавали «скелет» приложения, для работы с платными подписками. В дальнейшей части мы будем интегрировать Recurly для применения подписок.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB