Web API
Для интеграции BGBilling с внешними сайтами или стороним Личным кабинетом, возможно использование механизм Web API (доступен с версии 6.2)
Для активации данного API в конфигурации ядра необходимо прописать
web.api.enable=true
Запрос к Web API не проверяется на аутентификацию и права пользователя, поэтому при его включении нужно изолировать доступ к данному URL.
После активации, будeт доступны два режима получения данных из BGBIlling:
в XML формате (http://host[:port]/bgbilling/xmlWebApi/<operation>)
в JSON формате (http://host[:port]/bgbilling/jsonWebApi/<operation>)
где <operation> это:
для Ядра
login
contractParameters
contractTarifPlans
contractBalance
contractPayments
lastContractPayments
contractTariffOptions
contractModules
newsList
для других модулей - в разработке, дополнительная информация по запросу на e-mail (http://bgbilling.ru) или на форуме
Операция login
пример запроса - /xmlWebApi/login?login=kirill&password=******[&midAuth=0] или /jsonWebApi/login?login=kirill&password=******[&midAuth=0]
ответы:
<response><status>Ok</status><contractId>
386010
</contractId><contractTitle>kirill</contractTitle></response>
или
{
"contractTitle"
:
"kirill"
,
"contractId"
:
386010
,
"status"
:
"Ok"
}
Операция contractParameters
пример запроса - /xmlWebApi/contractParameters?contractId=386010 или /jsonWebApi/contractParameters?contractId=386010
ответы:
<response><status>Ok</status><contractParameters><contractParameter><id>
4
</id><typeId>
1
</typeId><title>Ф.И.О. руководителя</title><read>
true
</read><write>
true
</write><value>Иванов Иван Иванович</value></contractParameter><contractParameter><id>
7
</id><typeId>
1
</typeId><title>Контактное лицо</title><read>
false
</read><write>
true
</write><value/></contractParameter><contractParameter><id>
1
</id><typeId>
1
</typeId><title>Краткое название организации</title><read>
true
</read><write>
true
</write><value>Фирма</value></contractParameter><contractParameter><id>
20
</id><typeId>
3
</typeId><title>e-mail</title><read>
true
</read><write>
true
</write><value><info
@company
.ru></value></contractParameter><contractParameter><id>
40
</id><typeId>
9
</typeId><title>Телефон (новый)</title><read>
true
</read><write>
true
</write><value>
7
(
347
)
292
-
48
-
23
</value></contractParameter></contractParameters></response>
или
{
"contractParameters"
:[{
"read"
:
"true"
,
"typeId"
:
"1"
,
"id"
:
"4"
,
"title"
:
"Ф.И.О. руководителя"
,
"write"
:
"true"
,
"value"
:
"Иванов Иван Иванович"
},{
"read"
:
"false"
,
"typeId"
:
"1"
,
"id"
:
"7"
,
"title"
:
"Контактное лицо"
,
"write"
:
"true"
},{
"read"
:
"true"
,
"typeId"
:
"1"
,
"id"
:
"1"
,
"title"
:
"Краткое название организации"
,
"write"
:
"true"
,
"value"
:
"Фирма"
},{
"read"
:
"true"
,
"typeId"
:
"3"
,
"id"
:
"20"
,
"title"
:
"e-mail"
,
"write"
:
"true"
,
"value"
:
"<info@company.ru>"
},{
"read"
:
"true"
,
"typeId"
:
"9"
,
"id"
:
"40"
,
"title"
:
"Телефон (новый)"
,
"write"
:
"true"
,
"value"
:
"7 (347) 292-48-23"
}],
"status"
:
"Ok"
}
Операция contractTarifPlans
пример запроса - /xmlWebApi/contractTarifPlans?contractId=386010[&entityMid=1][&entityId=1] или /jsonWebApi/contractTarifPlans?contractId=386010[&entityMid=1][&entityId=1]
Ответы:
<response><status>Ok</status><contractTarifPlans><contractTarifPlan><id>
273691
</id><tariffPlanId>
52
</tariffPlanId><title>КИРИЛЛ (web)</title><dateFrom>
06.01
.
2015
</dateFrom><dateTo/><period>
06.01
.
2015
-…</period><comment>Смена тарифа через Web</comment><pos>
2
</pos></contractTarifPlan></contractTarifPlans></response>
или
{
"contractTarifPlans"
: [
{
"period"
:
"06.01.2015-…"
,
"pos"
:
"2"
,
"dateTo"
:
""
,
"comment"
:
"Смена тарифа через Web"
,
"id"
:
"273691"
,
"tariffPlanId"
:
"52"
,
"title"
:
"КИРИЛЛ (web)"
,
"dateFrom"
:
"06.01.2015"
}
],
"status"
:
"Ok"
}
Операция contractBalance
пример запроса - /xmlWebApi/contractBalance?contractId=386010 или /jsonWebApi/contractBalance?contractId=386010
Поддерживаются параметры в конфиге
web.api.contract.balance.format.pattern=###,###,###,###.
00
client.gui.currency.title.medium=руб.
Ответы:
<response><status>Ok</status><sum>
99
878
732
,
10
</sum><currencyTitleMedium>руб.</currencyTitleMedium></response>
или
{
"currencyTitleMedium"
:
"руб."
,
"sum"
:
"99 878 732,10"
,
"status"
:
"Ok"
}
Операция contractPayments
пример запроса - /xmlWebApi/contractPayments?contractId=386010[&members=1][&date1=2016-01-01][&date2=2019-01-01] или /jsonWebApi/contractPayments?contractId=386010[&members=1][&date1=2016-01-01][&date2=2019-01-01]
где members - если == 1, то только данный договор, если = 2 то вернет еще и его зависемые субдоговора, если = 3 то только его зависемые субдоговора.
date1 и date2 - задают период за который выводятся платежи
<response><status>Ok</status><contractPayments><contractPayment><id>
251748
</id><typeId>
54
</typeId><typeTitle>NetPay</typeTitle><date>
01.09
.
2016
</date><comment>Оплата через платежный сервис NetPay [транзакция #
7
]</comment><sum>
107
,
00
</sum></contractPayment></contractPayments><totalSum>
107
,
00
</totalSum></response>
Ответы:
{
"totalSum"
:
"107,00"
,
"contractPayments"
: [
{
"date"
:
"01.09.2016"
,
"typeId"
:
"54"
,
"comment"
:
"Оплата через платежный сервис NetPay [транзакция #7]"
,
"sum"
:
"107,00"
,
"id"
:
"251748"
,
"typeTitle"
:
"NetPay"
}
],
"status"
:
"Ok"
}
Операция lastContractPayments
пример запроса - /xmlWebApi/lastContractPayments?contractId=386010[&members=1][&lastPayments=3] или /jsonWebApi/lastContractPayments?contractId=386010[&members=1][&lastPayments=3]
где members - если == 1, то только данный договор, если = 2 то вернет еще и его зависемые субдоговора, если = 3 то только его зависемые субдоговора.
lastPayments - количество платежей
Ответы:
<response><status>Ok</status><contractPayments><contractPayment><id>
251748
</id><typeId>
54
</typeId><typeTitle>NetPay</typeTitle><date>
01.09
.
2016
</date><comment>Оплата через платежный сервис NetPay [транзакция #
7
]</comment><sum>
107
,
00
</sum></contractPayment><contractPayment><id>
251735
</id><typeId>
50
</typeId><typeTitle>Moneta</typeTitle><date>
21.07
.
2016
</date><comment>Оплата через платежный сервис Moneta.ru [транзакция #
16
]</comment><sum>
116
,
00
</sum></contractPayment></contractPayments><totalSum>
223
,
00
</totalSum></response>
или
{
"totalSum"
:
"223,00"
,
"contractPayments"
: [
{
"date"
:
"01.09.2016"
,
"typeId"
:
"54"
,
"comment"
:
"Оплата через платежный сервис NetPay [транзакция #7]"
,
"sum"
:
"107,00"
,
"id"
:
"251748"
,
"typeTitle"
:
"NetPay"
},
{
"date"
:
"21.07.2016"
,
"typeId"
:
"50"
,
"comment"
:
"Оплата через платежный сервис Moneta.ru [транзакция #16]"
,
"sum"
:
"116,00"
,
"id"
:
"251735"
,
"typeTitle"
:
"Moneta"
}
],
"status"
:
"Ok"
}
Операция contractTariffOptions
пример запроса - /xmlWebApi/contractParameters?contractId=386010 или /jsonWebApi/contractParameters?contractId=386010
Форматирование суммы можно задать через параметр конфига
web.api.contract.tariff.option.sum.format.pattern=###,###,###,###.
00
Ответы:
<response><status>Ok</status><contractTariffOptions><contractTariffOption><id>
81
</id><timeFrom>
24.07
.
2015
</timeFrom><timeTo/><title>Дешевый
трафик</title><optionId>
5
</optionId><sum>,
00
</sum></contractTariffOption></contractTariffOptions></response>
или
{
"contractTariffOptions"
: [
{
"timeFrom"
:
"24.07.2015"
,
"timeTo"
:
""
,
"optionId"
:
"5"
,
"sum"
:
",00"
,
"id"
:
"81"
,
"title"
:
"Дешевый трафик"
}
],
"status"
:
"Ok"
}
Операция contractModules
пример запроса - /xmlWebApi/contractModules?contractId=386010 или /jsonWebApi/contractModules?contractId=386010
Ответы:
<response><status>Ok</status><contractModules><contractModule><id>
145
</id><title>BVCom</title></contractModule><contractModule><id>
43
</id><title>CerberCrypt2</title></contractModule><contractModule><id>
179
</id><title>INET</title></contractModule><contractModule><id>
213
</id><title>Mobi.Деньги</title></contractModule><contractModule><id>
239
</id><title>Moneta</title></contractModule><contractModule><id>
70
</id><title>MPS</title></contractModule></contractModules></response>
или
{
"contractModules"
: [
{
"id"
:
"145"
,
"title"
:
"BVCom"
},
{
"id"
:
"43"
,
"title"
:
"CerberCrypt2"
},
{
"id"
:
"179"
,
"title"
:
"INET"
},
{
"id"
:
"213"
,
"title"
:
"Mobi.Деньги"
},
{
"id"
:
"70"
,
"title"
:
"MPS"
}
],
"status"
:
"Ok"
}
Операция newsList
пример запроса - /xmlWebApi/newsList?contractId=386010 или /jsonWebApi/newsList?contractId=386010
Ответы:
<response><status>Ok</status><newsList><item><id>
12
</id><date>
01.12
.
2010
</date><title>Внимание!!! Акция!!! Только
5
дней!!!</title><body><h1>Текст новости H1</h1>
<h2>Текст новости H2</h2></body></item><item><id>
11
</id><date>
13.07
.
2010
</date><title>
123
</title><body>
12312312312
</body></item><item><id>
9
</id><date>
14.12
.
2009
</date><title>vzxlck;glsdfh</title><body>LKNBLNCVXKC;BHJXC;VBJH;XKFGHBGHDFG</body></item><item><id>
10
</id><date>
07.12
.
2009
</date><title>бла бла бла</title><body>трали вали</body></item></newsList></response>
или
{
"newsList"
: [
{
"date"
:
"01.12.2010"
,
"id"
:
"12"
,
"title"
:
"Внимание!!! Акция!!! Только 5 дней!!!"
,
"body"
:
"<h1>Текст новости H1</h1>\n<h2>Текст новости H2</h2>"
},
{
"date"
:
"13.07.2010"
,
"id"
:
"11"
,
"title"
:
"123"
,
"body"
:
"12312312312"
},
{
"date"
:
"14.12.2009"
,
"id"
:
"9"
,
"title"
:
"vzxlck;glsdfh"
,
"body"
:
"LKNBLNCVXKC;BHJXC;VBJH;XKFGHBGHDFG"
},
{
"date"
:
"07.12.2009"
,
"id"
:
"10"
,
"title"
:
"бла бла бла"
,
"body"
:
"трали вали"
}
],
"status"
:
"Ok"
}