Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 ноя 2025, 19:45

Оплата по СБП

Автор skillful, 13 ноя 2025, 15:47

0 Пользователей и 1 гость просматривают эту тему.

skillful

Добрый день. Решил программно сделать оплату СБП, начало кода такое:
    Подразделение = "****";
СуммаСБП = 1;
ПутьУтилит = "\\192.168.1.90\1c\1c-utils81\";
ВремяЖизниQRКода = 4;
Ресурс = "/eis-app/eis-rs/businessPaymentService/activateCashQR";


НастройкаОбмена = Новый Структура;
НастройкаОбмена.Вставить("АдресСервера", "212.46.217.150");
НастройкаОбмена.Вставить("Порт", 7603);
НастройкаОбмена.Вставить("Логин", "*****");
НастройкаОбмена.Вставить("ПутьКСертификату", "SFPCert\*_SFP_RS.pfx");
НастройкаОбмена.Вставить("ПарольСертификата", "********");

СтрокаХост = НастройкаОбмена.АдресСервера + ?(НастройкаОбмена.Порт > 0, ":" + Формат(НастройкаОбмена.Порт, "ЧН=0; ЧГ=0"), "");


HTTPЗаголовки = Новый Соответствие;
HTTPЗаголовки.Вставить("HOST", СтрокаХост);
HTTPЗаголовки.Вставить("x-User-login", НастройкаОбмена.Логин);
HTTPЗаголовки.Вставить("Content-Type", "application/json");


ИдентификаторОперации = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");

СтруктураЗапроса = Новый Структура();
СтруктураЗапроса.Вставить("sourceId", ИдентификаторОперации); //
СтруктураЗапроса.Вставить("terminalId", СокрЛП("CB00000002")); //Код настройки обмена
СтруктураЗапроса.Вставить("merchantId", "********");      //Идентификатор ТСП
СтруктураЗапроса.Вставить("account", "********"); //РасчетныйСчет
СтруктураЗапроса.Вставить("qrcId", "*********");
СтруктураЗапроса.Вставить("amount", СуммаСБП * 100);              //Сумма
СтруктураЗапроса.Вставить("currency", "RUB");
СтруктураЗапроса.Вставить("paymentPurpose", "Оплата " + СуммаСБП + ".00 руб., 13.11.25, 10000000154, " + Подразделение + ", ******.ru.");                  //РасшифровкаПлатежа

Если ВремяЖизниQRКода > 0 Тогда
СтруктураЗапроса.Вставить("cashQrcExpire", ВремяЖизниQRКода);
КонецЕсли;




ТекстЗапроса = ЗаписатьСообщениеJSON(СтруктураЗапроса, Ложь);

Если НЕ(Прав(ПутьУтилит, 1) = "\") Тогда
ПутьУтилит = ПутьУтилит + "\";
КонецЕсли;
ПутьКСертификату = ПутьУтилит + НастройкаОбмена.ПутьКСертификату;

СоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаФайл(ПутьКСертификату, НастройкаОбмена.ПарольСертификата));

HTTPСоединение = Новый HTTPСоединение(НастройкаОбмена.АдресСервера, НастройкаОбмена.Порт,,,, 60, СоединениеSSL);

HTTPЗапрос = Новый HTTPЗапрос(Ресурс, HTTPЗаголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса);

ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
ОтветHTTP =  HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос, ИмяВыходногоФайла);

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ИмяВыходногоФайла, КодировкаТекста.UTF8);

ОтветСервиса = ТекстовыйДокумент.ПолучитьТекст();
ТекстОтвета = ОтветСервиса;

ОтветHTTP = Неопределено;
HTTPЗапрос = Неопределено;
HTTPСоединение = Неопределено;
СоединениеSSL = Неопределено;

Если НЕ(ПустаяСтрока(ОтветСервиса)) Тогда
ОтветСервиса = ПрочитатьСообщениеJSON(ОтветСервиса);
КонецЕсли;


Возврат ОтветСервиса;

Получаю код ответа сервиса в формате JSON, что все ОК.
{"sourceId":"76c300409e534ec380e56e57400c1e56","operationId":"20251113000000000000001159671228","code":"0","message":"ОК","paramsId":"AP10002G1JMR29K88I6AJFG1O1KFEC4M"}

Сканирую приложением банка в котором произвожу оплату qr-код постоянный выданный банком СБП. Мой банк говорит, что ок, подтвердите оплату в 1 рубль, подтверждаю, деньги списываются, но как кодом 1С потом получить ответ от банка, что операция прошла успешно? Вот этого я не пойму как сделать и документации у меня нет.
Было подозрение, что для оплаты используется строка Ресурс = "/eis-app/eis-rs/businessPaymentService/activateCashQR";, а для получения подтверждения оплаты строка /eis-app/eis-rs/businessPaymentService/getQrdStatus, но нет какая то ошибка (не помню какая). Кто может подсказать?
 
   


 


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск