Skip to content

tlwadmin/TeleWalletSDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Прием платежей

Механизм платежа через @TeleWalletAbot состоит из 3-х этапов

  1. Создание чек-ссылки

  2. Оплата на стороне @TeleWalletAbot

  3. Подтверждение и завершение платежа

  4. Создается чек-ссылка формата http://t.me/TeleWalletAbot?start=pay.... по которой должен перейти пользователь, чтобы совершить оплату. Для получения такой ссылки необходимо отправить POST-запрос по адресу https://api.telewallet.ru/create со следующими полями: accnumber -- номер платежного счета sum -- сумма платежа payId -- уникальный идентификатор платежа на стороне вашего проекта target -- (необязательный) если отправлен, то при оплате пользователю будет показано, за что он платит

    В ответ будет возвращен json формата {url:'....', error:0} если все переданные параметры верны или {error:'код ошибки'} если есть ошибка

    Коды ошибок при создании чек-ссылки: 1 - Неверные параметры (один из обязательных параметров не передан) 2 - Некорректная сумма 3 - Некорректный номер счёта

Если на стороне вашего проекта получен корректный ответ, прячем ссылку из параметра url в инлайн-кнопку, на которую должен будет нажать ваш пользователь, чтоб начать процесс платежа

  1. Оплата на стороне @TeleWalletAbot После того, как пользователь перешел по чек-ссылки и запустил бота, ему будет показано уведомление вида:

"Вы собираетесь заплатить (сумма) (валюта) Получатель: (название вашего проекта, которое вы указали в настроках счета)"

Под сообщением расположены 2 кнопки: Подтвердить и Отмена. При нажатии Подтвердить, если у пользователя достаточно средств на балансе для оплаты, то переходим к 3-му этапу. Если нет, пользователь получит уведомление, что ему нужно вначале пополнить свой счет в @TeleWalletAbot и потом вернуться к оплате. При нажатии Отмена -- процесс платежа будет отменен

  1. Подтверждение и завершение платежа После нажатия пользователем кнопки Подтвердить (на 2-м этапе) кошелек @TeleWalletAbot отправляет POST-запрос на ваш url для уведомлений, который вы указали в настройках платежного счёта. Параметры запроса: accnumber -- номер платежного счета sum -- сумма платежа payId -- уникальный идентификатор платежа на стороне вашего проекта target -- цель платежа hash -- строка, сформированная по следующему правилу: accnumber+'&'+sum+'&'+payId+'&'+apikey и зашифрованная алгоритмом SHA-1

Для того чтоб быть уверенными, что запрос на ваш url поступил именно от @TeleWalletAbot вам нужно посчитать hash на своей стороне и сравнить его с полученным hash из POST - запроса. Если проверка прошла успешно, ваш скрипт должен зачислить средства на счет плательщика на стороне вашего проекта и вернуть (напечатать) YES

@TeleWalletAbot проверяет, вернул ли ваш скрипт YES и только в этом случае списывает деньги со счёта плательщика и зачисляет их на ваш платежный счёт. В противном случае, пользователю будет выдано уведомление об ошибке платежа и предложение связаться с владельцем проекта

Чтоб платеж корректно работал, все настройки платежного счёта, в том числе URL успешно и URL FAIL должны быть заполнены. URL успешно и URL FAIL обязательно должны начинаться с http:// или https://

Альтернативная модель проверки платежа

Если ваш бот работает по схеме longpolling, т.е. не подписан на прием вебхуков от Телеграм, а сам постоянно шлет запросы на сервер, тогда нередко такой бот может не иметь внешнего url для приема информации о завершенном платеже. После того как вы предоставили пользователю чек-ссылку на оплату, отправляйте периодически POST-запросы на адрес https://api.telewallet.ru/paystatus с параметрами accnumber и payId. Как вариант, можно сделать кнопку под сообщением "Проверить оплату", по нажатию на которую проверять платеж. Если вы используете наш TeleWalletAutopay.js тогда для получения статуса платежа достаточно вызвать его метод payStatus.

Пример ответа, когда платеж еще не выполнен ( и средства зачислять не надо)

{ id: '101', apikey: '', accnumber: 'ap1xxxx8', sum: '15', target: 'Пополнение, payId: '53', finished: '0', moment: '0' }

Пример ответа, когда платеж выполнен (и их нужно зачислить на баланс пользователя )

{ id: '101', apikey: '', accnumber: 'ap1xxxx8', sum: '15', target: 'Пополнение, payId: '53', finished: '1', moment: '12345678' }

В ответе необходимо проверить значение finished. Если finished = 0 -- платеж еще не был выполнен. Если finished = 1 -- платеж прошел успешно, можно зачислять средства на баланс. При таком методе проверки вам самостоятельно нужно позаботиться о том, чтоб сумма не была зачислена на баланс несколько раз. Это можно сделать, например, удаляя кнопку "Проверить платеж" как только получен статус с finished = 1

Чтобы показать кошельку, что вы хотите обрабатывать платеж по схеме с запросом статуса (а не с отправкой вебхука), укажите в настройках платежного счёта 'URL для уведомлений' = longpolling

Автоматические выплаты

Чтоб сделать автоматическую выплату из своего проекта, запросите у своего пользователя сумму и номер счета в @TeleWalletAbot. После этого отправьте POST-запрос на адрес https://api.telewallet.ru/payout со следующими параметрами: sum -- сумма платежа
recepient -- цель платежа hash -- строка, сформированная по следующему правилу: accnumber+'&'+sum+'&'+recepient+'&'+apikey и зашифрованная алгоритмом SHA-1

Если всё верно, то вы получите json {success:1,error:0}, если что-то не так, то {error:'код ошибки'}

Коды ошибок при автовыплате: 1 -- неверные параметры (скорее всего, не все обязательные параметры переданы) 2 -- некорректная сумма (меньше нуля или не число) 3 -- недействительный номер платежного счета (accnumber) 4 -- некорректный счёт получателя 5 -- валюта счёта получателя не совпадает с валютой платежного счёта 6 -- недостаточно денег на платежном счёте, для осуществления выплаты 7 -- неправильный hash

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published