Для установки sdk необходимо прописать на сайте скрипт в раздел head:
<script src="https://pay.mts.ru/web-sdk/sdk.js"></script>
Затем добавить в body новый элемент:
<div id="widget"></div>
В данный элемент будет рендериться виджет.
interface ResultHandlerData {
errorCode?: string
message?: string
eventName: 'successPayment' | 'failPayment' | 'validationError' | 'close' | 'flexPaymentUnavailable'
}
type TResultHanlder = (data: ResultHandlerData) => void
type TScenarioType = 'flex'
type TColorMode = 'light' | 'dark'
type TBtnEndText = 'complete' | 'returnToStore' | 'close' | 'return'
type TSelectedPaymentToolType = 'mtsBankCard' | 'boundCard' | 'mtsDengiBankCard' | 'newCard' | 'ewalletBinding'
interface InitSdkProps {
scenarioType: TScenarioType
sessionId: string
tokenId?: string
successReturnUrl?: string
failReturnUrl?: string
selectedPaymentToolType?: TSelectedPaymentToolType
selectedPaymentToolId?: string
environment?: 'TEST' | 'PROD'
colorMode?: TColorMode
btnEndText?: TBtnEndText
hasSuccessScreen?: boolean
resultHandler?: TResultHanlder
}
type TMTSPay = (props: InitSdkProps) => {
render: (param: string | HTMLElement) => void
destroy: () => void
}
Для инициализации виджета необходимо при клике по кнопке оплаты пользователем вставить следующий код:
function widgetResultHandler({ errorCode = '', message = '', eventName }) {
// business logic
}
var params = {
scenarioType: 'flex',
sessionId: 'sessionId',
tokenId: 'tokenId',
successReturnUrl: 'https://merchant.site/success',
failReturnUrl: 'https://merchant.site/failed',
selectedPaymentToolType: 'newCard',
environment: 'PROD',
colorMode: 'light',
btnEndText: 'complete',
hasSuccessScreen: true,
resultHandler: widgetResultHandler
}
var widget = new MTSPay(params);
widget.render('widget');
Где params - объект с инициализируемыми данными, в который входят:
widget.render - функция, которая отрендерит виджет в тот id, который в нее передается.
widget.destroy - функция, которую можно вызвать, чтобы размонтировать виджет.
Вместо id элемента, куда будет рендериться виджет, можно передать сам элемент:
var widget = new MTSPay(params); // инициализируем
var element = document.getElementById('widget') // ищем элемент
widget.render(element); // рендерим
Ручное удаление отрендеренного виджета
Если по каким-то причинам, необходимо вручную удалить виджет с экрана, то необходимо выполнить следующий код (рекомендуем избегать таких ситуаций):
var widget = new MTSPay(params); // инициализируем
widget.render('widget'); // рендерим
widget.destroy(); // удаляем