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

  • Автор темы Автор темы Veterinar
  • Дата начала Дата начала

Veterinar

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

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

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

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

Вроде как уже что то, но пока не знаю как это к своей странице ботов подсоединить.
 
Пробую сделать 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
 
Может саппорт что то знает.
 
2 дня бился в общем это не реально надо руками писать человеку сколько у него дней осталось.
 
я вообще о таком не слышал никогда)
Наверняка в самом ZennoBox есть переменная которая следит за тем сколько дней подписки у человека осталось.
Думаю к ней обратиться в начале шаблона только пока не знаю как саму переменную узнать.
 
А если шаб написать и дергать данные из панели управления без всяких апи-шмапи?
 
Дату продажи получить и отнять от текущей что бы получить остаток для этого нужен компьютер пользователя?
 
Дату продажи получить и отнять от текущей что бы получить остаток для этого нужен компьютер пользователя?
Сори немного не внимательно прочел, это плохой вариант это нужно в изначальный шаблон встроить этот шаблон он будет логинится на ЗенноЛаб основной шаб начнет работать медленнее.
И я не уверен в безопасности такого метода, уверен есть способ с самого бокса получить эти данные.
Надеюсь админы увидят эту тему.
 
Вы не поняли. Напишите шаблон который будет брать данные из вашего аккаунта, обрабатывать и складывать\отсылать куда надо. Никакого API для этого не нужно.
 
Вы не поняли. Напишите шаблон который будет брать данные из вашего аккаунта, обрабатывать и складывать\отсылать куда надо. Никакого API для этого не нужно.
Я понял, через шаблон можно получить данные до конца подписки человека и даже отослать их в его шаблон через сторонний сервис, но для этого шаблон надо запускать каждый день для своевременного обновления данных, и это слишком большое усложнение как по мне.
 
Пробую сделать 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
в самом начале верная ссылка, а выкладка запроса к другому урлу следом)
не туда запрос делали)

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

Сделал 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>
 
upload_2016-7-18_15-4-8.png
 
Код:
Развернуть Свернуть Копировать
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>gfgfgfgfgf@blackhatworld.com</CustomerEmail>
  <Bots>427</Bots>
  <HasRefund>false</HasRefund>
  <IsSubscription>false</IsSubscription>
  <SubscriptionDueDate xsi:nil="true" />
  <ForProducts>1</ForProducts>
</SaleInfo>
 
Код:
Развернуть Свернуть Копировать
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>gfgfgfgfgf@blackhatworld.com</CustomerEmail>
  <Bots>427</Bots>
  <HasRefund>false</HasRefund>
  <IsSubscription>false</IsSubscription>
  <SubscriptionDueDate xsi:nil="true" />
  <ForProducts>1</ForProducts>
</SaleInfo>

Спасибо удалось получить дату окончания подписки, дальше в C# рассчитаю количество оставшихся дней.
Остался только ещё один вопрос, POST запрос выдает правильную информацию только в том случае если указан "saleID=string", может есть какая то возможность получить данный "айди" интерактивно, чтобы можно было его вставить в виде переменной?
Так сказать под каждого клиента рассчитывать свое время подписки.
 

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