Загрузка движений по карте приватбанка через API |
Программирование 8 -
Внешние связи
|
25.09.2016 |
Сегодня практически все интернет-магазины принимают оплату за товары на карту приватбанка. Приватбанк предоставляет достаточно много интересных инструментов для разработчиков. Один из таких инструментов - возможность загрузки выписки со всеми движениями по карте. Пример такой загрузки мы и рассмотрим.
Обмен данными производится в формате xml, поэтому нам нужно подготовить файл для отправки в этом формате. Чем мы и займемся.
//Зададим период выборки движений в правильном формате.
ДатаНачала = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
ДатаОкончания = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy");
//Ваш приватный ключ (пароль) , его можно найти в кабинете мерчанта.
ПриватныйКлюч = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ";
// Там же смотрим ИД и номер карты, по которой хотим видеть движения
ИДМерчанта = Формат("ХХХХХ","ЧГ=0");
НомерКарты = Формат("ХХХХ ХХХХ ХХХХ ХХХХ","ЧГ=0");
// Фрагмен блока файла date выносим отдельно и пишем в виде одной строки без лишних символов.
//Он необходим для правильного формирования сигнатуры
СтрокаДата = "<oper>cmt</oper><wait>0</wait><test>1</test><payment id=""""><prop name=""sd"" value="""+ ДатаНачала +""" />
<prop name=""ed"" value="""+ ДатаОкончания +""" /><prop name=""card"" value="""+ НомерКарты +""" /></payment>";
//Сигнатура формируется по блоку дата и приватному ключу
тСтрока = "" + СтрокаДата + "" + ПриватныйКлюч;
// Формируем сигнатуру. Обратите внимание что така возможсноть есть только в 1С версии 8.3.
//Для более ранник функций необходимо использовать внешние компоненты.
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
Хеш.Добавить(тСтрока);
Хеш2 = Новый ХешированиеДанных(ХешФункция.SHA1);
Хеш2.Добавить(НРег(СтрЗаменить(Строка(Хеш.ХешСумма), " ", "")));
signature = НРег(СтрЗаменить(Строка(Хеш2.ХешСумма), " ", ""));
//Формируем финальный текст xml который будем передавать в запросе и отправляем запрос банку.
//Обязательно текст блока дата берем тот, по которому формировали сигнатуру иначе будет ошибка!
Запрос = "<?xml version=""1.0"" encoding=""UTF-8""?>
|<request version=""1.0"">
| <merchant>
| <id>" + ИДМерчанта + "</id>
| <signature>" + signature + "</signature>
| </merchant>
| <data>" + СтрокаДата + "</data>
|</request>";
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.Open("POST","https://api.privatbank.ua/p24api/rest_fiz",0);
WinHttp.setRequestHeader("Content-type", "text/xml; charset=utf-8");
WinHttp.Send(Запрос);
ТекстОтвета = WinHttp.ResponseText();
//Текст ответа получаем в формате xml и дальше уже его обрабатываем.
Информацию о структуре XML и передаваемых параметрах можно найти здесь - https://api.privatbank.ua/api-privat24/rest-fiz.html
Там же образец файлов ответа, которые получаем в ответе.
|