
Опишу суть работы с API Justclick для Yii2. Например, вы продаёте какой-то информационный продукт через систему Justclick.ru и решили организовать личные кабинеты для удобства ваших покупателей.
При оплате курса в системе justclick, она устанавливает и отправляет данные для конкретного купившего через api функцию. Там указывается paid=true (или например дата оплаты) и justclick отправляет данные в наше приложение для функции signupj().
Эта наша функция должна либо создать нового user, если такого email ещё нет, либо создать связь many-to-many для существующего пользователя с его курсами в связанной таблице course_to_user_bound. То есть надо проверить есть ли user с таким email, который пришёл из джаста. Если да, то как-то надо обновить связанную таблицу...
Для этого есть метод link()
$course = Course::findOne(123); $user = new User(); ... $user->link('course', $course);
Вся функция:
public function actionSignupj() { $user = User::findOne([ // ищем зарегистрирован ли уже пользователь с email, пришедшим от Джаста 'email' => $_POST['email'], ]); $course = Course::findOne([ // находим у нас курс, который только что оплатил человек на Джасте 'alias' => $_POST['items'][0]['id'], ]); $courses = $user->courses; // получаем массив какие курсы есть у пользователя с указанным email (связь courses объявлена с помощью промежуточной таблицы) if(!$user) { // если нет пользователя с таким email $user = new User(); $user->first_name = $_POST['first_name']; $user->email = $_POST['email']; $user->order_id = $_POST['id']; $user->course_id = $_POST['items'][0]['id']; // это не обязательно $user->save(); } $user->link('courses', $course); Yii::$app->getSession()->setFlash('success', 'Check your email for further instructions.'); return $this->goHome(); }
11 июля 2016, Программирование, веб-кодинг / Метки: Justclick

