Как через API Zenno получить информацию о подписках из своей панели ботов?

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Доброго времени суток.

Как можно вывести для человека в лог сколько дней подписки ему осталось?

Предполагаю что это делается через блок логики "Оповещения"

Так же мне писали что надо добавлять отрезок кода в общий код, код видел в мануале но он не дает переменных чтобы можно было потом в лог отправить и сложно так понять работает ли он.
 
Последнее редактирование:
  • Спасибо
Реакции: kagorec

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Спустя пол дня начал что то понимать, сделал Get запрос по https://userarea.zennolab.com/BotStore.asmx?op=GetSaleInfo, в общем все по справке ZennoLab получил следующий код.
Код:
Content-Type: text/xml; charset=utf-8
Content-Length: <font class=value>length</font>

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;SaleInfo xmlns="http://tempuri.org/"&gt;
  &lt;Id&gt;<font class=value>int</font>&lt;/Id&gt;
  &lt;SaleDateTime&gt;<font class=value>dateTime</font>&lt;/SaleDateTime&gt;
  &lt;CustomerEmail&gt;<font class=value>string</font>&lt;/CustomerEmail&gt;
  &lt;Bots&gt;<font class=value>string</font>&lt;/Bots&gt;
  &lt;HasRefund&gt;<font class=value>boolean</font>&lt;/HasRefund&gt;
  &lt;IsSubscription&gt;<font class=value>boolean</font>&lt;/IsSubscription&gt;
  &lt;SubscriptionDueDate&gt;<font class=value>dateTime</font>&lt;/SubscriptionDueDate&gt;
  &lt;ForProducts&gt;<font class=value>int</font>&lt;/ForProducts&gt;
&lt;/SaleInfo&gt;</pre>
          </span>

      </span>
Вроде как уже что то, но пока не знаю как это к своей странице ботов подсоединить.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Пробую сделать POST запрос на https://userarea.zennolab.com/BotStore.asmx?op=GetSaleInfo
с данными:
HTML:
POST /BotStore.asmx/GetSaleInfo HTTP/1.1
Host: userarea.zennolab.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

login=string&password=string&saleId=string
Чтобы получить:

HTML:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SaleInfo xmlns="http://tempuri.org/">
  <Id>int</Id>
  <SaleDateTime>dateTime</SaleDateTime>
  <CustomerEmail>string</CustomerEmail>
  <Bots>string</Bots>
  <HasRefund>boolean</HasRefund>
  <IsSubscription>boolean</IsSubscription>
  <SubscriptionDueDate>dateTime</SubscriptionDueDate>
  <ForProducts>int</ForProducts>
</SaleInfo>
А оно мне выдает HTTP/1.1 500 Internal Server Error
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Может саппорт что то знает.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
2 дня бился в общем это не реально надо руками писать человеку сколько у него дней осталось.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
я вообще о таком не слышал никогда)
 
  • Спасибо
Реакции: Veterinar

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
я вообще о таком не слышал никогда)
Наверняка в самом ZennoBox есть переменная которая следит за тем сколько дней подписки у человека осталось.
Думаю к ней обратиться в начале шаблона только пока не знаю как саму переменную узнать.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
А если шаб написать и дергать данные из панели управления без всяких апи-шмапи?
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Дату продажи получить и отнять от текущей что бы получить остаток для этого нужен компьютер пользователя?
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Дату продажи получить и отнять от текущей что бы получить остаток для этого нужен компьютер пользователя?
Сори немного не внимательно прочел, это плохой вариант это нужно в изначальный шаблон встроить этот шаблон он будет логинится на ЗенноЛаб основной шаб начнет работать медленнее.
И я не уверен в безопасности такого метода, уверен есть способ с самого бокса получить эти данные.
Надеюсь админы увидят эту тему.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Вы не поняли. Напишите шаблон который будет брать данные из вашего аккаунта, обрабатывать и складывать\отсылать куда надо. Никакого API для этого не нужно.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Вы не поняли. Напишите шаблон который будет брать данные из вашего аккаунта, обрабатывать и складывать\отсылать куда надо. Никакого API для этого не нужно.
Я понял, через шаблон можно получить данные до конца подписки человека и даже отослать их в его шаблон через сторонний сервис, но для этого шаблон надо запускать каждый день для своевременного обновления данных, и это слишком большое усложнение как по мне.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Пробую сделать POST запрос на https://userarea.zennolab.com/BotStore.asmx?op=GetSaleInfo
с данными:
HTML:
POST /BotStore.asmx/GetSaleInfo HTTP/1.1
Host: userarea.zennolab.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

login=string&password=string&saleId=string
Чтобы получить:

HTML:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<SaleInfo xmlns="http://tempuri.org/">
  <Id>int</Id>
  <SaleDateTime>dateTime</SaleDateTime>
  <CustomerEmail>string</CustomerEmail>
  <Bots>string</Bots>
  <HasRefund>boolean</HasRefund>
  <IsSubscription>boolean</IsSubscription>
  <SubscriptionDueDate>dateTime</SubscriptionDueDate>
  <ForProducts>int</ForProducts>
</SaleInfo>
А оно мне выдает HTTP/1.1 500 Internal Server Error
в самом начале верная ссылка, а выкладка запроса к другому урлу следом)
не туда запрос делали)

По сабжу в целом: поставил таску с предложением, чтобы дата окончания подписки отображалась рядом с названием шаблона в постере/боксе, если он куплен по подписке
 
  • Спасибо
Реакции: ibred

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
в самом начале верная ссылка, а выкладка запроса к другому урлу следом)
не туда запрос делали)

По сабжу в целом: поставил таску с предложением, чтобы дата окончания подписки отображалась рядом с названием шаблона в постере/боксе, если он куплен по подписке
Сделал POST запрос с такими данными:

Код:
POST /BotStore.asmx/GetSaleInfo HTTP/1.1
Host: userarea.zennolab.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

login="Мой логин"&password="Мой пароль"&saleId=string

Однако в ответе получил:

Код:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Receiver</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">System.Web.Services.Protocols.SoapException: Server was unable to process request. ---&gt; System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlReader.MoveToContent()
   at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()
   at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp; abortProcessing)
   --- End of inner exception stack trace ---</soap:Text></soap:Reason><soap:Detail /></soap:Fault></soap:Body></soap:Envelope>
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
upload_2016-7-18_15-4-8.png
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Код:
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Mon, 18 Jul 2016 09:02:39 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 493
Connection: keep-alive
Cache-Control: private, max-age=0
Set-Cookie: lang=en; expires=Tue, 18-Jul-2017 12:02:47 GMT; path=/
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Served-In: NL
Strict-Transport-Security: max-age=31536000


<?xml version="1.0" encoding="utf-8"?>
<SaleInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
  <Id>964</Id>
  <SaleDateTime>2013-07-15T16:28:04.607</SaleDateTime>
  <CustomerEmail>[email protected]</CustomerEmail>
  <Bots>427</Bots>
  <HasRefund>false</HasRefund>
  <IsSubscription>false</IsSubscription>
  <SubscriptionDueDate xsi:nil="true" />
  <ForProducts>1</ForProducts>
</SaleInfo>
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Код:
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Mon, 18 Jul 2016 09:02:39 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 493
Connection: keep-alive
Cache-Control: private, max-age=0
Set-Cookie: lang=en; expires=Tue, 18-Jul-2017 12:02:47 GMT; path=/
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Served-In: NL
Strict-Transport-Security: max-age=31536000


<?xml version="1.0" encoding="utf-8"?>
<SaleInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
  <Id>964</Id>
  <SaleDateTime>2013-07-15T16:28:04.607</SaleDateTime>
  <CustomerEmail>[email protected]</CustomerEmail>
  <Bots>427</Bots>
  <HasRefund>false</HasRefund>
  <IsSubscription>false</IsSubscription>
  <SubscriptionDueDate xsi:nil="true" />
  <ForProducts>1</ForProducts>
</SaleInfo>
Спасибо удалось получить дату окончания подписки, дальше в C# рассчитаю количество оставшихся дней.
Остался только ещё один вопрос, POST запрос выдает правильную информацию только в том случае если указан "saleID=string", может есть какая то возможность получить данный "айди" интерактивно, чтобы можно было его вставить в виде переменной?
Так сказать под каждого клиента рассчитывать свое время подписки.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)