let webSDK = new WrSDK();
webSDK.on('init', function(){
// если this.data не пустой объект
// this.data.user будет содержать данные об авторизации
// пример: (this.data.user && this.data.user.authenticated)?alert("Авторизован"):alert("Не авторизован")
}))
webSDK.registerInit({
lastName: "{{ registerInit.lastName }}",
firstName: "{{ registerInit.firstName }}",
middleName: "{{ registerInit.middleName }}",
birthDate: "{{ registerInit.birthDate }}",
email: "{{ registerInit.email }}",
phone: "{{ registerInit.phone }}",
snils: "{{ registerInit.snils }}",
gender: "{{ registerInit.gender }}",
captcha: "{{ anyCaptcha }}",
accept: {{ acceptPersonalData }}
})
webSDK.registerComplete({
rToken: "{{ registerComplete.rToken }}",
emailCode: "{{ registerComplete.emailCode }}",
smsCode: "{{ registerComplete.smsCode }}",
password: "{{ registerComplete.password }}"
})
webSDK.loginClient({
login: "{{ loginClient.login }}",
pass: "{{ loginClient.pass }}",
captcha: "{{ anyCaptcha }}",
accept: {{ acceptPersonalData }}
})
webSDK.changeTempPassword({
pwdToken: "{{ changeTempPass.pwdToken }}",
password: "{{ changeTempPass.password }}"
})
webSDK.loadLoginView({
authType: "{{ loginClientEsia.authType }}",
redirectUrl: "{{ loginClientEsia.redirectUrl }}",
newWindow: {{ loginClientEsia.newWindow }}
})
webSDK.loginClientSmsInit({
phone: "{{ loginClientBySMS.phone }}",
lastName: "{{ loginClientBySMS.lastName }}",
firstName: "{{ loginClientBySMS.firstName }}",
middleName: "{{ loginClientBySMS.middleName }}",
birthDate: "{{ loginClientBySMS.birthDate }}",
captcha: "{{ anyCaptcha }}",
accept: {{ acceptPersonalData }}
})
webSDK.loginClientSmsComplete({
code: "{{ loginClientBySMS.smsCode }}",
rToken: "{{ loginClientBySMS.rToken }}",
phone: "{{ loginClientBySMS.phone }}",
lastName: "{{ loginClientBySMS.lastName }}",
firstName: "{{ loginClientBySMS.firstName }}",
middleName: "{{ loginClientBySMS.middleName }}",
birthDate: "{{ loginClientBySMS.birthDate }}",
captcha: "{{ anyCaptcha }}",
accept: {{ acceptPersonalData }}
})
webSDK.recoveryInit({
login: "{{ recoveryInit.login }}",
captcha: "{{ anyCaptcha }}"
})
webSDK.recoveryComplete({
pwdToken: "{{ recoveryComplete.pwdToken }}",
password: "{{ recoveryComplete.password }}"
code: "{{ recoveryComplete.code }}"
})
webSDK.selectClient({
id: {{ selectClient.id }}
})
webSDK.clientModify({
email: "{{ clientModify.email }}",
password: "{{ clientModify.password }}",
phone: "{{ clientModify.phone }}"
})
webSDK.loadNspInfo({
klcode: "{{ loadNspKlcode }}"
})
webSDK.downloadTreatPlaceDocument({
protocolId: {{ loadTreatPlaceView.protocolId }},
treatcode: {{ loadTreatPlaceView.treatcode }},
download: '{{ loadTreatPlaceView.download }}'
})
webSDK.downloadTreatPlaceAttachment({
protocolId: {{ loadTreatPlaceView.protocolId }},
treatcode: {{ loadTreatPlaceView.treatcode }},
attachmentId: {{ loadTreatPlaceView.attachmentId }},
download: '{{ loadTreatPlaceView.download }}'
})
webSDK.downloadRecordDocument({
schedid: {{ loadTreatPlaceView.schedid }},
st: {{ loadTreatPlaceView.st }},
en: {{ loadTreatPlaceView.en }},
download: '{{ loadTreatPlaceView.download }}'
})
webSDK.loadReferralList({
start: {{ referralsList.start }},
length: {{ referralsList.length }}
})
webSDK.loadPaymentList({
start: {{ paymentList.start }},
length: {{ paymentList.length }}
})
webSDK.loadBonusList()
webSDK.loadNotificationList()
webSDK.loadPaymentView({
orderid: {{ loadPaymentView.orderid }},
payprofileid: {{ loadPaymentView.payprofileid }},
payamount: {{ loadPaymentView.payamount }},
paymethod: {{ loadPaymentView.paymethod }},
filial: {{ loadPaymentView.filial }},
pcode: {{ loadPaymentView.pcode }},
successurl: {{ loadPaymentView.successurl }}(с указанием протокола https://),
errorurl: {{ loadPaymentView.errorurl }}(с указанием протокола https://),
containerId: {{ loadPaymentView.containerId }},
})
Выберите онлайн прием:
webSDK.openConference({
schedid: {{ openConference.schedid }},
container: {{ openConference.container }}
})
webSDK.loadDocumentList()
webSDK.signDocument({
docid: {{ signDocument.docid }},
filial: {{ signDocument.filial }}
})
Для встраивания captcha нужно определить ее тип и получить ключ в случае с GoogleReCaptcha или код изображения в случае с текстовой captcha.
Пример вызова с инициализацией и встраиванием:
const container = document.getElementById("captchaContainer"); console.assert(container,"Не найден контейнер для captcha"); webSDK.getCaptcha().then(resolve=>{ // Запоминаем и проверяем тип капчи const captchaType = resolve.captchaType; if (captchaType === 'google'){ const googleCaptchaCallbackIfNeeded = function(response){ // действия после валидации // значение response отправляется для валидации в поле captcha // это значение так-же можно получить методом grecaptcha.getResponse // подробности в официальной документации https://developers.google.com/recaptcha/docs/display } // Проверяем наличии скриптов от google const script = document.getElementById('recaptchaScript'); // Callback функция готовности капчи window.reCaptchaReady = function(){ grecaptcha.ready(function(){ container.innerHTML = ""; // пробуем срендерить reCaptcha в контейнер, // если там уже есть reCaptcha - обновим ее try{ grecaptcha.render(container,{ sitekey:(document.domain.indexOf(".infoclinica.ru") + 1) ? resolve.globalPublicKey : resolve.publicKey, callback:googleCaptchaCallbackIfNeeded }) } catch (e){ grecaptcha.reset(container); } }); } if (!script) { const newScriptTag = document.createElement('script'); const scriptSrc = "https://www.google.com/recaptcha/api.js?onload=reCaptchaReady&render=explicit&hl=ru"; newScriptTag.setAttribute('src',scriptSrc); // id тэга нужен для проверки при повторных вызовах newScriptTag.setAttribute('id','recaptchaScript'); document.body.append(newScriptTag); } else { // если скрипт существует вызываем обработчик window.reCaptchaReady(); } } else if (captchaType === 'text') { // помещаем изображение капчи в контейнер container.innerHTML = resolve.captchaBody; let captcha = container.querySelector('img'); if (captcha){ // инициализируем поля и кнопку сброса для captcha const valueField = document.createElement('input') ,inputField = document.createElement('input') ,resetBtn = document.createElement('button'); // это скрытое поле, значение которого будет использоваться для проверки valueField.setAttribute('name','captcha'); valueField.setAttribute('type','hidden'); // это поле для ввода текста пользователем inputField.setAttribute('name','captchaVal'); inputField.setAttribute('type','text'); // обработчик события для заполнения скрытого поля со значением для валидации на сервере inputField.addEventListener('input',function(){ valueField.value = `${captcha.getAttribute('data-validator')}*${this.value}`; }); resetBtn.innerText = 'сброс'; // обработчик для обновления изображения captcha resetBtn.addEventListener('click',function(){ // запрашиваем новое изображение webSDK.getCaptcha().then(resolve=>{ // удаляем текущее изображение captcha.remove(); let temp = document.createElement('p'); temp.innerHTML = resolve.captchaBody; // вставляем изображение на страницу container.prepend(captcha = temp.querySelector('img')); temp.remove(); }); }); container.append(inputField); container.append(valueField); container.append(resetBtn); } } })
Важно!!
Отрисовка captcha нужна:
webSDK.{{item.mnemo}}({{{renderEmitter}}
{{param.mnemo}}: {{param.type=="STRING"?"'":""}}{{ customData[item.mnemo][param.mnemo] }}{{param.type=="STRING"?"'":""}}{{ (index == item.params.length - 1)?"":"," }}
})