GithubHelp home page GithubHelp logo

docs's Introduction

RBKmoney public docs

wercker status

После деплоя документация будет доступна по адресу https://developer.rbk.money/

Сборка

Для генерации статического сайта с документацией мы используем MkDocs. Убедитесь, что в используемой вами системе наличествует make, актуальная версия Python и его верный менеджер pip.

Для начала установите необходимый инструментарий:

pip install -r requirements.txt

После чего вы уже можете запускать локальный сервер для разработки с готовой документацией:

mkdocs serve --livereload

Диаграммы

Для генерации картинок из диаграмм используются следующие инструменты:

  • sequencediagram.org

    • допополнительная информация для поддержки svg здесь.
    • пример использования svg:
      • встроить отображение для html можно с помощью
        <object data="../../recurring/img/CustomerPayer.svg"> </object>
      • управлять размером можно с помощью внесения изменений в .svg (тег <svg>)
        preserveAspectRatio="xMinYMin meet"
        viewBox="0 0 1451 3265">
  • platinum-toolset (язык PlantUML).

    • для работы этому инструменту необходима Java Runtime;
    • Установить его можно при помощи:
      make install-toolset
    • Чтобы сгенерировать изображения png и svg из файлов с диаграммами wsd, достаточно:
      make

Локальное тестирование/ревью изменений

Этап подготовки

Выполняется разово.

  1. Устанавливаем Python c сайта https://www.python.org.


    ПРИМЕЧАНИЕ

    Необходимы права системного администратора.


  2. Устанавливаем MkDocs, следуя инструкциям с сайта https://www.mkdocs.org/#installation: раздел "Installation".


    ПРИМЕЧАНИЕ

    • Для того, чтобы проверить установлен ли pip по-умолчанию вместе с Python достаточно ввести в командной строке команду pip или pip3: pip3 не всегда маппится на pip, иногда приходится указывать это явно.
    • Во время установки MkDocs с помощью pip (pip install mkdocs или pip3 install mkdocs) может возникнуть сообщение о том, что каталог установлен не в PATH. Добавление в PATH является опциональным шагом: цель — при сборке сайта указывать алиас 'mkdocs' вместо полного пути расположения MkDocs.

Этап тестирования/ревью

Выполняется каждый раз при проверке изменений.

  1. Скачиваем содержимое ветки, в которой создан Pull Request (PR). Результат: на локальном диске должна оказаться папка docs со всеми внесенными в рамках PR’а изменениями.


    ПРИМЕЧАНИЕ

    Шаг 1 выполняется только для ревью изменений. Сотруднику, который внес изменения, следует начинать тестирование с шага 2.


  2. Переходим в docs (где лежит файл "mkdocs.yml"): команды ls (посмотреть список репозиториев) и cd repository_name (перейти в репозиторий).

  3. Собираем тестовый сайт.

    • если на этапе подготовки mkdocs был добавлен в PATH:
    mkdocs serve --livereload
    • если на этапе подготовки mkdocs не был добавлен в PATH:
    {mkdocs_path} serve --livereload

    Пример:

    /Users/{user_name}/Library/Python/3.9/bin/mkdocs serve --livereload 
    

    ПРИМЕЧАНИЕ

    • Сборка запускается из репозитория docs.

    • При самой первой сборке могут возникнуть ошибки. Как правило, они устраняются путем установки необходимого MkDocs:

      pip3 install -r requirements.txt 
      

      Требуемые файлы и плагины также можно устанавливать по отдельности. Команды запускаются из репозитория docs.

    • Если cборка сайта прошла успешно, в терминале появится строка с INFO - Documentation built.

    • Адрес сайта будет указан в строке INFO - Serving on {Site name}, где {Site name} - адрес сайта.


docs's People

Contributors

a-a-abramov avatar a77ay avatar amalgamm avatar antonlva avatar avcherkasov avatar igorkoganrbk avatar kasalinskiy-rbk avatar keinasylum avatar keynslug avatar kpy3 avatar kroleg avatar olgakartashevarbk avatar pospolitanv avatar roniakia avatar thedyudya avatar tolkonepiu avatar volkov-sergei avatar wwwcool avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

Рассмотрите возможность отправки сжатых ассетов

например,

 curl -I -H "Accept-Encoding: gzip" https://checkout.rbk.money/checkout.js
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Aug 2018 10:22:27 GMT
Content-Type: application/javascript
Content-Length: 52213
Connection: keep-alive
Keep-Alive: timeout=20
Last-Modified: Tue, 14 Aug 2018 16:27:48 GMT
ETag: "5b730304-cbf5"
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: public, must-revalidate, max-age=86400

Сервер игнорирует Accept-Encoding: gzip и отправляет 50кб минифицированного жс.
Минификация, конечно, хорошо, но после gzip-а с дефолтными настройками этот же бандл немногим больше 18кб.

Мобильные пользователи оценят! :)

P.S.: не уверен, что в нужный репозиторий отправил issue, но другого подходящего не нашел.

Частичная оплата

В CMS Битрикс есть возможность частичной оплаты заказа, где общую сумму можно разнести на несколько платежей с отдельными кнопками "оплатить" для каждого. Но при оплате любого из этих платежей, на сайт ставится отметка что заказ оплачен, не смотря на то, что в инвойсах dashboard rbk значится только оплата одного платежа
img-2019-09-23-10-51-24

  1. Номер заказа
  2. Общая сумма заказа
  3. Один из 2 платежей

img-2019-09-23-10-54-07

  1. Общая сумма по заказу
  2. Неверная сумма по оплате (должно быть 11р)
  3. Частичная оплата (верная)
  4. Частичная оплата (ошибочно автоматически проставлена, по факту не проводилась)

Версия модуля РБК актуальная (переустановлен сегодня перед тестовым заказом, который на скриншотах)

Какое текущее API RBKMoney?

Есть документация двух вариантов:

Мы настраиваем интеграцию нашего сервиса с вашей платежной системой, используя API v2.
Для отслеживания статуса платежа мы используем метод getInvoiceEvents на front-end через собственную платежную форму и Webhooks на нашем back-end.

В случае невалидной платежной карты, например "Expired Card | Visa | 4000000000000069 | 12/20 | 123", мы получаем следующие разные объекты ошибок:

  1. Webhooks (back-end):
    "error":{"code":"authorization_failed","message":"'Expired Card' - 'Expired Card'","subError":{"code":"payment_tool_rejected","subError":{"code":"bank_card_rejected","subError":{"code":"card_expired"}}}}
  2. getInvoiceEvents -> PaymentStatusChanged (front-end) v1:
    "error":{"code":"authorization_failed","message":"'Expired Card' - 'Expired Card'"},"paymentID":"1","status":"failed"}
  3. getInvoiceEvents -> PaymentStatusChanged (front-end) v2:
    "error":{"code":"InvalidPaymentTool"}

В документации по API v1 поля error и message помечены как Required, и описание кодов ошибок отсутствует.
В API v2 присутствует описание кодов ошибок из v1, тем не менее в Webhooks данные коды ошибок используются, но в методе getInvoiceEvents коды ошибок заменены на другие ("InvalidPaymentTool" в данном случае).

Конкретная ошибка по карте плательщика может быть распознана только по Webhooks, так как ни в одной версии API метод getInvoiceEvents не возвращает поле subError.

Какое API на данный момент у вас актуально и правильное ли оно в принципе, и будут ли еще в нем изменения о которых не предупреждают разработчиков?

400 Request Header Or Cookie Too Large

When I send request with my shopid and apikey it responses with "400 Request Header Or Cookie Too Large".
When I shorten apikey it response Unauthorized.
apikey is rather big 2100 bytes.
What to do?

Как получить список всех Customers?

Добрый день!

На сайте используем автоплатежи. Для одного пользователя потеряли его customerID, из-за этого не можем отключить ему автоплатеж.

Подскажите как получить список customerID наших клиентов?

Unauthorized 401

Здравствуйте. Делаю реквест через АПИ на создание одноразового токена платежного средства, подставляю ключ в заголовок Authorization: Bearer + ключ. Возвращается ошибка 401, хотя предыдущий запрос на создание инвойса такого же вида завершается со статусом 201.
Ниже лог запроса и ответа.
Запрос::::
ok:POST /v2/processing/payment-resources HTTP/1.1
Host: api.rbk.money
Accept: application/json
Authorization: Bearer **UIiwia2lkIiA6ICIzaG14MU9
Content-Type: application/json;charset=utf-8
X-Request-Id: c62ab29e-773a-4d09-bcd0-c168310

{"paymentTool":{"paymentToolType":"CardData","cardNumber":"5555555555554444","expDate":"12/20","cvv":"123","cardHolder":"qwe qwe"},"clientInfo":{"fingerprint":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36","ip":""}}

Ответ:::
INFO[1900] dumpResponse ok:HTTP/2.0 401 Unauthorized
Content-Length: 0
Content-Type: application/json; charset=utf-8
Date: Mon, 15 Apr 2019 13:39:23 GMT
Server: nginx
X-Content-Type-Options: nosniff
X-Xss-Protection: 1; mode=block

Templateaccesstoken

Здравствуйте уважаемые разработчики, вопрос такой, могу ли я через webhook получить уведомления о платежах если я использую template инвойс, и в каком виде данные из webhook будут переходить мне ?

Дробное количество товара

Если у товара дробное количество, то выдает ошибку 401, response по API выдает массив следующего содержания, указывая на неверный формат quantity. В значении менял тип переменной, менял точки на запятые в кол-ве и пр., все безрезультатно
[response] => Array ( [http_code] => 400 [body] => {"code":"invalidRequest","message":"Request parameter: InvoiceParams, error type: schema_violated, description: Wrong format. Path to item: cart[0].quantity"} [error] => 0 )

Возврат платежей

Здравствуйте уважаемые разработчики, вопрос такой, при отменен платежа выдает сообщения
{"code":"invalidPaymentStatus","message":"Invalid payment status"}

Примеры работы для Маркетплейса

Очень хочится простой и понятный пример для интеграции в Маркетплейс. Веб по аналогии с checkout.

Например:
Что хочеться видеть: форма которая гарантирует 1% с покупки маркетплейсу, остальное вендору.
Что например может предоставить маркетплейс: Какой-то публичный ключ вендора зарегистрирован в маркетплейсе, как и выбор цены физического товара.
Факт доставки товара до пользователя контролирует маркетплейс по колбеку с прохода оплаты.

Не получается сделать описание заказа построчно

Делаю через JS API. Пробовал передавать так:

description: 'Первый продукт <br/> Второй продукт',

и так:

description: 'Первый продукт \n Второй продукт',

Не помогает. Есть вариант задать список продуктов, каждый из которых будет показан в новой строке?

Как организовать автоплатеж?

Добрый день!

Ознакомился с API, не ясно как после первой оплаты запустить автоплатежи. Понимаю, что запустить автоплатеж нужно на своей стороне, но какая последовательность шагов не понятна.

Подскажите, последовательность, спасибо!

Оплата в режиме холда

Коллеги, мне кажется, было бы удобно иметь ещё один статус инвойса - средства захолдированы на карте.

И, похоже, нет никакого варианта, чтобы через API понять, было ли вообще успешное холдирование средств - ни getInvoiceByID ни getInvoiceEvents не возвращают эту информацию.

Как выкручиваться? Мне нужно знать, был ли успешным холд.

Ссылки на документацию не работают

Добрый день,
https://rbkmoney.github.io/docs/ - тут ссылки на документацию с готовыми решениями или кастомными не работают.
Пожалуйста помогите найти описание как сделать собственную форму оплаты (в нашем случае это "анонимное пожертвование" - т.е. нам не нужны ни проверки, ни уведомления).

Спасибо!

Использование сервера прослойки

Здравствуйте, меня интересует возможна ли следующий алгоритм сотрудничества с Вами:
есть несколько интернет магазинов с разными доменами и ссылками оплаты и все они принадлежат одному ООО, мы хотим реализовать прослойку которая бы могла администрировать подключения этих магазинов и их товаров/услуг, а так же формировала ссылку оплаты для пользователя на основе выбранных им товаров/услуг. Алгоритм следующий, пользователь заходит в магазин, выбирает что купить, покупает, запрос поступает в прослойку, она формирует ссылку на покупку в ваш сервис, пользователь ее получает и перенаправляется в ваш сервис для осуществления покупки.
Возможно ли такое?
Спасибо

Упрощение написания инструкции

Прочитал вашу инструкцию по подключению, по сравнению с другими платежными системами, совершенно непонятно что нужно делать.

Такое ощущение, что программисты писали инструкцию не для понимания клиентом, а для того, чтобы показать какие мы крутые, и вот как сложно можем писать инструкции.

У других написано, мол сделайте это и отошлите вот это. Вот вам пример. Нормальное описание параметров запроса в табличном виде или списком. У вас же какой то непонятный бред, в котором пойди и разберись.

Я вот понял, что начать нужно с вызова метода createInvoice() (https://developer.rbk.money/docs/payments/overview/).
Смотрю метод: https://developer.rbk.money/api/#operation/createInvoice
И что?? Ничего ничерта не понятно.
Какие то непонятные красивости, какая-то странная стуктура описания. Какие данные обязательные, какие нет.

https://developer.rbk.money/docs/payments/overview/
Какая-то совершенно непонятная схема.

У других:

  1. Сформировал ссылку отправил пользователю.
  2. Он по ней перешел и оплатил.
  3. Эквайринг передал данные на сервер магазина.

Что здесь нужно сделать, совершенно не ясно.
Понятно, что я должен создать инвойс. Исходя из этого я должен потом как-то сформировать ссылку. Откуда я должен это взять?? Где пример ссылки с описание того, как всё это сформировать.
Непонятно каков параметр ответа.

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

Cкидки на товары

Как указать скидку на товары, если скидка применяется на всю корзину в заказе?

Ошибка при отправке webhook`а

Ошибка при отправке webhook`а, передается заголовок CONTENT_TYPE: application/json; charset=utf-8 вместо content-type в результате все содержимое тела запроса отображается как данные из формы, хотя у вас в документации написано что приходит json

Вопрос по iOS SDK

Мы готовим интеграцию в готовое мобильное приложение.
Но наше приложение не подходит под Минимальные требования вашего SDK, а именно: у нас Objective-C и iOS 10.0.
В связи с этим вопросы:

  1. Поддерживаете ли вы интеграцию с Objective-C ?
  2. Если воспользоваться вашей веб-формой платежей (Checkout), можно ли получиться готовую ссылку, которую мы откроем на веб-форме? Чтобы открывалась сразу платежная форма, а не кнопка "Оплатить", как сейчас в примерах. Кроме того в мобильном браузере после нажатия "Оплатить" платежная форма открывается в новом окне, что не очень хорошо для веб форма в приложении.

Вопрос по отмене инвойса

Добрый день.

Отрабатываю отмену заказа. Если я просто отменяю платёж, то сам инвойс остаётся в статусе "Оплачен", мне это не нравится. Хочу после отмены заказа перевести инвойс в режим "Отменён", но получаю при этом ошибку. Вот логи:

Отмена платежа:

2019-09-15 21:44:03.0618||DEBUG|RbkMoneyLogger|RbkMoney request: 637041806421328345 : https://api.rbk.money/v2/processing/invoices/1DLnjihZSqW/payments/1/refunds : {"reason":"Платеж отменен","invoiceID":30000} |url: |action:

2019-09-15 21:44:03.4793||DEBUG|RbkMoneyLogger|RbkMoney response: 637041806421328345 : OK : {"amount":30000,"createdAt":"2019-09-15T18:44:03.371165Z","currency":"RUB","id":"100","reason":"Платеж отменен","status":"pending"} |url: |action:
Аннулирование инвойса:

2019-09-15 21:44:18.9598||DEBUG|RbkMoneyLogger|RbkMoney request: 637041806499861299 : https://api.rbk.money/v2/processing/invoices/1DLnjihZSqW/rescind : {"reason":"Платеж отменен"} |url: |action:

2019-09-15 21:44:19.2845||ERROR|RbkMoneyLogger|System.Exception: RbkMoney response: 637041806499861299 : BadRequest : {"code":"invalidInvoiceStatus","message":"Invalid invoice status"} System.Exception: RbkMoney response: 637041806499861299 : BadRequest : {"code":"invalidInvoiceStatus","message":"Invalid invoice status"}|url: |action:

Собственно, вопрос - что не так со статусом инвойса и как правильно его отменить?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.