card - instasport/club-api GitHub Wiki

Абонементы

Шаблоны абонементов

Все шаблоны абонементы разбиты на группы абонементов. Для того, чтобы увидеть абонементы или группы абонементов обязательно необходимо указать клуб в заголовке авторизации.

Для получения шаблонов и групп шаблонов абонементов в заголовке авторизации обязательно нужно указать ключ и клуб.

query CardTemplateGroups {
  cardTemplateGroups {
    id
    title
    order
  }
}
curl -X POST -H "Content-Type: application/json" -H "Authorization: Key Ajsgwf3SLdcGpiXLPpzc29poWermmEkR6/xNqkS4onk= test" --data '{ "query": "{ cardTemplateGroups {id, title, order} }" }' https://instasport.co/api/
query CardTemplates {
  cardTemplates {
    id
    title
    description
    descriptionHtml
    subtitle
    group {
      id
      title
      order
    }
    amount
    duration
    price
    priceInfo {
        regularPrice
        price
        bonusTitle
    }
    currency
  }
}
curl -X POST -H "Content-Type: application/json" -H "Authorization: Key Ajsgwf3SLdcGpiXLPpzc29poWermmEkR6/xNqkS4onk= test" --data '{ "query": "{ cardTemplates {id, title, subtitle, group {id, title}, price, amount, duration} }" }' https://instasport.co/api/
query CardTemplateDetail {
  cardTemplate(id: 12345) {
    id
    title
    subtitle
    description
    descriptionHtml
    group {
      id
      title
      order
    }
    amount
    duration
    price
    priceInfo {
        regularPrice
        price
        bonusTitle
    }
    currency
    payment
    payments {
        title
        choice
    }
    liqpay
    wayforpay
    payment_status
  }
}

Список абонементов клиента

В заголовке авторизации необходимо указать токен (авторизованного клиента) и клуб.

Если параметры не указаны, то показываются все абонементы клиента, включая законченные.

Параметры (необязательные)

event - Если указан ID тренировки то показываются абонементы, которыми можно оплатить эту тренировку
active - если true, то показываются все активные абонементы
query Cards {
  cards(event: 12345) {
    card {
      id
      payments {
          title
          choice
      }
      liqpay(clientReturnUrl: "url") {
          data
          signature
          action
          price
          clientCommission
          comment
      }
      wayforpay(clientReturnUrl: "url") {
          merchantAccount
          merchantDomainName
          merchantSignature
          orderReference
          orderDate
          amount
          currency
          productName
          productCount
          productPrice
          returnUrl
          serviceUrl
          action
          price
          clientCommission
          comment
      }
    }
  }
}

Просмотр одного абонемента

query CardDetail {
  cards(id: 45678) {
    card {
      id
      paid
      price
      priceInfo {
          regularPrice
          price
          bonusTitle
      }
      promocodePrice
      loyaltyPrice
      authorized
      dateAuthorized
      activated
      dateActivated
      amount
      dueDate
      transfer
      pauses
      paused
      pausedDuration
      pausedDueDate
      freezeEnabled
      payment
      payments {
        title
        choice
      }
      payment_status
      liqpay(clientReturnUrl: "url") {
          data
          signature
          action
          price
          clientCommission
          comment
      }
      wayforpay(clientReturnUrl: "url") {
          merchantAccount
          merchantDomainName
          merchantSignature
          orderReference
          orderDate
          amount
          currency
          productName
          productCount
          productPrice
          returnUrl
          serviceUrl
          action
          price
          clientCommission
          comment
      }
    }
  }
}

Поля

paid - как оплачен абонемент (int)
priceInfo {
    regularPrice - цена абонемента без скидок (Decimal)
    price - цена по которой продан абонемент (в случае заявки - по которой будет продан) с учетом скидок (Decimal)
    bonusTitle - примечание к цене по скидке, в случае если на цену действует промокод или лояльность (String либо null)
}
authorized - абонемент авторизован (Boolean)
dateAuthorized - дата авторизации
activated - абонемент был активирован (Boolean)
active - поле показывает статус абонемента (Boolean)
    True (активный абонемент) - абонемент оплачен, активирован, не заморожен, не просрочен, на абонементе есть посещения.
    False (не активный абонемент) - абонемент не активный при одном из условий: абонемент не оплачен, не активирован, заморожен,
    просрочен, на абонементе нет посещений.
dateActivated - дата активации
amount - количество посещений (-1 - безлимит)
dueDate - дата окончания абонемента
transfer - количество отмен тренировок
pauses - количество пауз (заморозок) абонемента
paused - абонемент заморожен
pausedDuration - сколько времени заморожено
pausedDueDate - дата автоматической разморозки
freezeEnabled - абонемент можно заморозить (Boolean)
payment(deprecated) - варианты оплаты, как можно оплатить абонемент
payments - варианты и названия оплаты
payment_status - статус абонемента при отсутствии вариантов оплаты
liqpay(clientReturnUrl: "url") - данные для кнопки оплаты Liqpay
wayforpay(clientReturnUrl: "url") - данные для кнопки оплаты WayForPay

clientReturnUrl - необязательный параметр для полей liqpay и wayforpay. Строка, 
url на который буде перенаправлен клиент после совершения оплаты

Поле payment/paid показывает каким способом можно оплатить абонемент или как он был оплачен

-1 - Заявка
2 - Liqpay
4 - Счет
10 - Portmone
11 - WayForPay

Авторизация абонемента

Заявка на абонемент

Параметры (все обязательные)

templateId - ID шаблона абонемента

В результате запроса будет создан не оплаченный абонемент

mutation RequestCard {
    requestCard (templateId: 59) {
        card {
            id
        }
    }
}

При оплате заявки на абонемент через Liqpay/Wayforpay необходимо выполнить дополнительный запрос

mutation {setCardPaymentOrderProcessing(cardId: 12345){ok}}

Отмена заявки на абонемент

Параметры (все обязательные)

id - ID абонемента

В результате запроса абонемент будет удален (удалить можно только неоплаченный абонемент)

mutation CancelCardRequest {
    cancelCardRequest (id: 112663) {
        ok
    }
}

Оплата со счета клиента

После вызова функции будет создан абонемент. Абонемент будет оплачен со счета. Если это не возможно, то абонемент будет удален.

Параметры (все обязательные)

cardId - ID абонемента. Используется для оплаты заявки на абонемент
mutation PayCardFromAccount {
    payCardFromAccount (templateId: 59, cardId: 116642) {
        card {
            id
        }
    }
}

Оплата абонемента через Apple Pay и Google Pay

Запрос для оплаты абонемента через Apple Pay или Google Pay. Параметры запроса:

templateId - int, обязательный параметр
cardId - int, необязательный параметр. Используется для оплаты уже существующего абонемента

Для оплаты через Apple Pay необходимо передавать параметры data и key

data - строка, данные полученные от Apple Pay
key - строка, данные полученные от Apple Pay

Для оплаты через Google Pay необходимо передавать параметр token

token - строка, токен полученный от Google Pay
mutation OnlinePaymentCard {
    onlinePaymentCard(templateId:1028, cardId:72385, data:"data" key:"key" token: "token") {
        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 статус от платежной системы. Ожидание завершения обработки платежа

Активация абонемента

Для использования абонемента клиентом, абонемент должен быть активирован.

Параметры (все обязательные)

cardId - ID абонемента

После вызова функции абонемент будет активирован

mutation ActivateCard {
    activateCard (cardId: 79692) {
        card {
            id
        }
    }
}

Заморозка и разморозка абонемента

Параметры (все обязательные)

cardId - ID абонемента который будет заморожен/разморожен

Зморозка

После выполнения запроса абонемент буде заморожен на колиичество дней, указаных в шаблоне абонемента pauseDuration

mutation FreezeCard {
    freezeCard(cardId: 89405) {
        card {
            id
            paused
        }
    }
}

Разморозка

После выполнения запроса абонемент буде разморожен

mutation UnfreezeCard {
    unfreezeCard(cardId: 89405) {
        card {
            id
            paused
        }
    }
}