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