SDK встраивания виджета оплаты
GET /Card/Sbp/embed.js
SDK встраивания: SbpWidget.mount() (виджет) и SbpWidget.renderButton()
(фирменная кнопка СБП поверх виджета). Файл один на оба контура платформы —
режим определяется тем, с какого адреса он загружен; отсюда же берётся
apiBase по умолчанию.
<div id="pay"></div>
<script src="https://pay-sandbox.digitalspb.com/Card/Sbp/embed.js"></script>
<script>
SbpWidget.mount('#pay', {
invoiceId: '1624505c-0031-00cf-7d54-4cf1ce08cb30', // из ответа createInvoice
token: 'eyJ...', // AuthorizationToken оттуда же
brand: { name: 'Тёплый угол', logo: '/logo.png', primary: '#c2410c', background: '#fff8f3' },
onSuccess: function () { location.href = '/thanks'; },
onFail: function () {},
onExpired: function () {}, // срок QR истёк — счёт нужно создать заново
onError: function (e) {}
});
</script>mount() вставляет <iframe> со страницей виджета и общается с ней через
postMessage: авторесайз высоты и события success / fail / expired / error
→ колбэки. Сообщения принимаются только от своего фрейма и только с origin
платёжного домена. Возвращается объект с destroy().
renderButton('#pay', { createInvoice, brand, ... }) рисует кнопку СБП: создание
счёта делегируется колбэку createInvoice() на backend партнёра (он возвращает
{ invoiceId, token }), кнопка ведёт состояния и после успеха монтирует виджет.
У результата есть setBrand(), reset() и destroy().