Вы находитесь на странице: 1из 74

BeHappy API

Основы
Запрос
Взаимодействие осуществляется через отправку обычных HTTP-запросов на
api.behappy2day.com. Поддерживаются как обычное, так и SSL-соединение.

Вызываемый метод API идентифицируется именем HTTP-метода и URL запроса.

Формат входных данных такой же, как и при отправке обычных форм в HTML
(application/x-www-form-urlencoded или multipart/form-data).

Для выполнения всех методов, требующих аутентификации и работы с сессией,


необходимо передавать id сессии в параметре sid:string.

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


is_mobile, чтобы это учитывалось в статистике.

Ответ
Разбирая ответ сервера, необходимо ориентироваться на код статуса ответа и тело ответа,
представленное в формате JSON. Если у пользователя была установлена cookie rm2
(играет роль remember me), при возобновлении сессии с помощью этой куки в ответ будут
добавлены свойства X-New-SID (новый sid, все последующие запросы следует выполнять с
ним) и X-New-Login (пока не используется).

200 Запрос прошёл успешно. Тело ответа можно использовать по назначению


400 Ошибка в параметрах запроса.
Тело ответа содержит:
code:int
validation_result:object – если входные данные не прошли валидацию
В случае если validation_result отсутствует, должен быть message:string с текстом
ошибки
401 Необходима аутентификация
402 Недостаточно средств на балансе для осуществления операции. Тело ответа при
этом может содержать полезные данные, как, например, в чате.
403 Аутентификация пройдена, ошибка авторизации (действие запрещено)
404 Данные по запросу отсутствуют. Тело ответа может содержать code:int и
reason:string
500 Внутренняя ошибка сервера при выполнении запроса. Тело ответа может
содержать code:int и error:string
501 Такой метод API не существует/не реализован
503 Сервер перегружен
Ошибка валидации входных данных
Описание ошибки валидации поля имеет следующий вид:

 {

 "field": "password",

 "value": null,

 "rule": "validate_required",

 "param": null

 }
Здесь field – поле, не прошедшее проверку,
value – поданное значение,
rule – правило, которому поле должно было соответствовать,
param – параметр правила (в случае с минимальной/максимальной длиной, например).

Пример с несколькими наборами правил:

0. {

1. "code": 255,

2. "validation_result":

3. {

4. "main_ruleset":

5. [

6. {

7. "field": "password",

8. "value": null,

9. "rule": "validate_required",

10. "param": null

11. }

12. ],

13. "alt_ruleset":

14. [

15. {

16. "field": "login",


17. "value": "101172909",

18. "rule": "validate_valid_email",

19. "param": null

20. },

21. {

22. "field": "password",

23. "value": null,

24. "rule": "validate_required",

25. "param": null

26. }

27. ]

28. }

29.}

Автоматический переводчик
В данный момент в методах, поддерживающих автоматический переводчик,
используются следующие языки:

 en - English

 de - Deutsch

 da - Dansk

 es - Español

 fr - Français

 it - Italiano

 nl - Nederlands

 pt - Português

 fi - Suomi

 ru - Русский

 sv - Svenska

 zh-CN - 中国
 ja - 日本語

 ar - ‫العربية‬

«Карта» методов
Каждый GET-запрос может быть заменён на POST /gp/<оригинальный адрес>.

Например, GET /session/status можно заменить на POST /gp/session/status.

Session_GetStatus GET /session/status

Session_Terminate POST /session/terminate

Man_Register POST /men/register

Man_Auth POST /men/auth

Man_GetStatus GET /men/(?<login>[a-z\d]+|me)/status

Man_FetchProfile GET /men/(?<login>[a-z\d]+|me)/profile

Man_FetchSettings GET /men/(?<login>[a-z\d]+|me)/settings

Man_UpdateProfile POST /men/(?<login>[a-z\d]+|me)/profile

Man_UpdateAccount POST /men/(?<login>[a-z\d]+|me)/account

Man_UpdateSettings POST /men/(?<login>[a-z\d]+|me)/settings

Man_UploadPhotos POST /men/(?<login>[a-z\d]+|me)/photos

Man_GetPhotos GET /men/(?<login>[a-z\d]+|me)/photos

Man_DeletePhoto POST /men/(?<login>[a-z\d]+|me)/photos/(?<id>\d+)/delete

Man_GetExclusiveVideos GET /men/(?<login>[a-z\d]+|me)/exclusive-videos

Man_RemindPassword GET /men/password_reminder

Man_ResendRegistrationEmail POST /men/(?<login>[a-z\d]+)/resend

Man_ManageFavorites POST
/men/(?<login>[a-z\d]+|me)/favorites/(?<action>add|delete)

Man_RetrieveCreditsHistory GET /men/(?<login>[a-z\d]+|me)/credits-history

Man_StoreDeviceToken POST /men/(?<login>[a-z\d]+|me)/tokens

Man_RetrieveBonusPoints GET /men/(?<login>[a-z\d]+)/bonus_points


Ladies_Retrieve GET /ladies

Ladies_GetVideoGallery GET /video-gallery

Ladies_GetVideoGalleryItem GET /videos/(?<id>[a-z\d]+)

Lady_FetchProfile GET /ladies/(?<id>[\d]+|me)/profile

Lady_GetPhotos GET /ladies/(?<id>[\d]+|me)/photos

Lady_GetVideos GET /ladies/(?<id>[\d]+|me)/videos

Lady_GetInterview GET /ladies/(?<id>[\d]+|me)/interview

Services_GetConfig GET /services/config

Mail_Send POST /mail/send

Mail_UploadAttachments POST /mail/attachments

Mail_Retrieve GET /mail

Mail_Delete POST /mail/delete/(?<lid>[a-z\d]+)

Mail_Restore POST /mail/restore/(?<lid>[a-z\d]+)

Mail_Read GET /mail/(?<lid>[a-z\d]+)

Payments_GetRetailersOrder GET /payments/common/retailers

Payments_Process_GooglePlay POST /payments/googleplay/(?<result>success|error)

Payments_Process_Itunes POST /payments/itunes

Payments_GetPurchaseLink_Ccbill GET /payments/ccbill/link

Payments_GetPurchaseLink_Verotel GET /payments/verotel/link

Payments_GetPurchaseLink_Dimoco GET /payments/dimoco/link

Payments_GetPurchaseLink_Xanpay GET /payments/xanpay/link

Payments_GetPurchaseLink_Dialxs GET /payments/dialxs/link/(?<method>[a-z0-9_]+)

Payments_GetAlternativePaymentMethods_Dialxs GET /payments/dialxs/options

Payments_GetAlternativePaymentMethods_Xanpay GET /payments/xanpay/options

Payments_GetCreditsOptions GET /payments/common/options

Chat_GetSettings GET /chat/settings


Chat_GetSessions GET /chat/list

Chat_GetInvites GET /chat/invites

Chat_UpdateInvite POST /chat/invites/(?<id>[b\d]+)/(?<action>accept|decline)

Chat_GetMessages GET /chat/(?<id>[a-z\d]+)/messages

Chat_SendMessage POST /chat/(?<id>[a-z\d]+)/messages

Chat_GetVideo GET /chat/(?<id>[a-z\d]+)/video

Chat_SendEvent POST /chat/(?<id>[a-z\d]+)/events

Chat_CollectVCstats POST /chat/vc/stats

Chat_UploadAttachments POST /chat/attachments

Chat_GetHistoryLadies GET /chat/history/ladies

Chat_GetHistoryDays GET /chat/history/days

Chat_GetHistoryList GET /chat/history/list/(?<date>(\d{4}\-\d{2}\-\d{2})|all)

Chat_GetHistoryItem GET /chat/history/item

Chat_PurchaseStickersPack POST /chat/sticker_packs

Chat_PurchaseOfflineMessage POST
/chat/(?<id>[a-z\d]+)/offline-messages/(?<message_id>\d+)

Services_ExclusivePhotos_Order POST /services/exclusive_photos/order

Services_WatchVideo_Order POST /services/video/order

Services_ChatAttachments_Receive POST /services/chat-attachments/receive

Data_Ladies_GetResidenceList GET /data/ladies/residences

Data_GeoCityList GET /data/geo/cities/(?<country_iso_code>[A-Z]+)

Data_GetOwnLocation GET /data/location

Misc_Unsubscribe POST /unsubscribe

Misc_GetTestimonialsGET /testimonials

Misc_GetTestimonial GET /testimonials/(?<id>\d+)

Misc_AntiscamClaimSubmit POST /antiscam-claim-submit

Misc_GetNews GET /news


CustomerSupport_GetThreads GET /support/threads

CustomerSupport_GetCategories GET /support/categories

CustomerSupport_GetThread GET /support/threads/(?<ticket>\d+)

CustomerSupport_PostThread POST /support/threads

CustomerSupport_PostReply POST /support/threads/(?<ticket>\d+)

Gifts_GetCategories GET /gifts/categories

Gifts_GetCategory GET /gifts/categories/(?<id>[\d]+)

Gifts_Cart_Add POST /shopping-cart/add

Gifts_Cart_Update POST /shopping-cart/update

Gifts_Cart_Get GET /shopping-cart

Gifts_Cart_Checkout POST /shopping-cart/checkout

Gifts_Cart_Postcheckout POST /shopping-cart/post-checkout

Gifts_GetOrders GET /gifts/categories

Gifts_GetOrder GET /gifts/orders/(?<id>[\dA-Z]+)

Services_VirtualGift_GetGiftList GET /services/virtual-gift/gifts

Services_VirtualGift_Order POST /services/virtual-gift/order

VirtualGift_Retrieve GET /services/virtual-gift/list

VirtualGift_Read GET /services/virtual-gift/(?<id>\d+)

VirtualGift_Delete POST /services/virtual-gift/delete/(?<id>\d+)

LuckyMingle_RetrievePOST /services/lucky-mingle/retrieve

LuckyMingle_UseBonus POST /services/lucky-mingle/use

Data_TzGetList GET /data/time/tz-list

Data_TzNow GET /data/time/now

Data_TzConvert GET /data/time/convert-tz

PhoneCalls_GetClosestDate GET /services/phone-calls/closest-date

PhoneCalls_GetAvailableHours GET /services/phone-calls/available-hours


PhoneCalls_PlaceOrder POST /services/phone-calls/order

PhoneCalls_Retrieve GET /services/phone-calls/list

PhoneCalls_GetOrder GET /services/phone-calls/(?<id>[\da-zA-Z]+)

PhoneCalls_Cancel POST /services/phone-calls/cancel/(?<id>[\da-zA-Z]+)

PhoneCalls_Confirm POST /services/phone-calls/confirm/(?<id>[\da-zA-Z]+)

PhoneCalls_Update POST /services/phone-calls/(?<id>[\da-zA-Z]+)

DateMe_Order POST /services/date-me/order

Misc_GetHappyMatches GET /happy-match

Misc_GetClosestSpecial GET /specials

Misc_CloseBellNotifications POST /misc/bell-notifications/close

Misc_CloseBirthdayNotifications POST /misc/birthday-notifications/close

Misc_GetComplaintStatus GET /misc/complaint

Misc_Complaint POST /misc/complaint

Предоставляемые методы
Входные данные, отмеченные зелёным, поставляются из адресной строки.

Session_GetStatus
Различная статистика по сессии

Вход:

Выход:

 {

 "logged_in": bool

 }

Session_Terminate
Завершить текущую сессию

Вход:
Выход:

Man_Register
Регистрация нового мужчины

Вход:

 firstname:string
 password:string
 birthday:string Y-m-d
 emailaddress:string
 country:string
 state:string
 pp_and_tc_acceptance:0|1 - cогласие с Privacy Policy и Terms and Conditions
 newsletter_acceptance:0|1 - согласие на получение newsletters
 require_auth_link:0|1 - в ответе должен быть линк на заход на основной сайт

Выход:

 {

 "login": string,

 "password": string,

 "callback_html": html //HTML, который должен выполниться со стороны


клиента. Всякие пиксели, в основном

 auth_link:?url // линк на заход на основной сайт

 }

Man_Auth
Аутентификация мужчины

Вход:

 login:string – может быть как логин, так и имейл пользователя


 password:string – plain пароль

Выход:

 {
 "sid": string, // ID новой сессии
 "login": string, // реальный ID клиента
 “origin”: string // source / medium для данного клиента
 }
Man_GetStatus
Получить «статус» мужчины.

Вход:

 login - логин пользователя

Выход:

 {
 credits:int, //баланс
 favorites:int, // всего девушек в контакт-листе
 inbox:
 {
 total:int, //всего писем
 unread:int, // непрочитанных писем
 unread_online_camera:int // непрочитанных писем от девушек онлайн
с камерой
 },
 virtual_gifts:
 {
 unread:int // неоткрытых входящих вирт подарков
 },
 cs:
 {
 unread:int // всего непрочитанных писем в Customer Support
 unread_high_priority: [
 ticket_id:string // ID непрочитанного тикета с высоким
приоритетом (требует блокирующего уведомления)
 ]
 }
 bonus:
 {
 free_chat_min:int, // доступно бесплатных минут чата
 free_lm:int, // доступно бесплатных Lucky Mingle
 credits:?int, // доступно бонусных кредитов
 bonus_popup_index:int // какую оповещалку про бонусы нужно показать
(если он его ещё не видел, просмотр сохраняет девайс)
 free_reads:int // доступно бесплатных входящих писем
 free_chat_photos:?int, // (акция) доступно бесплатных входящих фото
в чате
 free_out_chat_photos:?int, // (акция) доступно бесплатных исходящих
фото в чате
 free_in_clips:?int, // (акция) доступно бесплатных входящих клипов
в чате
 free_out_clips:?int, // (акция) доступно бесплатных исходящих клипов
в чате
 free_out_stickers:?int // (акция) доступно бесплатных отправок
стикеров в чате
 },
 phone_calls:
 {
 unconfirmed:int, // число звонков, ожидающих подтверждения
 watch_queue: // Очередь оповещений по звонкам
 [
 {
 id:string,
 type:string,
 lady:
 {
 id:int,
 name:string,
 photo:url,
 }
 }
 ]
 },
 birthday_notifications:
 [
 {
 id:int,
 lady:
 {
 id:int,
 name:string,
 photo:url,
 }
 days_left:int // Дней до дня рождения, может быть отрицательным,
тогда он прошёл
 }
 ],
 email_verified:bool, // Подтвердил ли клиент свой имейл
 email_info:?object // если не подтвердил
 {
 email:string, // на этот адрес было выслано подтверждение
 homepage:url, // линк на страницу проверки почты, подставляется для
Gmail, Yahoo, Aol, Hotmail
 },
 misc_notifications:
 [
 {
 id:int,
 date:string, // Y-m-d H:i:s
 type:string,
 link:url,
 image:url,
 content:mixed // Зависит от type
 lady:?int // Девушка, связанная с оповещением
 {
 id:int,
 age:int,
 name:string,
 photo:url,
 }
 }
 ]
 }

bonus_popup_index

=1 You have {credits} bonus credits. Please enjoy our services!

=2 You have {credits} bonus credits. You are welcome to chat {credits} minutes for FREE.
Please enjoy our services!

phone_calls.watch_queue[].type

new|rescheduled|confirmed

misc_notifications[].type

offline_message = непрочитанное оффлайн-сообщение

missed_chat = пропущенное приглашение

misc_notifications[].content

Для offline_message
{
id:int // Id оффлайн-сообщения
}

Для missed_chat
{
message:html // текст сообщения
}
bonus_popup_index

=1 You have {credits} bonus credits. Please enjoy our services!

=2 You have {credits} bonus credits. You are welcome to chat {credits} minutes for FREE.
Please enjoy our services!

phone_calls.watch_queue[].type

new|rescheduled|confirmed

Man_FetchProfile
Получить профиль мужчины, то есть параметры, доступные для редактирования

Вход:

 login
 with_avatar:bool

Выход:

 {

 "firstname": string,

 "lastname": string,

 "emailaddress": string,

 "country": string,

 "usstate": string,

 "province": string,

 "address": string,

 "city": string,

 "zip": string,

 "citycode": string,

 "phonenumber": string,

 "phonenumber_country_code": string,

 "phonenumber_number": string,
 "birthday": date,

 "heightcm": uint,

 "weightkg": uint,

 "haircolor": string,

 "eyecolor": string,

 "maritalstatus": string,

 "religion": string,

 "drinking": string,

 "smoking": 0|1,

 "education": string,

 "languagerating2": string, // Native language

 "languagerating3": string, // Second language

 "profession": string,

 "interests": string,

 "kharacter": string,

 "lookingforagestarting": string,

 "lookingforageending": string,

 "lookingfortype": string,

 “avatar”:?url

 }

Man_FetchAccount
Инфо об аккаунте мужчины. Список полей, которые можно обновить через

Man_UpdateAccount

Вход:

 login - логин пользователя

Выход:
 {
 password:string // всегда пусто
 }

Man_UpdateProfile
Внесение изменений в профиль мужчины

Вход: updates:array см. выход Man_FetchProfile, кроме avatar + login - логин пользователя.

Выход: см. выход Man_FetchProfile

Man_UpdateAccount
Вход:

 login - логин пользователя


 Man_FetchAccount

Выход: см. Man_FetchAccount

Man_FetchSettings
Дополнительные настройки.

Вход: login - логин пользователя

Выход:
 {
 "auto_purchase_allowed":string - разрешены ли автопокупки;
 “email_preferences”:
 {
 “newsletters”:0|1 - Согласие на получение Newsletters/Ads;
 “personal_notifications”:0|1 - Согласие на получение оповещений о
новых письмах и т.п.
 },
 “language_preferences”: // на данный момент оно автозаполняется основе
заполнения полей Language анкеты. Если поля не заполнены, опирается на
Accept-Language
 {
 primary_language:string,
 secondary_language:string
 }
 }

Man_UpdateSettings
Вход:
 login - логин пользователя
 updates: Man_FetchSettings, кроме language_preferences

Выход: см. Man_FetchSettings

Man_UploadPhotos
Вход:

 login - логин пользователя


 v:int версия метода
 (v=1) photo1, photo2, photo3 – файлы с фото, цифра соответствует номеру слота
 (v=2) new_photo - массив файлов фотографий (multipart/form-data)

Выход:

v=2

 [
 { // если ошибка
 error:string
 },
 { // если ок
 id:int,
 width:int,
 height:int,
 href:url
 },...
 ]

Man_GetPhotos
Получить фото в профайле мужчины

Вход:

 login - логин пользователя


 v:int - должно быть равно 2, всё что ниже - для старых версий приложения

Выход:

v=1

 [

 "1": - номер слота


 {

 "href": url,

 “id”:int,

 "description": string – пока всегда пусто

 },

 …

 ]
v=2

0. [

1. {

2. id:int,

3. href:url,

4. description:string, // пока всегда пусто

5. is_visible:bool, //видно ли фото другим пользователям (прошло ли


модерацию)

6. width:int,

7. height:int,

8. },...

9. ]

Man_DeletePhoto
Удалить фото из профайла мужчины

Вход:

 login - логин пользователя


 id - ID фото из свойства

Man_GetExclusiveVideos
Получить список девушек, у которых клиент смотрел видео

Вход:
 login - логин пользователя

Выход:

 [
 {
 lady: {
 id:int,
 name:string,
 photo:url
 },
 videos: [
 {
 id:string,
 number:int - порядковый номер видео
 }
 ]
 ]

Man_RemindPassword
Запросить напоминалку пароля на почту. При запросе пароль пользователя меняется на
новый автоматически

Вход:

 email:string

Man_ResendRegistrationEmail
Заново отправить имейл о регистрации для подтверждения ящика

Вход:

 login:string

Man_ManageFavorites
Управление списком favorites

Вход:

 login - логин пользователя


 action - add|delete
 lady_id

Выход:
Man_RetrieveCreditsHistory
Получить историю трат/начислений кредитов

Вход:

 login:string - логин пользователя


 filters:array
 optime:array<string> - Временной диапазон, массив из 2 элементов в
формате YYYY-mm-dd HH:ii:ss
 limit:int
 offset:int

Выход:

 [
 {
 “id”:int, //ID операции
 “stamp”:int, // время
 “description”:string,
 “credits”:int // “сумма изменения”, бывает
отрицательной и положительной. Или 0 в исключительных случаях
(например, когда обнаружена мошенническая покупка)
 },
 …
 ]

Man_StoreDeviceToken
Сохранить токен устройства клиента (Firebase)

Вход:

 token:string - текущий токен


 login:string
 previous_token:string - предыдущий токен для замены

Man_RetrieveBonusPoints
Получить информацию по бонусному счёту

Вход:

 login:string

Выход:
 {
 send_letters:int,
 livechat_minutes:int,
 read_letter:int,
 replies:int
 }

Ladies_Retrieve
Получить список из каталога девушек по определённым критериям

Вход:

 filters:array
 asian:void
 slavic:void
 latin:void
 european:void
 us_canada:void
 online:void
 not_online:void
 birthday_soon:void (день рождения через месяц или ближе)
 country:string (из списка countries)
 residence:string (из списка residences)
 name:string
 age_from:int
 age_to:int
 height_from:int (Из табл. tsp_height)
 height_to:int (Из табл. tsp_height)
 weight_from:int (Из табл. tsp_weight)
 weight_to:int (Из табл. tsp_weight)
 hair_color:int (Из табл. tsp_hair_color)
 eye_color:int (Из табл. tsp_eyes_color)
 smoking:int (Из табл. tsp_smoking)
 drinking:int (Из табл. tsp_drinking)
 education:int (Из табл. tsp_education)
 marital_status:int (Из табл. tsp_marital_status)
 english:int (Из табл. tsp_english)
 children:int (Из табл. tsp_children)
 plans_children:int (Из табл. tsp_plans_children)
 religion:int (Из табл. tsp_religion)
 zodiac:int (Из табл. tsp_astrology_sign) asian
 favorite:void
 id:int,
 has_correspondence_with_me:void (фильтр только тех, с кем есть переписка)
 limit:int = 1000 по умолчанию
 offset:int = 0
 sort:array
 type:string
 age,
 profile_date // время создания анкеты
 last_act // время последней активности онлайн
 rand
 online
 camera
 id
 rating // внутренний рейтинг
 name
 direction
 0 – ASC
 1 – DESC

Выход:

 {

 "result":

 [

 {

 "id": int,

 "name": string

 "age": int,

 “area”:string,

 “status_string”:string, // “статус” в профиле

 "residence": string,

 “is_new_profile”: bool,

 "is_online": bool,

 "has_webcam": bool,

 "small_photo": url,
 "favorite": bool,

 “time_zone”:string,

 “canonical”:string, // “Каноническая” ссылка на профиль на сайте


BeHappy2Day (только path без слэша)

 “vg_contacts_available”:bool (есть ли возможность отправить


контакты с подарком)

 },

 …

 ],

 "total_count": int

 }

area

A = asian

R = russian

U = ukrainian

L = latin

E = european

Ladies_GetVideoGallery
Вход:

 filters:array
 date_add:array<string> - фильтр по дате загрузки, две даты Y-m-d H:i:s
 lady_id:int|array<int>
 video_id:string|array<string>
 watched_only:void - только просмотренные клиентом
 sort:array
 type:string
 date_add
 last_year_views
 watched - сортировка по тому, просмотрено ли видео
 lady_title_russian
 lady_title_asian
 direction
 0 – ASC
 1 – DESC
 limit:int
 offset:int

Выход:

 [
 {
 id:string,
 source:object - см. Lady_GetVideos,
 _lady: {
 id:int,
 name:string,
 age:int,
 residence:string,
 status_string:string, // “Статус” в профиле
 is_online:bool,
 has_webcam:bool,
 small_photo:url,
 favorite:bool
 },
 is_payment_needed:bool
 },
 ...
 ]

Ladies_GetVideoGalleryItem
Получить отдельное видео в галерее

Вход:

 id:string

Выход:

 [
 {
 id:string,
 source:object - см. Lady_GetVideos,
 is_payment_needed:bool
 },
 ...
 ]

Lady_FetchProfile
Вход:

 id:int
 navigation:int 0|1 - включить “предыдущий” и “следующий” профиль

Выход:

 {

 "id": int,

 "firstname": string,

 "residence": string,

 "age": int,

 "birthday": date,

 "height": int, - сантиметры

 "weight": int, - килограммы

 "hair_color": string,

 "eyes_color": string,

 "drinking": string,

 "smoking": string,

 "occupation": string,

 "education": string,

 "marital_status": string,

 "english": string,

 "religion": string,

 "children":

 [

 {
 "sex": 0|1, - Ж|М,

 "age":int,

 “age_string”:string - “1 y.o./1 month/4 months”

 },

 …

 ],

 "plans_children": "Yes"|"No",

 "zodiac": string,

 "self_description": string,

 "searching_for": string,

 "interests": string,

 "favorite": bool,

 "is_online": bool,

 "has_webcam": bool

 "videos_count":int,

 "has_interview":bool,

 virtual_gifts: [ // Отправленные вирт подарки

 {

 id:int,

 url:url

 }

 ],

 navigation:

 {

 next:int,

 previous:int

 }
 }

Lady_GetPhotos
Вход:

 id:int
 w:int - ширина превью в режиме shrink.
 pm:string - (shrink|blur) - тип превью. shrink - уменьшенная копия, blur - размытая
копия. Режим по умолчанию - shrink.

Выход:

Если more_available, то существуют эксклюзивные фото, которые можно оплатить через


метод Services_ExclusivePhotos_Order. Если они оплачены, ссылки на них будут
размещены в extra, иначе будут доступны только превью, ссылки на которые находятся в
exclusive_previews. Параметр «w» у превью можно менять до 120. Это будет ширина
превью.

 {

 "more_available": bool,

 "avatar_small":object – Аватарка 71x100

 {

 "href": url,

 "description": string

 },

 "avatar":object – Аватарка 100x133

 {

 "href": url

 "description": string

 },

 "extra":

 [

 {

 "href": url,
 "description": string,

 “height”: int,

 “width”: int

 },

 …

 ],

 "exclusive_previews":

 [

 {

 "href": url,

 "description": string

 },

 …

 ]

 }

Lady_GetInterview
Получение результатов «интервью». Оно есть далеко не у всех.

Вход:

 id

Выход:

 [

 {

 "q": "My favorite music:",

 "a": "it all depends on my mood"

 },

 {
 "q": "My favorite movie:",

 "a": "A Walk to Remember"

 },

 {

 "q": "My favorite sport:",

 "a": "table tennis"

 },

 …


 ]

Lady_GetVideos
Вход:

 id:int

Выход:

 [
 {
 "id":string,
 "source": { //
 (360|480|720|1080): { // "качество видео", 360,
480 и т.д.
 "src":url, // ссылка на видео
 "thumb_src":url, // ссылка на превью
 "width":int,
 "height":int
 },
 …
 }
 "is_payment_needed":bool
 },
 ]

Services_GetConfig
Получить кратую информацию по сервисам
Выход:

 {
 services:
 {
 mail:
 {
 p_read:int, // цена за прочтение
 p_send:int, // цена за отправку
 p_attachment:int, // цена за отправку фото в письме,
сверх бесплатного лимита
 free_attachments:int, // кол-во фото, которое можно
отправить с письмом бесплатно
 },
 live_chat:
 {
 p_per_minute:int, // цена за минуту
 attachment_price:int, // цена отправки/получения
фото для клиента
 attachment_base_price:int, // цена
отправки/получения фото, обычная
 shortie_price:int, // цена отправки клипа
 shortie_receive_price:int, // цена получения клипа
 translator_langs: // языки автоматического
переводчика, этот список актуален и для писем
 [
 {
 lang:str, //двухбуквенный код
 caption:str, // самоназвание языка
 caption_en:str, // название языка на
английском
 image:str, //
https://static.behappy2day.com/chat/m/img/flags/png/{image}.
png содержит изображение соответствующего флага
 },...
 ]
 },
 live_video_chat:
 {
 p_per_minute:int, // цена за минуту
 },
 two_way_live_video_chat:
 {
 p_per_minute:int, // цена за минуту
 },
 exclusive_photos:
 {
 p:int, // цена за просмотр доп. фото одной девушки
 },
 watch_video:
 {
 p:int, // цена за просмотр видео в профиле
 },
 virtual_gift:
 {
 p:int, // цена за отправку вирт подарков
 p_contacts:int, // цена за отправку контактов с вирт
подарками
 },
 phone_calls:
 {
 p:int, // цена за минуту звонка
 min_prepaid:int, // минимальное кол-во
предоплаченных минут
 },
 lucky_mingle:
 {
 p:int, // цена за один Lucky Mingle
 }
 },
 main_site_theme:?string, // BH: тема на основном сайте
 show_theme_switch:?string, // (для моб версии BH)
 theme_switch_block_position:?string, // (для моб версии BH)
 }

Mail_Send
Отправка письма.

Вход:

 girl_id:int
 subject:string
 message:string
 replied_on:string – если это ответ на какое-то письмо, необходимо поставить ID
этого письма
 attachments:array<int> ИЛИ прикрепляемые файлы
 v:int - версия тела письма. 1 - простой текст, 2 - HTML-письмо. По умолчанию – 1

Выход:

 {

 "letter_id": string – ID нового письма

 }

Mail_UploadAttachments
Загрузка аттачмента в систему

Вход:

 + прикрепляемые файлы

Выход:

array<int> Массив айдишников успешно загруженных файлов

Mail_Retrieve
Получить список писем по определённым критериям

Вход:

 filters:array
 box:string – in|out|all
 lady:int
 is_read:1|0
 is_deleted:1|0
 is_favorite:1|0
 date_sent:array<string> - массив из двух Y-m-d
 with_attachments:1|0
 limit:int = 100 по умолчанию
 offset:int = 0
 with_stub - включить начало текста сообщения
 sort:array
 type:string
 date
 is_read
 is_lady_favorite
 direction
 0 – ASC
 1 – DESC

Выход:

 {

 "result":

 [

 {

 "id": string,

 “is_free”:bool, // бесплатное письмо

 "lady_id": int,

 "from": string,

 "to": string,

 "subject": string,

 "girl_name": string,

 "girl_age": int,

 "girl_is_online": bool,

 "girl_has_camera": bool,

 "girl_photo_small": url,

 "girl_photo_big": url,

 "man_name": string,

 "man_photo_big": url,

 "type": string, - from_lady|from_man

 "stamp": int,

 "is_read": bool,

 "has_attachments": bool,

 "has_clips": bool,

 "text_stub": html, // кусочек письма для превью


 "is_deleted": bool,

 “subtype”:int // Если 2 или 3, письмо отображается как Letter


#2/#3 from {name}

 },

 …

 ],

 "total_count": "368"

 }

Mail_Read
Прочтение конкретного письма

Вход:

 lid
 rtok:string - токен для бесплатного прочтения письма, если известен
 t_lang - Язык, на который нужно перевести письмо

Выход:

 {

 "id": string,

 "from": string,

 "to": string,

 "subject": string,

 "girl_name": string,

 "girl_age": string,

 "girl_residence": string,

 "girl_photo_small": url

 "girl_photo_big": url

 "type": string, - from_lady|from_man

 "stamp": int,

 "is_read": bool,
 "has_attachments": bool,

 “has_clips”:bool,

 "lady_id": int,

 "message": string,

 "attachments":

 [

 {

 "href": url,

 "description": string

 },

 …

 ],

 "clips":

 [

 {

 "id": int,

 "fmt_chat": string // в формате сообщения в чате, работа такая


же, как и в чате

 },

 …

 ]

 }

Mail_Delete
Вход:

 lid

Выход:

Mail_Restore
Вход:
 lid

Выход:

Chat_GetSettings
Получить специфические настройки чата

Вход:

 static_smilies:void - получить PNG-смайлы вместо GIF


 smilies_v2:int - 0|1 второй вариант получения смайлов
 smilies_v:int - версия набора смайлов, актуальное 3;
 sprite_smilies:void получаем png-спрайт вместо gif

Выход:

 {

 "ff"":array<string>, - шрифты,

 "fs":array<string>, - размеры шрифта

 "smilies": - мелкие смайлы

 [

 {

 "code": string,

 "href": url

 },

 ],

 "ex_smilies": - большие смайлы, надо ресайзить

 [

 {

 "code": string,

 "href": url

 },

 …

 ]
 }
Выход с smilies_v2:

Тип smilie - обычный инлайновый смайл, можно вставить в сообщение

Тип sticker - большая картинка, отправляется отдельным сообщением

0. {

1. "ff"":array<string>, // шрифты,

2. "fs":array<string>, // размеры шрифта,

3. "shorties_base":url, // корневой URL клипов в чате

4. "photos_base":url, // корневой URL фото в чате

5. "icebreakers":array<string>, // список фраз-айсбрейкеров

6. "smilies": {

7. “root”:url // корневой url для смайлов, все пути относительно него

8. “collections”: [ // коллекции смайлов и стикеров

9. {

10. “title”:string,

11. “type”:string,

12. “gender”:string, // пол, которому надо давать эту коллекцию для


выбора (M|F|*)

13. “content”:array<string> // коды соответствующих смайлов

14. },

15. …

16. ],

17. “items”: { // “словарь” соответствий кодов смайлам и стикерам

18. /.*/: {

19. “type”:string, // может отсутствовать, по умолчанию smilie

20. “href”:url // адрес картинки относительно root

21. }

22. }

23. }

24.}
Выход с smilies_v = 3:

Добавляются платные наборы стикеров, в коллекции добавляются свойства

 id:int,
 available:bool - может ли клиент пользоваться этим набором
 price_per_usage:int - цена за использование 1 стикера
 price:int - цена за открытие набора

Chat_GetMessages
Получение сообщений в чате с указанным собеседником.

Вход:

 id – ID собеседника в чате
 autotran_enabled:int
 autotran_lang:string
 limit:int
 offset:int
 history:1|0 - если 1, это выбираются сообщения не из текущего чата, история
 offline - запрос оффлайн-сообщений
 offline_unread:1 - запрос непрочитанных оффлайн-сообщений
 filters:array
 last_timestamp:int
 history_first_timestamp:int - с какого времени брать историю
 history_last_timestamp:int - до какого времени брать историю
 from - ID того, чьи сообщения нужно искать

Выход:

 {

 result:

 [

 {

 id: string,

 from: string,

 to: string,

 message: string,

 style:
 {

 fs: string, // размер шрифта

 ff: string, // шрифт

 c: string // цвет

 },

 is_system:bool, // является ли сообщение системным. Если да,


отображается соотв. образом

 is_read:bool,

 is_offline:bool,

 is_offline_read:bool, // купленное оффлайн-сообщение

 time:int,

 }

 ],

 total_count: int

 }

Chat_SendMessage
Вход:

 id – ID собеседника
 message:string
 style:array
 ff – шрифт
 fs – размер шрифта
 c – цвет шрифта
 autotran_enabled:bool // Включен ли переводчик
 autotran_lang:string // Язык переводчика

Выход:

 {

 "id": int – ID нового созданного сообщения,

 “message”:Chat_GetMessages

 }
Chat_GetVideo
Получить стрим собеседника в чате. Также доступно WebRTC, необходимо задействовать
Flashphoner/Web call server SDK.

Вход:

 id – ID собеседника

Выход:

 {
 “id”:string - ID стрима
 "source":
 {
 "ws":url,
 "rtsp":url,
 "rtmp":url
 }
 }

Chat_SendEvent
Отправка нового события в чат

Вход:

 id – ID собеседника
 evt_code:string –
enter|leave|video_request|video_start|video_end|broadcast_start|broadcast_end
 evt_data:array
 stream_id:string ID своего стрима

Chat_GetInvites
Вход:

 last_timestamp:int
 from:?int - ID пользователя, от которого нужно искать инвайт

Выход:

{
id: string,
lady:{Lady},
message:string,
stamp:int,
bonus:bool // бесплатный ли чат
}

где Lady:

{
id:int,
name:string,
age:int,
residence:string,
is_online:bool,
has_webcam:bool,
small_photo:url,
favorite:bool
}

Chat_UpdateInvite
Принятие/отклонение инвайта

Вход:

 id:string – ID приглашения
 action:string – accept|decline

Выход:

Chat_GetSessions
Список активных сессий в чате

Вход:

Выход:

 [
 {
 "id":string,
 "message":string,
 "lady":
 {
 "id": string,
 "name": string,
 "age": int,
 "residence": string,
 “status_string:string,
 "is_online": bool,
 "has_webcam": bool,
 "small_photo": url,
 "favorite": bool
 }
 },
 …
 ]

Chat_UploadAttachments
Загрузка фото/клипа для пересылки в чате. Фото или клип - определяется по MIME.

Вход:

 multipart/form-data закодированный файл под именем file. Как при пересылке с


html-формы с <input type=”file” name=”file”/>
 to:string - ID собеседника

Выход:
0. [
1. {
2. “type”:(photo|shortie), - фото или клип
3. "id":int,
4. "path":?url, // относительно, см. Chat_GetSettings
5. “poster”:?url, // предпросмотр для клипа, относительно, см.
Chat_GetSettings
6. "width":int,
7. “height”:int
8. },
9. …
10.]

Chat_GetHistoryLadies
Получить список девушек, с кем когда-либо был чат

Выход:

 [
 {
 "id": int,
 "name": string
 "age": int,
 "residence": string,
 "is_online": bool,
 "has_webcam": bool,
 "small_photo": url
 },…
 ]

Chat_GetHistoryDays
Получить список дат, в которые был чат

Вход:

 filters:array
 lady:int

Выход:

 [
 ‘YYYY-mm-dd’,
 …
 ]

Chat_GetHistoryList
Получить список чатов соответственно критериям

Вход:

 date:string - ‘YYYY-mm-dd’ / ‘all’


 lady:int - ID девушки
 offset
 limit

Выход:

 {
 “count”:int,
 “chats”: [
 {
 “gid”:int, // ID девушки
 “gname”:string, // Имя девушки
 “uid”:string, // ID мужчины
 “uname”:string, // имя мужчины
 “stamp_inv”:int, // отметка времени приглашения
 “last_mess”:int, // ID последнего сообщения,
предшествующего чату
 “totaltime”:string, // Продолжительность, мин.
 “videotime”:string, // Продолжительность ВЧ, мин.
 “dvctime”:string // Продолжительность ДВЧ, мин.
 }
 ]
 }

Chat_GetHistoryItem
Получить сообщения из определённого чата

Вход:

 counterpart_id - ID девушки, gid из списка


 message_id - last_mess из списка
 time_of_chat - stamp_inv из списка

Выход:

 [
object // см. Chat_GetMessages
 ]

Chat_CollectVCstats
Сбор статистики по ВЧ
Вход:

 method - hls, nhls (нативный HLS), rtsp, flash (RTMP), web (websockets)
 login - необязательный параметр

Chat_PurchaseStickersPack
Покупка набора стикеров.

Вход:

 pack_id:int
Выход:

 {
 error:string // текст ошибки, если есть. Например, получен
неверный айди набора
 }

Chat_PurchaseOfflineMessage
Купить просмотр оффлайн-сообщения

Вход:

 message_id:int

Выход:

 {
“message”:Chat_GetMessages
 }

Payments_GetRetailersOrder
Получить список доступных пользователю основных биллингов в порядке использования
(для моб. версии сайта). Сейчас основные биллинги - DialXS, Verotel и CCBill.

Выход: array<string> - например, [‘ccbill’, ’verotel’, ‘dialxs’].

Payments_Process_GooglePlay
Приём ответов от Google Play

Вход:

 result:string – success|error
 response:string – текст ответа от гугла
 signature:string – гугловская сигнатура данных

Payments_Process_Itunes
Приём квитанций о покупке от iTunes. Возвращает код 200 если покупка прошла успешно,
400 – если покупка не прошла по вине клиента (дубль транзакции, неверный receipt), 500
– если покупка не прошла из-за ошибки сервера.

Вход:

 receipt:string – base64-кодированная квитанция от iTunes


Payments_GetPurchaseLink_Ccbill
Получить ссылку на покупку кредитов от CCBill

Вход:

 product_id:int ID продукта, см. Payments_GetCreditsOptions

 is_mobile:?bool ссылка запрашивается для мобильной версии

Выход:

 {
 "link":url
 }

Payments_GetPurchaseLink_Verotel
Получить ссылку на покупку кредитов от Verotel

Вход:

 product_id:int ID продукта, см. Payments_GetCreditsOptions

 is_mobile:?bool ссылка запрашивается для мобильной версии

Выход:

 {
 "link":url
 }

Payments_GetPurchaseLink_Dimoco
Получить ссылку на покупку кредитов от Dimoco

Вход:

 product_id:int ID продукта, см. Payments_GetCreditsOptions

 is_mobile:?bool ссылка запрашивается для мобильной версии

Выход:
0. {
1. "link":url
2. }

Payments_GetPurchaseLink_Xanpay
Получить ссылку на покупку кредитов от Xanpay

Вход:

 product_id:int ID продукта в классе CreditsCFG (это отдельная история, они доступны


через Payments_GetCreditsOptions)

 is_mobile:?bool ссылка запрашивается для мобильной версии

Выход:
0. {
1. "link":url
2. }

Payments_GetAlternativePaymentMethods_Xanpay
Получить список методов покупки через Xanpay. Если метод возвращает результат, значит
клиенту доступен Xanpay, а все возвращённые картинки показываются на кнопке покупки
через Xanpay (потому что непосредственно выбор происходит уже на их платёжной
странице).

Выход:

 [
 {
 key:string,
 image:url,
 name:string // Текстовое представление метода для
пользователя
 }
 ]

Payments_GetPurchaseLink_Dialxs
Получить ссылку на покупку кредитов от DialXS

Вход:

 method:string используемый метод Dialxs, см.


Payments_GetAlternativePaymentMethotds_Dialxs

 product_id:int ID продукта, см. Payments_GetCreditsOptions

 is_mobile:?bool ссылка запрашивается для мобильной версии

Выход:
0. {
1. "link":url
2. }

Payments_GetAlternativePaymentMethods_Dialxs
Получить список методов покупки через DialXS. Если резальтат непустой, то клиенту
доступен DialXS, и каждый метод показывается отдельной кнопкой.

Выход:
0. [
1. {
2. key:string, // Эта строка подаётся в method при
получении ссылки на покупку
3. image:url,
4. name:string // Текстовое представление метода для
пользователя
5. }
6. ]

Payments_GetCreditsOptions
Получить список доступных опций для покупки кредитов

Вход:

Выход

 [
 {
 "id":int,
 "price":float,
 "quantity":int,
 "description":string,
 "currency":string, // трёхбуквенный код
 "currency_symbol":char,
 "old_option":?object, // если указан, значит действует
скидка, а это поле содержит изначальный пункт
 "extra":?int // кол-во бонусных кредитов за покупку
 },
 …
 ]

Services_ExclusivePhotos_Order
Оплата просмотра эксклюзивных фото.
Вход:

 id:int – ID девушки

Services_WatchVideo_Order
Оплата просмотра видео

Вход:

 id:string – ID видео

Services_ChatAttachments_Receive
Оплата просмотра фото/клипа в чате и их получения

Вход:

 attachment_id:string – ID фото или клипа

 redirect:bool - если true, при успешной оплате будет выдан заголовок редиректа на
сам файл фото или клипа

 type:(photo|shortie) - фото или клип соответственно

Выход:

 {
 errcode:?int, - отладочный код
 path:string, - путь к файлу фото или клипа относительно
соответствующего корня
 poster:?string, - путь к постеру клипа относительно корня
 width:int,
 height:int,
 }

Data_Ladies_GetResidenceList
Получение списков для поиска по городу/стране

Вход:

Выход:

 {

 "residences": array<string>,

 "countries":array<string>
 }

Data_GeoCityList
Получить список городов

Вход:

 country_iso_code - двухбуквенный код страны

Выход:

 [
 {
 "city_name":<string>
 }
 ]

Data_GetOwnLocation
Получить свою локацию (по версии нашей системы)

Выход:

 {
 ip:string,
 country:string,
 is_eu:bool, // европейская ли локация
 is_eu_user:bool, // европейский ли клиент
 }

Misc_Unsubscribe
Отписывание пользователя от уведомления на эл. почту. Работает для неавторизованных
пользователей. Указание почты обязательно.

Вход:

 string:emailaddress

Выход:

Misc_GetTestimonials
Получить список тестимониалов. Для длинных тестимониалов отдаётся превью

Вход:

 offset:int
 limit:int

Выход:
 {
 "result":
 [
 {
 “id”:int,
 “stamp”:int, // временная отметка
 “name”:string, // автор тестимониала
 “more”:bool, // представлено превью тестимониала
 “excerpt”:string, // HTML-код превью тестимониала либо полного
текста, если more === true
 “image”:string // URL картинки в превью, если есть
 },
 …
 ],
 “total_count”:int
 }

Misc_GetTestimonial
Получить отдельный тестимониал.

Вход

 id:int

Выход:
 {
 “id”:int,
 “stamp”:int, // временная отметка
 “name”:string, // автор тестимониала
 “content”:string // HTML-код текста тестимониала
 }

CustomerSupport_GetThreads
Получить список существующих тикетов в кастомер суппорте

Вход:

Выход:
0. {
1. "result":
2. [
3. {
4. "id":string, // Внутренний ID тикета (не нужен)
5. "ticket_id":string, // Внешний ID тикета (показывать клиенту и
использовать в API)
6. "user_id":string, // ID клиента или Administrator, если тикет от
админа
7. "user_name":string, // имя инициировавшего тикет
8. "is_read":bool,
9. "category":string,
10. "text":string, // текст тикета
11. "stamp":int, // время создания
12. "stamp_last_admin_message":int|null, //время последнего сообщения
от юзера
13. "stamp_last_user_message":int|null, // время последнего сообщения
от админа
14. "stamp_last_message":int,
15. “priority”:int // 15 - LOW, 10 - NORMAL, 5 - HIGH
16. },
17. …
18. ]
19.}

Misc_AntiscamClaimSubmit
Подать жалобу на scam.

Вход:

 email:string
 phonenumber:string
 date:string - любой формат
 message:string
 upload:array - файлы вложений в формате multipart/form-data

Misc_GetNews
Получить список новостей

Вход:

 filters:array
 id:int
 limit:int
 offset:int

Выход:

 [
 {
 id:int,
 stamp:int, - unix timestamp
 type:string,
 short:string, - заголовок
 long:string,
 url:?url,
 preview_enabled:bool, - нужна ли картинка превью
 preview:?url,
 associated_girl: {
 id:int,
 name:string,
 photo:url,
 }
 associated_blog_post_id:?int
 }
 ]

Если указан url, то заголовок новости ведёт на соответствующий адрес.

Обработка url следующая

/^\/?customer_support.php/ - отправляем на Customer Support

/^\/?news.php/ - ничего не делаем

/^\/?result.php/ - поиск девушек

/^\/?search.php/ - поиск девушек

/^\/?buy_credits.php/ - страница покупки кредитов

/^\/?virtual_gift.php/ - страница заказа вирт подарка

/^\/?online-ladies-1.html/ - страница Девушки онлайн

/^\/?live-chat-online-single-women/ - страница Девушки онлайн

/^\/?girls_info.php\?i=(\d+)(&index=(\d))?/ - анкета девушки с ID <$1 + 10000>. Если $3 == 2,


то открываем вкладку видео, если $3 == 2, то интервью

/^\/?girl_profile.php\?id=(\d+)(&index=(\d))?/ - анкета девушки с ID $1. Если $3 == 2, то


открываем вкладку видео, если $3 == 2, то интервью

/^\/?girls_video.php\?id=(\d+)(&vid=(\d))?/ - страница видео девушки $1

CustomerSupport_GetCategories
Список доступных категорий для создания запроса

Вход:
Выход:

array<string>

CustomerSupport_GetThread
Получить сообщения из треда с заданным ID

Вход:

 id:int

Выход:
1. {
2. "id":string,
3. "ticket_id":string,
4. "user_id":string,
5. "user_name":string,
6. "is_read":bool,
7. "category":string,
8. "text":string,
9. "stamp":int,
10. "stamp_last_admin_message":int|null,
11. "stamp_last_user_message":int|null,
12. "stamp_last_message":int,
13. "message_list": // список сообщений
14. [
15. {
16. "id":string, // ID сообщения
17. "thread_id":string, // внутренний ID тикета
18. "user_id":string,
19. "user_name":string,
20. "text":string,
21. "attachments":
22. [
23. {
24. "path":url,
25. "descr":text
26. }
27. ],
28. "stamp":int
29. },
...
30. ]
31.}

CustomerSupport_PostThread
Создать новый тикет

Вход:

 category:int - индекс категории в массиве из CustomerSupport_GetCategories


 text:string
 subject:string
 language:string - код языка автоматического переводчика
 upload:array - прикрепляемые файлы, multipart/form-data

 comment:array - коментарии в прикрепляемым файлам

Выход:

 {
 "thread_id":string, // внутренний ID
 "ticket_id":string // внешний ID
 }

CustomerSupport_PostReply
Ответить в тикете

Вход:
 ticket:id - внешний ID тикета
 text:string

 upload:array - прикрепляемые файлы, multipart/form-data

 comment:array - коментарии в прикрепляемым файлам

Выход:

Gifts_GetCategories
Получить список категорий подарков

Вход:

Выход:

 [
 {
 id:int,
 name:string,
 layout_type:int,
 image:
 {
 url:url,
 width:int,
 height:int
 }
 is_new:bool
 },...
 ]

layout_type:

0 - квадратные карточки как https://www.behappy2day.com/summer-gifts.php

1 - текстовые карточки как https://www.behappy2day.com/romantic_sets.php

2 - Flowers, здесь ссылки на отдельные цветы наверху, и букеты внизу


https://www.behappy2day.com/flowersdelivery.php

3 - отдельные цветы как https://www.behappy2day.com/flowers.php?category=11

4 - подкатегории цветов (по цвету)


https://www.behappy2day.com/flowers.php?category=29

5 - букеты
is_new: нужен ли значок new

Gifts_GetCategory
Получить категорию подарков

Вход:

 id:int
 lady_id:int

Выход:

 [
 {
 id:int,
 name:string,
 layout_type:int,
 image:
 {
 url:url,
 width:int,
 height:int
 }
 items: [
 {
 id:int,
 title:string,
 subtitle:string,
 description:text,
 price:int,
 price_old:int,
 image:
 {
 url:url,
 width:int,
 height:int
 }
 }
 ]
 },...
 ]
subtitle: подзаголовок как в https://www.behappy2day.com/romantic_sets.php

Если price меньше price_old, значит имеет место скидка.

Gifts_Cart_Add
Добавить подарок в корзину

Вход:

 lady_id:int
 gift_id:int

Gifts_Cart_Update
Пока это просто удалить подарок из корзины.

Вход:

 remove:int - индекс подарка в корзине

Gifts_Cart_Get
Получить содержимое корзины

Gifts_Cart_Checkout
Рассчитаться за предметы в корзине

Выход:

 {
 transaction_id:string, // ID транзакции
 onum:string // ID заказа
 }

Gifts_GetOrders
Получить список своих заказов

Вход:

 filters:?object
 date:array<string> - даты заказа, Y-m-d
 sort:?object
 type:string - только date
 direction - 0|1 - ASC|DESC

Выход:
 {
 result:
 [
 {
 id:string,
 transaction_id:string,
 user_id:string,
 lady:
 {
 id:int,
 name:string,
 photo:url,
 online:bool,
 camera:bool,
 },
 stamp:int, // Штамп времени заказа
 scheduled_delivery_stamp:?int, // Штамп
запланированного времени заказа, если пусто, то as soon as
possible
 status:int,
 count_items:int,
 grand_total:int,
 },...
 ],
 total_count:int
 }

status:

0 = PENDING
1 = DELIVERED
2 = CANCELED

Gifts_GetOrder
Получить информацию по конкретному заказу.

Вход:

 id

Выход:

 {
 ... поля те же, что и для заказов в Gifts_GetOrders ...
 items:
 [
 {
 name:string,
 quantity:int,
 price:int,
 }
 ]
 }

Gifts_Cart_Postcheckout
Передать дополнительную информацию по успешно созданному заказу

Вход:

 tid:string - ID транзакции из предыдущего шага


 note:?text - текст записки к подарку
 delivery_date:string - желаемая дата доставки, Y-m-d

Services_VirtualGift_GetGiftList
Получить список доступных подарков. Если не подать категорию, будут все доступные. На
данный момент это только так и используется.

Virtual Gifts от Virtual Cards отличаются только размерами картинок, Gifts - картинки
192x192 (96x96), Cards - картинки разной ширины с высотой 384

Вход:

 category:?int
 type:int - 0 - обычные подарки, 1 - cards

Выход:

 {
 id:int,
 url:url // URL картинки
 }

Services_VirtualGift_Order
Сделать заказ подарка
Возможность отправить свои контакты в отдельном текстовом поле contacts есть только
если Ladies_Retreive для соответствующей девушки выдаёт vg_contacts_available = true

Вход:

 lady_id:int
 gift_id:int
 message:?text
 contacts:?text

VirtualGift_Retrieve
Получить список подарков

Вход:

 filters:object
 box:string - in|out|all
 limit:?int
 offset:?int
 sort:?object
 type:string - date
 direction:int

Выход:

 {
 result: [
 {
 id:int,
 pic:url, // URL картинки
 stamp:int, // Штамп отправки
 message:text, // Записка
 view:bool, // Прочитан ли
 gift_type:int, // 0 - gift, 1 - card
 type:int, // from_man|from_lady
 lady:
 {
 id:int,
 name:string,
 photo:url,
 online:bool,
 camera:bool
 }
 },...
 ],
 total_count:int
 }

VirtualGift_Read
Открыть вирт. подарок

Вход:

 id:int

Выход:

см. Virtual_Gift_Retrieve

VirtualGift_Delete
Удалить вирт. подарок

Вход:

 id:int

LuckyMingle_Retrieve
Получить список профилей в рамках услуги Lucky Mingle

Вход:

 filters
 prefer_online:int - 0|1
 check_age:int - 0|1
 age_from:int
 age_to:int
 kids:int - 0|1
 zodiac:int
 origin:char - R|L|A|E Slavic, Latin, Asian, European

Выход:

 {
 result:
 [
 {
 id:int,
 name:string,
 photo:url,
 age:int,
 online:int
 }
 ],
 lm_id:id // ID Lucky Mingle
 }

LuckyMingle_UseBonus
Вход:

 search_id:int - ID Lucky Mingle


 lady_id:int - кого выбрали
 bonus_type:string - тип выбранного бонуса, chat|mail, 5 бесплатных минут чата или
бесплатная отправка письма

Data_TzGetList
Получить список доступных часовых поясов

Выход:

 {
 "Etc/GMT+12": "(GMT-12:00) International Date Line West",
 "ключ": "Описание",...
 }

Data_TzNow
Получить текущее время в выбранном часовом поясе

Вход:

 tz:string

Выход:

 {
 result:string // Y/m/d H:i:s
 }

Data_TzConvert
Сконвертировать время в другой часовой пояс
Вход:

 date:string // Y-m-d H:i:s


 from:string // Часовой пояс 1
 to:string // Часовой пояс 2

Выход:

 {
 result:string // Y/m/d H:i:s
 }

PhoneCalls_GetClosestDate
Получить ближайшую доступную дату/время для звонка

Вход:

 tz:string - часовой пояс, например US/Pacific, см. Data_Tz_GetList

Выход:

 {
 result:string // Y-m-d H:i:s
 }

PhoneCalls_GetAvailableHours
Получить доступные для звонка часы в заданный день

Вход:

 date:string - Y-m-d
 tz:string - часовой пояс, например US/Pacific

Выход:

 []<string> // время, например 15:00

PhoneCalls_PlaceOrder
Разместить заказ звонка

Вход:

 girl_id:int
 schedule_input
 date:string - Y-m-d
 time:string - H:i
 tz:string - часовой пояс, например US/Pacific
 phone_number
 code - например, +1
 number - например, 123456789
 pc_auto_charge_agreement:bool - согласен ли пользователь на автоматическое
списание кредитов сверх лимита

Выход:

 {
 oid:?string // ID заказа звонка
 alert:?string // Фраза, которую нужно показать пользователю
 }

PhoneCalls_Retrieve
Получить список заказов телефонных звонков

Вход:

 filters:object
 lady_name:string
 initiated_by:int - 1 - мужчина, 2 - женщина
 lady_search_field:string - поле “ID или имя”
 pc_status:int статус звонка, см. выходные данные
 limit:?int
 offset:?int
 sort:?object
 type:string - date
 direction:int

Выход:

 {
 result:
 [
 {
 id:string,
 user_id:string,
 type:string, // from_lady|from_man|from_agency,
from_agency - это "Administration"
 lady:
 {
 id:int,
 name:string,
 photo:url,
 online:bool,
 camera:bool
 }
 stamp:int, // штамп времени заказа
 scheduled:int, // штамп времени, на которое звонок
назначен
 scheduled_formatted_date:string, // d M Y
 scheduled_formatted_time:string, // h:i A
 tz:string,
 status:int
 }
 ,...
 ],
 total_count:int
 }

status:

0: DEPOSIT REQUIRED
1: UNCONFIRMED
2: UNCONFIRMED
3: CONFIRMED
4: COMPLETED
5: COMPLETED
6: CANCELED
7: FAILED
8: RUNNING

PhoneCalls_GetOrder
Получить информацию по конкретному заказу

Вход:

 id:string

Выход:

 {
 id:string,
 user_id:string,
 phone_number:
 {
 code:string,
 number:string
 },
 type:string, // from_lady|from_man|from_agency,
from_agency - это "Administration"
 stamp:int, // Штамп даты заказа
 scheduled:int, // Штамп назначенного времени
 schedule_input:
 {
 date:string, // Y-m-d
 time:string, // H:i
 },
 scheduled_formatted_date:string, // d M Y
 scheduled_formatted_time:string, // h:i A
 tz:string,
 status:int,
 confirm_required:bool // Нужно ли подтвердить звонок
 }

PhoneCalls_Cancel
Отмена тел. звонка

Вход:

 id:string

PhoneCalls_Confirm
Подтверждение тел. звонка

Вход:

 id:string

PhoneCalls_Update
Обновление тел. звонка

Вход:

 id:string
 phone_number:?object
 code:string
 number:string
 schedule_input:?object
 date:string - Y-m-d
 time:string - H:i
 tz:string

DateMe_Order
Заказ Date Me.

Вход:

 lady_id:int
 date_from:string
 date_to:string
 interpretation:?int
 transportation_from_airport:?int
 transportation_to_airport:?int
 transportation_to_place_of_stay:?int
 accomodation:?int
 transportation:?int
 comments:?string
 interpretation_hours:?int
 array phone
 string code
 string number

См. страницу Date Me на сайте

Выход:

 {
 processing_hours:int // число часов, требующихся для
обработки заказа, используется в соответствующей фразе
 }

Misc_GetHappyMatches
Получить список Happy Match. Это отдельные избранные Testimonials с отдельной
квадратной картинкой и коротким текстам. Каждый Happy Match ведёт на Testimonial с
таким же id. Могут быть не всегда отсортированы по дате, есть внутренние приоритеты

Вход:

 limit:int
 offset:int
Выход:

 {
 result:
 [
 {
 id:int, // ID тестимониала
 stamp:int, // Штамп времени создания
 name:string, // Автор тестимониала
 image:url,
 excerpt:html
 },...
 ],
 total_count:int
 }

Misc_GetClosestSpecial
Получить баннер о предстоящей/текущей акции. Если нашёлся, то показываем его,
запоминаем показ и в течение 3 дней игнорируем

Выход:

 {
 state:int, // 0 - нет акции, 1 - скоро будет, 2 - в процессе
 name:?string,
 popup:?
 {
 src:url,
 width:int,
 height:int,
 },
 special:?string // что-то большее, чем баннер. Если это поле
установлено, а соответствующая данному значению логика не
реализована, игнорируем результат целиком
 }

Misc_CloseBellNotifications
Вход

 id:int
Misc_CloseBirthdayNotifications
Вход

 id:int

Misc_Complaint
Отправить жалобу на девушку

Вход:

 action:string - report|block|unblock
 content:string - lady|lady_photo|lady_video|chat|letter
 lady_id:int
 report_reason:string - поле свободного ввода
 photo_url:url - если жалоба на фото
 video_url:url - если жалоба на видео
 letter_id:string - если жалоба на письмо

Выход:

 {
 result:bool
 }

Misc_GetComplaintStatus
Получить статус жалобы (отправлена или нет, для отображения в интерфейсе)

Вход: см. Misc_Complaint

Выход:

 {
 status:bool
 }

Порядок работы с чатом


методом Chat_GetInvites получить приглашение, которые юзер может принять или
отклонить через

/chat/invites/<id_инвайта>/accept

/chat/invites/<id_инвайта>/decline

далее он заходит в чат с девушкой (инвайт-не инвайт, не важно), отсылая событие входа в
чат (Chat_SendEvent)
пока чат открыт, он периодически забирает новые сообщения от неё, и как раз в момент
"забора" биллингуется сервером. Как только кредиты кончаются, он не может отправлять
сообщения (и отключается всё видео в чате), но по-прежнему может их получать.

он может закрыть чат, отослав событие выхода из чата методом Chat_SendEvent

На каждую собеседницу - свой вызов для новых сообщений.

вход-выход происходят через Chat_SendEvent

Порядок разбора сообщения в КС


Сейчас список замен такой у нас (это в javascript)

[/\[([b|u|i])\]/g, '<$1>'],

[/\[quote\]/g, '<q class="cs-quote">'],

[/\[url=(((f|ht)tp(s)?:\/\/)[-a-z\(\)0-9@:%_+.~#?&;\/=!]+)\]/g, '<a
href="$1" target="_blank">'],

[/([^(href=")]|^)(((f|ht)tp(s)?:\/\/)[-a-z\(\)0-9@:%_+.~#?&;\/=!]+)/gi
, '$1<a href="$2" target="_blank">$2</a>'],

[/\[\/([b|u|i])\]/g, '</$1>'],

[/\[\/quote\]/g, '</q>'],

[/\[\/url\]/g, '</a>']

стиль цитат такой

.cs-quote {

color:#ab0a0a;
margin-left:2ex;

font-style:italic

.cs-quote::after,.cs-quote::before {

content:'"'

Порядок разбора сообщения в чате


Порядок разбора сообщения в чате:

Базовый шрифт 'Verdana';

Базовый размер '12px';

Базовый цвет '#626262';

Если текст соответствует /^WEBCAM_/ и is_system

WEBCAM_ACCEPT

Собеседник принял запрос на включение видео

WEBCAM_REQUEST

Собеседник запросил включение видео

Если текст соответствует /^GAME_/ и is_system. Пропускаем эти сообщения, если клиент
не поддерживает игры

GAME_JOIN#<id_игры>

Собеседник отправил запрос на игру

GAME_JOIN_ACCEPT#<id_игры>

Собеседник принял запрос на игру

GAME_JOIN_REFUSE#<id_игры>

Собеседник отверг запрос на игру

Во всех остальных случаях


Заменяем коды смайлов на картинки (Массив соответствий доступен через метод
Chat_GetSettings)

Всё, что в [b][/b] - жирное

Всё, что в [i][/i] - курсивом

Всё, что в [u][/u] - подчёркнуто

Ссылки имеют вид [a href=url]Текст[/a], и, как правило, ведут на девушек онлайн, либо
на покупку кредитов. Если url содержит “buy_credits”, ссылка будет вести на
соответствующую страницу покупки кредитов. Если url содержит “online-ladies”, ссылка
будет вести на девушек онлайн.

Порядок работы с видеочатом


Если у клиента присутствует возможность проигрывать видео, у него появляется некий
элемент интерфейса, позволяющий инициировать видеочат, при условии, что у девушки
есть камера (определяется полем has_webcam).

Процесс следующий

1) Вызов Chat_SendEvent для текущего чата с кодом video_request. Он проинформирует


девушку о том, что муж. хочет смотреть её видео.
Вызов метода Chat_GetVideo для текущего чата.
Если он вернул 200, девушка транслирует видео и можно начинать приём трансляции (все
ссылки будут предоставлены, отсутствующие протоколы помечены как null).
Если он вернул 404, оповещаем пользователя: "Your Live Video request has been sent to
<имя девушки>. As soon as she accepts it you'll be able to view her live video. Meanwhile, you
are using Live Chat mode (text only) of the current chat session, and you are welcome to
exchange messages with <имя девушки> now." Может, можно и покороче, обсудите с
Ярославом. Эта фраза выводится в общем потоке чата, от лица системы.

Мониторим на предмет появления видео.

2) Проигрывание видео сопровождается коллбэками на метод Chat_SendEvent с кодами


события video_start и video_end для начала и конца воспроизведения соответственно.

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

Есть ещё вариант с автозапуском видео, если оно есть, то есть пользователю не нужно
инициировать процесс. Но это мобильные пользователи вряд ли оценят.

Двусторонний видеочат
Когда клиент смотрит видео от девушки, и у него есть камера, он имеен возможность
начать двусторонний видеочат. Как только клиент начинает трансляцию своего видео, он
отсылает событие broadcast_start методом Chat_SendEvent , отсылая в evt_data свойство
stream_id с номером своего стрима. Как только клиент по любой причине прекращает
трансляцию, он отсылает событие broadcast_end методом Chat_SendEvent

Порядок работы с пересылаемыми фото и клипами в чате


Приём фото
Фото приходят в сообщении BB-кодом

[attachment param1[=value1]...]

Корень расположения: https://static.behappy2day.com/chat/common/uploads

Превью для неоплаченных фото можно взять по адресу


https://api.behappy2day.com/image.php?chat_attach_id=%id%&nocache&w=300&pm=blur

Возможные параметры

id
path - путь относительно корня
payment-required - фото ещё не оплачено
private - показываем обозначение Private в углу предпросмотра
width
height

По кнопке View выдаётся подтверждение “10 credits will be deducted from your account for
sending this photo”

Если клиент согласен, делается запрос на Services_ChatAttachments_Receive, который в


случае успеха возвращает требуемый path.

Передача фото
Фото передаётся методом Chat_UploadAttachments. В случае успеха отправляем
сообщение типа

[attachment id=%id% path=%path%]

, основываясь на данных из ответа

Приём клипов
Клипы приходят в сообщении BB-кодом

[shortie param1[=value1]...]
Корень расположения: https://static.behappy2day.com/video/shorties

Возможные параметры

id
poster - превью клипа, путь относительно корня
path - клип, путь относительно корня
payment-required - клип ещё не оплачен
width
height

Для клипов отображается превью, а поверх превью - кнопка play (треугольник).

Если клип неоплачен, то по нажатию на кнопку выдаётся подтверждение “15 credits will be
deducted from your account for viewing this clip”.

Если клиент согласен, делается запрос на Services_ChatAttachments_Receive с аргументом


type=”shortie”, который в случае успеха возвращает требуемый path.

Передача клипов
Фото передаётся методом Chat_UploadAttachments. В случае успеха отправляем
сообщение типа

[shortie id=%id% path=%path% path=%path% width=%width% height=%height%


poster=%poster%]

, основываясь на данных из ответа

Вам также может понравиться