visit - instasport/club-api GitHub Wiki
Запись или отмена записи на тренировку
Для записи или отмены записи на тренировку в заголовке авторизации необходимо указать токен (авторизованного клиента) и клуб.
Подача заявки на тренировку.
Неоплаченная заявка не гарантирует место на тренировке.
Обязательные параметры
eventId - ID тренировки
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина), 2 для сайта Instasport
Необязательные параметры
familyProfileId - ID пользователя для записи члена семьи
options - JsonString, массив ID которые необходимо добавить к тренировке
mutation RequestVisitMutation {
requestVisit(eventId: 690867, origin: 5, familyProfileId: 60432, options: "[31, 32]") {
visit {
id
}
}
}
Оплата тренировки абонементом
После вызова функции будет создано посещение. Посещение будет оплачено указанным абонементом. Если абонемент указан не верно или происходит любая другая ошибка, то посещение будет удалено.
Если указать параметр visitId, то будет авторизовано уже существующее посещение. visitId - id неавторизованного посещения(заявки) или забронированного посещения. В случае ошибки уже существующее посещение не будет удалено.
Параметры (все обязательные)
event - ID тренировки
card - ID абонемента
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина)
Необязательные параметры
familyProfileId - ID пользователя для записи члена семьи
visitId - ID посещения которое необходимо оплатить.
mutation PayVisitByCard {
payVisitByCard {
visit(event: 12345, card: 100, origin: 5, familyProfileId: 60000) {
visit {
id
}
}
}
}
Оплата тренировки со счета
После вызова функции будет создано посещение. Посещение будет оплачено со счета. Если это не возможно, то посещение будет удалено.
Если указать параметр visitId, то будет авторизовано уже существующее посещение. visitId - id неавторизованного посещения(заявки) или забронированного посещения. В случае ошибки уже существующее посещение не будет удалено.
Параметры (все обязательные)
event - ID тренировки
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина)
Необязательные параметры
familyProfileId - ID пользователя для записи члена семьи
visitId - ID посещения которое необходимо оплатить.
mutation PayVisitFromAccount {
payVisitFromAccount {
visit(event: 12345, origin: 5, options: "[31, 32]) {
visit {
id
}
}
}
}
Бронирование тренировки
После вызова функции будет создано посещение. Посещение будет забронировано. Если это не возможно, то посещение будет удалено.
Если указать параметр visitId, то будет авторизовано уже существующее посещение. visitId - id неавторизованного посещения(заявки). В случае ошибки уже существующее посещение не будет удалено.
Параметры (все обязательные)
event - ID тренировки
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина)
Необязательные параметры
familyProfileId - ID пользователя для записи члена семьи
visitId - ID посещения которое необходимо оплатить.
options - JsonString, массив ID опций которые необходимо добавить к тренировке
mutation BookVisit {
bookVisit {
visit(event: 12345, origin: 5, options: "[31, 32]") {
visit {
id
}
}
}
}
Оплата тренировки через liqpay/wayforpay
Данные для оплаты тренировки можно получить в полях liqpay/wayforpay запроса ClientEventDetail
Оплата тренировки через liqpay/wayforpay для семейных профилей.
Данные для оплаты тренировки для семейного профиля можно получить в запросе ClientEventDetail в поле family.
Пример запроса
В поля wayforpay и liqpay необходимо передавать обязательный параметр eventId.
eventId - int. ID тренировки которую необходимо оплатить.
clientReturnUrl - строка. Необязательный параметр. url на который буде перенаправлен клиент после совершения оплаты
query event {
clientEvent(id:725141) {
id
family {
id
wayforpay(eventId:725141, clientReturnUrl: "url"){
merchantAccount
merchantDomainName
merchantSignature
orderReference
orderDate
amount
currency
productName
productCount
productPrice
returnUrl
serviceUrl
action
price
clientCommission
comment
}
liqpay(eventId:725141, clientReturnUrl: "url"){
data
signature
action
price
clientCommission
comment
}
}
}
}
При оплате существующего посещения через Liqpay/Wayforpay необходимо выполнить дополнительный запрос
mutation {setVisitPaymentOrderProcessing(visitId: 12345){ok}}
Оплата тренировки через Apple Pay и Google Pay
Запрос для оплаты тренировки через Apple Pay или Google Pay. Параметры запроса:
eventId - int, обязательный параметр
origin - int, обязательный параметр (5 для мобильного приложения)
visitId - int, необязательный параметр. Используется для оплаты уже существующей тренировки
familyProfileId - int, необязательный параметр. Используется для оплаты тренировки семейного профиля
options - JsonString, массив ID опций которые необходимо добавить к тренировке
Для оплаты через Apple Pay необходимо передавать параметры data и key
data - строка, данные полученные от Apple Pay
key - строка, данные полученные от Apple Pay
Для оплаты через Google Pay необходимо передавать параметр token
token - строка, токен полученный от Google Pay
mutation AppPayVisit {
appPayVisit(eventId:771820, origin:5, visitId:1856120, familyProfileId: 68321, data:"data" key:"key" token: "token", options: "[31, 32]") {
ok
}
}
В результате успешной оплаты будет возвращено bool True. В случае ошибок:
- GraphQLError - указанны неправильные параметры, например несуществующий eventId или не указаны data и key или token
- InstasportGraphQLError с кодом ошибки RESULT_PAYMENT_ERROR = 20 - неуспешный платеж
- InstasportGraphQLError с кодом ошибки RESULT_PAYMENT_3D_SECURE = 21 - необходимо 3D-Secure подтверждение платежа от клиента
- InstasportGraphQLError с кодом ошибки RESULT_PAYMENT_WAIT_STATUS = 22 - получен wait статус от платежной системы. Ожидание завершения обработки платежа
Отмена записи на тренировку
После вызова функции будет удалено посещение.
mutation DeleteVisit {
deleteVisit {
visit(id: 67890) {
ok
}
}
}
Просмотр записей на тренировку
Для просмотра записей на тренировку в заголовке авторизации необходимо указать токен (авторизованного клиента) и клуб. Можно просматривать прошедшие записи и записи на будущее.
Все параметры необязательные
startDate - начальная дата, если не указана, то используется сегодняшняя
endDate - конечная дата, если не указана, то возвращаются все тренировки, начиная со startDate
hall - ID зала, если не указан то показываются посещения по всем залам в клубе
event - ID тренировки, если не указан, то показываются посещения по всем тренировкам
query Visits {
visits(startDate: "2020-09-01", endDate: "2020-10-01", hall: 10, event: 12345) {
visit {
id
event {
date
duration
title
}
authorized
paid
payment
payments {
title
chocie
}
cards {
id
}
paidByCard {
id
}
liqpay {
price
}
wayforpay {
price
}
}
}
}
История записей на тренировки
Параметры запроса
page - int, страница
pageSize - int, количество тренировок на старницу
query Visit {
visitHistory(page:1, pageSize:5) {
id
event {
id
instructor {
id
}
template {
headline
duration
activity {
id
}
}
}
user {
id
firstName
}
paid
paidStatus
paidStatusShort
}
}
Возвращаемые данные
date - дата/время тренировки
title - название тренировки
authorized - авторизованное посещение или нет (если посещение забронировано или оплачено, то оно считается авторизованным)
paid - как было оплачено посещение
paid_by_card - если посещение было оплачено абонементом, то это ID абонемента
Значение paid
-1 - не оплачено
0 - подарок
1 - оплачено за наличные
2 - оплачено онлайн через Liqpay
3 - оплачено с абонемента
4 - оплачено со внутреннего счета
5 - посещение забронировано
6 - оплачено по безналу (терминал в клубе)
10 - оплачено онлайн через Portmone
11 - оплачено онлайн через WayForPay
query VisitDetail {
visit(id: 12345) {
visit {
id
event {
date
duration
title
}
authorized
paid
paidByCard {
id
}
refundable
payment
payments {
title
chocie
}
cards {
id
}
status
paidStatus
liqpay {
price
}
wayforpay {
price
}
availableOptions {
id
title
price
description
promocodePrice
image
}
visitOptions {
id
title
price
description
image
paid
}
priceWithOptions
}
}
}
Поле paidStatus
'Неавторизованная заявка. Место не гарантированно'
'Тренировка вам подарена'
'Тренировка оплачена наличными'
'Тренировка оплачена кредитной картой'
'Тренировка оплачена по безналу'
'Тренировка оплачена абонементом'
'Тренировка оплачена со счета'
'Вам забронировано место'
Поле status
'Время отмены прошло'
Дополнительные поля
refundable - возможна ли отмена или нет
payment (deprecated) - варианты оплат
payments - варианты и название оплат, напирмер "payments": [{"choice": 4,"title": "Оплатить со счета"},]
cards - абонементы, которыми можно оплатить посещение
paidStatus - строка отображающая статус оплаты
status - строка отображающая статус возможности отмены
availableOptions - массив опций которые можно добавить к тренировке
visitOptions - массив опций добавленых к тренировке
liqpay - данные для оплаты через liqpay
wayforpay - данные для оплаты через wayforpay
Опции
Добавление опций к существующей тренировке
Обязательные параметры запросов
visitId - Int, ID тренировки
options - JsonString, массив ID опций, кторорые необходимо добавить к тренировке
mutation VisitAddOption {
visitAddOption(visitId: 2124059, options:"[32, 33]") {
visit {
id
availableOptions{
id
title
price
}
visitOptions {
id
title
price
paid
}
}
}
}
mutation VisitRemoveOption {
visitAddOption(visitId: 2124059, options:"[1110, 1111]") {
visit {
id
availableOptions{
id
title
price
}
visitOptions {
id
title
price
paid
}
}
}
}
Гостевые визиты
Для создания гостевого визита клиент должен оплатить тренировку с абонемента на котором есть гостевые посещения.
Создание гостевого визита происходит в 2 этапа.
Этап 1
Параметры запроса, все обязательные
phone - string, номер телефона гостя
visitId - int, ID визита оплаченного абонементом
firstName - string, имя гостя
lastName - string, фамилия гостя
birthday - date, дата рождения гостя
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина)
mutation CreateGuestProfile {
createGuestVisit(visitId:2630725, phone:"+380976282322", firstName: "first name", lastName:"last name" origin:3 birthday: "16.10.1994") {
ok
}
}
В результате успешного выполнения запроса гостю на телефон будет отправлено смс с кодом и ссылкой для ввода кода.
Этап 2
Подтверждение гостевого визита.
Параметры запроса, все обязательные
code - string, код из смс
data - string, параметр полученный в GET запросе
origin - 5 для мобильного приложения, 3 для сайта клуба (плагина)
mutation CreateGuestProfile {
phoneVerifyGuest(code:"4225" origin: 3, data: "KzM4MDk3NjI4MjMyMi8yNjMwNzI1LzUzMDM0cccc") {token {
accessToken
}
}}
В результате запроса гость подвердит номер телефона и будет записан на гостевой визит.