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