SDK

Взаимодействие с сервисом КупиВкредит осуществляется с помощью SDK (Software Development Kit, англ.) - набора средств разработки для удобного создания программных объетов и их вызовов их методов.

SDK КупиВкредит реализован на языке Javascript.

Подключение

SDK подключается с помощью загруки скрипта на страницу - как синхронно, так и асинхронно (предпочтительно).

URI ресурса:

Асинхронная загрузка

При асинхронной загрузке первое, что нужно сделать - определить callback-функцию в глобальном контексте переменных (window), которая будет вызвана после успешной загрузки скрипта. В качестве единственного аргумента в функцию будет передат объект SDK.

<script type="text/javascript">
    window.myOnLoadFunction = function(SDK) {
        // SDK загружен!
    }
</script>

Скрипт можно загрузить двумя способами. Либо через тэг script с использованием атрибута async, либо динамически (предпочтительно):

<script type="text/javascript">

    function loadSDK(path, fnName) {
        var scriptPath, firstScript, scriptElement;

        scriptPath = path + "?onload=" + fnName;

        firstScript   = document.getElementsByTagName("script")[0];
        scriptElement = document.createElement("script");
        scriptElement.src = scriptPath;
        firstScript.parentNode.insertBefore(scriptElement, firstScript.nextSibling || firstScript);
    }

    loadSDK("https://form.kupivkredit.ru/sdk/v1/sdk.js", "myOnLoadFunction");

</script>

Синхронная загрузка

При синхронной загрузке можно подключить скрипт через тэг script без указания атрибута async. Однако такой вариант загрузки нежелателен, так как негативно сказывается на скорости загрузки страницы.

Независимо от способа загрузки скрипта объект SDK будет зарегистрирован в глобальном контексте переменных (window) под именем KVK. В случае, если такое имя используется в вашем приложении, вы можете, предварительно сохранив ссылку на SDK в любую переменную, вызвать метод window.KVK.noConflict(), который вернет предыдущее значение глобальной переменной KVK.

Использование SDK

interface SDK {
    Element ui(method: string, parameters: Object, [options: Object])
}

UI

UI элементы сервиса КупиВкредит создаются при помощи метода "ui":

interface Element extends EventEmitter {
    //
};

Каждый элемент реализует интерфейс EventEmitter. Это означает, что созданный элемент может генерировать события. На любое событие можно подписать при помощи метода on.

На данный момент доступны следующие элементы:

  • form

Form

interface Form extends Element {
    Promise open();
    Promise close();
}

События:

Событие Аргументы Описание
open form: Form Форма открыта
close form: Form Форма закрыта
escape form: Form, action: number Пользователь нажал кнопку "закрыть". Второй аргумент - выбор пользователя на модальном окне (1 - да, действительно закрыть, 0 - нет, продолжить заполнение)
complete form: Form Форма заполнена
decision form: Form, decision: string Получено решение
admit form: Form Пользователь принимает условия по кредиту
deny form: Form Пользователь отказывается от условий по кредиту

Параметры конструктора:

Параметр Тип Обязательный Описание
order String да Объект заданной структуры, содержащий заказ покупателя, сериализованный в JSON и закодированный Base64
sign String да Подпись заказа, сформированная по соответствующему алгоритму формирования подписи
type String нет Тип формы - "полная" или "короткая": "full" (по умолчанию) или "short".

Опции конструктора: нет.

Элемент формы создается следующим образом:

var form;

form = KVK.ui("form", { order: "<base64order>", sign: "<sign>", type: "<type>" });

Чтобы открыть форму используется метод open, чтобы закрыть - close:

form.open();
///
form.close();

Оба метода возвращают Promises/A+ совместимые обещания. На данный момент используется библиотека broody-promises.

form.open().then(function() {
    // do something
});