Оплата по ссылке, платежный шлюз сбербанка
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
примерно так формировал квитанции для с qr кодом для оплаты через банкоматы сбера (часть кода, в основе лежит БСП 2)
// перед печатью заполняем обязательные реквизиты структуры QR кода
&НаСервере
Функция ЗаполнитьСтруктуруРеквизитовQRКода(пСтруктураРеквизитовQRКода)
пСтруктураРеквизитовQRКода = Новый Структура();
пСтруктураРеквизитовQRКода.Вставить("Name"); // организация получатель
пСтруктураРеквизитовQRКода.Вставить("PersonalAcc"); // рассчетный счет получателя
пСтруктураРеквизитовQRКода.Вставить("BankName"); // банк получателя
пСтруктураРеквизитовQRКода.Вставить("BIC"); // БИК банка полкучателя
пСтруктураРеквизитовQRКода.Вставить("CorrespAcc"); // корреспондетский счет получателя
пСтруктураРеквизитовQRКода.Вставить("PayeeINN"); // ИНН организации получателя
пСтруктураРеквизитовQRКода.Вставить("LastName"); // ФИО клиента плательщика
пСтруктураРеквизитовQRКода.Вставить("PayerAddress"); // адрес клиента плательщика
пСтруктураРеквизитовQRКода.Вставить("Purpose"); // описание платежа
пСтруктураРеквизитовQRКода.Вставить("Sum"); // сумма платежа в копейках (без пробелов разделителей разрядов)
пСтруктураРеквизитовQRКода.Name = СокрЛП(Объект.Организация.Наименование);
пСтруктураРеквизитовQRКода.PersonalAcc = СокрЛП(Объект.РасчетныйСчет.НомерСчета);
пСтруктураРеквизитовQRКода.BankName = СокрЛП(Объект.РасчетныйСчет.Банк.Наименование);
пСтруктураРеквизитовQRКода.BIC = СокрЛП(Объект.РасчетныйСчет.Банк.Код);
пСтруктураРеквизитовQRКода.CorrespAcc = СокрЛП(Объект.РасчетныйСчет.Банк.КоррСчет);
пСтруктураРеквизитовQRКода.PayeeINN = СокрЛП(Объект.Организация.ИНН);
Возврат пСтруктураРеквизитовQRКода;
КонецФункции
&НаСервере
Функция ДополнитьСтруктуруРеквизитовQRКода(пСтруктураРеквизитовQRКода, пКонтрагент, пАдресКонтрагента, пДатаДок, пКОплатеИтого)
пСтруктураРеквизитовQRКода.lastName = СокрЛП(пКонтрагент.Наименование);
пСтруктураРеквизитовQRКода.PayerAddress = СокрЛП(пАдресКонтрагента);
пСтруктураРеквизитовQRКода.Purpose = "за " + ВернутьМесяцПрописью(пДатаДок);
пСтруктураРеквизитовQRКода.Sum = Строка(пКОплатеИтого);
Возврат пСтруктураРеквизитовQRКода;
КонецФункции
&НаСервере
Функция СформироватьСтрокуQRКодаПоСтруктуре(пСтруктураРеквизитовQRКода, пДокумент)
строкаQRКода = "";
Для Каждого Элемент Из пСтруктураРеквизитовQRКода Цикл
ЗначениеСтрокой = СокрЛП(Элемент.Значение);
строкаQRКода = строкаQRКода + "|" + Элемент.Ключ + "=" + ЗначениеСтрокой;
КонецЦикла;
Возврат строкаQRКода;
КонецФункции
&НаСервере
Функция СуммаВКопейкахСтрокой(пКОплатеИтого)
прибавитьКСтрокеКопейки = Ложь;
Если пКОплатеИтого - Цел(пКОплатеИтого) = 0 Тогда
прибавитьКСтрокеКопейки = Истина;
КонецЕсли;
лРезультат = Строка(пКОплатеИтого);
лРезультат = БезПробелов(лРезультат);
лРезультат = лРезультат + ?(прибавитьКСтрокеКопейки, ",00", "");
лРезультат = СтрЗаменить(лРезультат, ".", "");
лРезультат = СтрЗаменить(лРезультат, ",", "");
Возврат лРезультат;
КонецФункции
&НаСервере
Функция ПроверитьДопустимуюДлинуОбязательныхРеквизитов(пСтруктураРеквизитовQRКода)
лСтрока = "";
лСтрока = лСтрока + пСтруктураРеквизитовQRКода.Name;
лСтрока = лСтрока + "|" + пСтруктураРеквизитовQRКода.PersonalAcc;
лСтрока = лСтрока + "|" + пСтруктураРеквизитовQRКода.BankName;
лСтрока = лСтрока + "|" + пСтруктураРеквизитовQRКода.BIC;
лСтрока = лСтрока + "|" + пСтруктураРеквизитовQRКода.CorrespAcc;
Если СтрДлина(лСтрока) > 300 Тогда
Шаблон = НСтр("ru = 'Невозможно создать QR-код для печати %1
|Строка обязательных реквизитов должна быть меньше 300 символов:
|""%2""'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, "", лСтрока);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат Ложь;
Иначе
Возврат Истина
КонецЕсли;
КонецФункции
// на сервере
&НаСервере
Функция ПечатьНаСервере(пДок, пМакет, пУспешно, пСтруктураРеквизитовQRКода)
// формируем QR код
ОшибкаQRКода = Ложь;
Если пМакет = "МакетQR" И Объект.ДобавитьQRКод Тогда
// формируем строку QR кода
пСтруктураРеквизитовQRКода = ДополнитьСтруктуруРеквизитовQRКода(пСтруктураРеквизитовQRКода, пДок.Контрагент, АдресКонтрагента, пДок.Дата, СуммаВКопейкахСтрокой(лКОплатеИтого));
QRКодСтрока = СформироватьСтрокуQRКодаПоСтруктуре(пСтруктураРеквизитовQRКода, пДок);
Если ПустаяСтрока(QRКодСтрока) Тогда
ОшибкаQRКода = Истина; // Возникли ошибки
КонецЕсли;
Если НЕ ОшибкаQRКода Тогда
// для формирования QR кода использум встроенный механизм
ДанныеQRКода = УправлениеПечатью.ДанныеQRКода("ST00012" + "|" + QRКодСтрока, 0, 190);
Если НЕ ТипЗнч(ДанныеQRКода) = Тип("ДвоичныеДанные") Тогда
Шаблон = Нстр("Не удалось сформировать QR-код для документа %1");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, пДок);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ОшибкаQRКода = Истина;
КонецЕсли;
Шапка.Рисунки.QRКод.Картинка = Новый Картинка(ДанныеQRКода);
КонецЕсли;
КонецЕсли;
КонецФункции
Показать
(5) https://developer.sberbank.ru/doc/v1/acquiring/easy-connection-one-line
Для получения доступа к генератору ссылок обратитесь по эл.адресу: support@ecom.sberbank.ru
Для получения доступа к генератору ссылок обратитесь по эл.адресу: support@ecom.sberbank.ru
Я прошу помочь генерировать такую ссылку, сейчас мы генерируем его в личном кабинете. Потом эту ссылку отправляем для оплаты.
т.е в 1с сразу подставляем поля сумма, электронку, и текст типа "Оплата заказа 123456789 ФИО"
т.е в 1с сразу подставляем поля сумма, электронку, и текст типа "Оплата заказа 123456789 ФИО"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот