В дополнение ко всем методам в схеме "48 часов" необходимо реализовать:
- Закрепить в запросе PACKET причину В случае нехватки денежных средств за , запрос PACKET всегда должен возвращать status = -1
- Дополнительные методы от Платформы24: BALANCE и PACKETS
- Реализовать методы для оплаты через сохраненные кредитные карты в биллинге и возврата урла на платежную форму в метод возвращающий URL к платежной форме в платежной системе (форма должна быть адаптирована для ТВ устройств).
Описание изменений и новых запросов от Платформы24:
В запросе PACKET необходимо изменить возвращаемый ответ и закрепить случае нехватки денежных средств, запрос PACKET всегда должен возвращать status = -1 за причиной нехватки денежных средств для покупки пакета.
Запрос PACKETS при включении сразу нескольких подписок (при быстрых покупках через ТВ приложение)
При получении этого запроса в биллинге провайдера необходимо проверить баланс абонента, в случае, если денежных средств хватает, списать их, через API Платформа24 подключить пакеты и вернуть положительный ответ
Запрос: http://<Интергационный урл>/packets?user_id=<Provider_user_id>uid>&trf_ids=<ID пакета>,<ID пакета>,...,<ID пакета>
...
{ "user": { "id": <ID пользователя в платформе 24часаТВ>, "phone": "<Номер телефона пользователя>", "email": "<email пользователя>", "provider_uid": "<Provider user id_uid – id из биллинговой системы провайдера>", "last_name": "<Фамилия пользователя>", "username": "<UserName пользователя>", "timezone": "Часовой пояс пользователя, например: Indian/Mauritius", "first_name": "<Имя пользователя>" }, "type": "packets", "packets": [
{ "id": <ID желаемого платного пакета в платформе 24часаТВ>, "price": "<Стоимость пакета>", "is_base": <Тип пакета: true – Базовый, false – дополнительный пакет>, "name": "<Название пакета>" },
{ "id": <ID желаемого платного пакета в платформе 24часаТВ>, "price": "<Стоимость пакета>", "is_base": <Тип пакета: true – Базовый, false – дополнительный пакет>, "name": "<Название пакета>" },
....
]
}
...
После получения status -1 Платформа24 пришлет запрос на получение актуального баланса абонента.
Запрос BALANCE для получения актуального баланса абонента
Тип запроса: POST
Запрос: http://<Интергационный урл>/balance?user_id=<Provider_user_id>uid>
В теле запроса будет json такого типа:
{ "type": "balance",
"user": { "id": <ID пользователя в платформе 24часаТВ>, "phone": "<Номер телефона пользователя>", "email": "<email пользователя>", "provider_uid": "<Provider user id_uid – id из биллинговой системы провайдера>", "last_name": "<Фамилия пользователя>", "username": "<UserName пользователя>", "timezone": "Часовой пояс пользователя, например: Indian/Mauritius", "first_name": "<Имя пользователя>" }
}
...
Баланс должен быть в формате decimal, с разделителем точка, в случае другого ответа Платформа24 воспримет это как ошибку и будет невозможно произвести платеж.
Запрос на списание денежных средств с привязанной карты абонентов биллинге провайдера.
Для выполнения запросов списания с карты абонента необходимо получить или передать в Платформу24 приватный секретный ключ (PrivateSecurityKey), для вычисления SecurityKey
Тип запроса: POST
Запрос на: http://<Урл для списания с карты в биллинг>
Параметры в запросе:
...
.
...
...
SecurityKey вычисляется по формуле SHA1("UserID={UserID}&Amount={Amount}&Currency={Currency}&OrderDescription={OrderDescription}&TransactionID={TransactionID}&PrivateSecurityKey={PrivateSecurityKey}).hexdigest(), все параметры в кодировке UTF-8.
При получении данного запроса биллингу необходимо проверить, есть ли привязанная карта у абонента для оплаты и ответить в Платформу24, далее в асинхронном режиме произвести списание с карты через платежную систему. Максимальное время ожидание ответа со стороны Платформа24 - 10 секунд.
Положительный ответ в json формате:
{"status":1}
В случае отсутствия привязанной карты ожидается ответ в json формате:
{"status":0}
Запрос на получение урла на платежную форму в платежной системе
Для выполнения списания денежных средств с абонента, если у него нет привязанных карт через форму оплаты через тв приложение, Платформа24 сделает запрос в биллинг для получения урла на платежную форму в платежной системе.
...
SecurityKey вычисляется по формуле SHA1(""UserID={UserID}&Amount={Amount}&Currency={Currency}&OrderDescription={OrderDescription}&TransactionID={TransactionID}&PrivateSecurityKey={PrivateSecurityKey}").hexdigest(), все параметры в кодировке UTF-8.
...
Все другие ответы считаются ошибочными и в тв приложение будет выведена ошибка, что невозможно совершить платеж.
Отправка статуса транзакции в Платформу24
Для выполнения запросов списания с карты абонента необходимо получить или передать в Платформу24 приватный секретный ключ (PrivateSecurityKey), для вычисления SecurityKey
...
SecurityKey вычисляется по формуле SHA1(""TransactionID={TransactionID}&Amount={Amount}&ExternalTransactionID={ExternalTransactionID}&Currency={Currency}&PrivateSecurityKey={PrivateSecurityKey}").hexdigest(), все параметры в кодировке UTF-8.
...
SecurityKey вычисляется по формуле SHA1(""TransactionID={TransactionID}&Amount={Amount}&ExternalTransactionID={ExternalTransactionID}&Currency={Currency}&PrivateSecurityKey={PrivateSecurityKey}").hexdigest(), все параметры в кодировке UTF-8.
...