Если вы публикуете смартап как физическое лицо, вы можете настроить прием донатов от пользователей. Донат — это безвозмездное пожертвование разработчику от пользователя смартапа.
Донаты обрабатываются с помощью сервиса ЮMoney.
Оповещения о зачислении денег поступают на электронный адрес, привязанный к кошельку ЮMoney.
Условия подключения
Подключить донаты можно, если:
- вы публикуете смартап как физическое лицо (не ИП и не самозанятый),
- у вас есть опубликованный смартап (Chat App, Canvas App, HTML5-игра или Native App).
Вы можете настроить прием донатов на умных устройствах Sber, в мобильных приложениях Салют и Сбербанк Онлайн.
Для подключения донатов:
- Создайте кошелек в ЮMoney.
- Отпра вьте заявку на подключение донатов.
- Настройте прием платежей.
- Добавьте кнопку «Поддержать смартап».
- Отправьте смартап на модерацию.
Создание кошелька
Чтобы получать донаты от пользователей смартапа, создайте кошелек ЮMoney и подтвердите личность.
Комиссия за полученные донаты не взимается.
Об условиях использования кошелька читайте на сайте ЮMoney.
Отправка заявки
Чтобы подключить донаты, отправьте заявку:
- Заполните и подпишите заявление на подключение донатов.
- Заполните шаблон письма.
- Отправьте письмо и скан подписанного заявления на адрес developer@sberdevices.ru.
В ответном письме вы получите идентификатор сервиса (service_id
) и эксплуатационный токен. Используйте токен для проверки функциональности приема донатов.
Настройка донатов в сценарии Code
В этом разделе описан способ подключения донатов в сценарии, созданном в Code.
Перед подключением
Для регистрации и инициации платежа используйте полученные ранее эксплуатационный токен (pay_api_key
) и идентификатор сервиса (service_id
).
- Тип токена: Bearer
- Имя заголовка: Authorization
Токен, service_id
и адрес SmartPay добавьте в конфигурационный файл chatbot.yaml
.
injector:
pay_api_key: '***********'
url_smartpay: 'https://smartpay.devices.sberbank.ru/smartpay/v1/'
service_id: '##'
Для вызова функций подключите в файле chatbot.yaml
следующие библиотеки:
scriptsPreLoad:
global:
- /jslib/moment.min.js
- /jslib/underscore.js
- /jsapi/common.js
- /jsapi/http.js
local:
- /jsapi/mail.js
- /jsapi/reactions.js
- /jsapi/payment.js
Проведение платежа
Чтобы провести платеж:
-
Создайте счет на оплату с помощью запроса
POST /invoices
.Успешно выполненный запрос возвращает
invoice_id
— уникальный номер счета.Вы можете выполнить запрос с помощью JS-функции, которая вызывается в сценарии Code:
/src/scripts/donationUtils.jsfunction createDonationOrderSample(context) {
// Заголовок запроса
var header = {
accept: 'application/json',
'Content-Type': 'application/json',
Authorization: 'Bearer ' + context.injector.pay_api_key, // Эксплуатационный токен
};
// Тело запроса
var body = {
invoice: {
invoice_params: [
{
key: 'inapp_serviceparam_payment_instruments',
value: 'new',
},
],
order: {
order_id: generateUUID(), // Уникальный идентификатор заказа
order_number: '145', // Произвольный номер заказа
order_date: currentDate(),
service_id: context.injector.service_id, // Идентификатор сервиса из раздела injector файла chatbot.yaml
amount: 200, // Минимальная сумма для оплаты в ЮMoney - 2 руб
currency: 'RUB',
purpose: 'Поддержать суммой от:', // Отображается в платежном интерфейсе
description: 'Поддержка смартапа',
language: 'ru-RU',
tax_system: 0,
order_bundle: [
{
position_id: 1,
name: 'Поддержи р азработчика!',
quantity: {
value: 1,
measure: 'ед.',
},
item_price: 200,
item_amount: 200,
currency: 'RUB',
item_code: 'com.smartapp.donation',
},
],
},
},
};
// Адрес сервера для проведения оплаты из раздела injector файла chatbot.yaml
var url = context.injector.url_smartpay + 'invoices';
// Выполняем запрос с помощью сервиса $http и сохраняем ответ
var response = $http.query(url, {
method: 'POST',
headers: header,
body: body,
});
$jsapi.log('| Donation Sample | create invoice:' + toPrettyString(response.data));
return response.data;
//Вспомогательная функция для создания уникального идентификатора заказа
function generateUUID() {
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (dt + Math.random() * 16) % 16 | 0;
dt = Math.floor(dt / 16);
return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
return uuid;
}
}Пример получения номера счета в сценарии:
/src/main.scstate: donationSample
script:
// Получаем invoice_id
var response = createDonationOrderSample($context);
var invoice_id = response.invoice_id -
Получите платежную форму с помощью запроса
POST /invoices/{invoice_id}
Примерный вид адреса платежной формы, полученной в ответ на запрос, в поле
form_url
:https://smartpay.devices.sberbank.ru/smartpay/v1/payment-form?payment_uid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx-xxxxxxxx
Вы можете выполнить запрос с помощью JS-функции, которая вызывается в сценарии Code:
/src/scripts/donationUtils.jsfunction updateInvoiceWithPaymentWay(context, invoice_id) {
var pay_api_key = context.injector.pay_api_key;
// Заголовок запроса
var header = {
"accept": "application/json",
"Content-Type": "application/json",
"Authorization": "Bearer " + pay_api_key // Эксплуатационный токен
};
var device_surface = context.session.rawRequest.payload.device.surface.toUpperCase();
var platform_type = context.session.rawRequest.payload.device.platformType.toUpperCase();
var sub = context.session.rawRequest.uuid.sub;
var body = {
"user_id": {
"encrypted_sub_id": sub,
"user_channel": "B2C"
},
"code": "QR"
};
var url = context.injector.url_smartpay + "invoices/" + invoice_id;
// Выполняем запрос с помощью сервиса $http и сохраняем ответ
var response = $http.query(url, {
method: "POST",
headers: header,
body: body
});
$jsapi.log("| Donation Sample | update invoice: " + response.data);
return response.data
}