Подключение Намба кошелька

Платёжная система Намбы построена на принципах OAuth 1.0a .

Для пользователя процесс оплаты состоит из шагов:

  1. Нажатие кнопки "Оплатить Намба-деньгами" на сайте Продавца.
  2. Авторизация на сайте Намбы (необязательный шаг, если пользователь на момент оплаты залогинен на Намбу).
  3. Подтверждение платежа на сайте Намбы.
  4. Информирование об успешной оплате на сайте Продавца.

На сайте Продавца должен находиться программный код, который реализует функционал клиента платежной системы Намбы. Этот клиент должен поддерживать взаимодействие с платёжной системой Намбы с использованием протокола OAuth1.0a . В клиенте должен быть реализован функционал защиты от CSRF и защита от многократных оказаний услуги по одному и тому же transaction id.

Информационный обмен между серверами Продавца и платёжной системой Намбы подписывается электронной подписью на основе распространённого алгоритма, применяемого в Facebook, Twitter, Mail.ru, Vkontakte и др. С описанием алгоритма подписи по принциту "сервер-сервер" можно ознакомиться в адресу http://api.mail.ru/docs/guides/restapi/#server.

Тестового режима не предусмотрено, поэтому разработку-тестирование придётся вести на рабочей системе, оперируя минимальными суммами 1.00 или 0.01 .

Процесс оплаты с функциональной точки зрения состоит из следующих стадий:

  1. Формирование заказа на сайте Продавца и сохранение аттрибутов заказа в БД Продавца со статусом "Неоплачен" с получением уникального order_id.
  2. Получение request token у сервера Намбы для протокола OAuth 1.0a .
  3. Перенаправление браузера пользователя на сайт Намбы для получения авторизации.
  4. После успешной авторизации и подтверждения платежа пользователем средства на счёте пользователя замораживаются в рамках платёжной транзакции с выдачей пользователю уникального txn_id.
  5. Пользователь перенаправляется Намбой обратно на сайт Продавца с передачей в том числе order_id и txn_id.
  6. Код на сайте Продавца в соответствии с протоколом OAuth меняет request token на access token.
  7. Код на сайте Продавца ассоциирует order_id с полученным txn_id, оказывает пользователю услугу, меняет статус заказа на "Оплачен". Тут необходимо предусмотреть защиту от многократного оказания услуги пользователю по одному и тому же txn_id. Такое может случиться в случае, например, если пользователь обновит страницу.
  8. Код на сайте Продавца вызывает посредством OAuth метод НамбаAPI performPayment, в котором замороженные на счёте пользователя средства перечисляются на счёт Намба-аккаунта, которому принадлежит приложение.

Для работы с платёжной системой Намбы необходимо:

  1. Зарегистрировать приложение.
    1. Авторизоваться на Намбе.
      Следует учитывать, что средства будут перечисляться на расчётный счёт того Намба-аккаунта, которому принадлежит приложение, поэтому, возможно, имеет смысл зарегистрировать отдельный Намба-аккаунт для Вашей компании.
    2. Перейти по адресу http://dev.namba.kg/applications/new.php и ввести название приложение. Это название будет отображаться пользователям при подтверждении платежа.
    3. Внести соответствующие Вашему приложению CONSUMER_KEY и CONSUMER_SECRET в конфигурацию программного кода клиента на Вашем сайте. Значение CONSUMER_SECRET следует хранить в строгой тайне и использовать только для обеспечения сервер-серверного взаиможействия. При необходимости ключи CONSUMER_KEY и CONSUMER_SECRET можно перегенерировать. Список Ваших приложений будет доступен по адресу http://dev.namba.kg/applications/list.php .
    4. Внести в конфигурацию Вашего клиента
      Request token URL = http://api.namba.kg/oauth/request_token.php .
    5. Внести в конфигурацию Вашего клиента Access token URL http://api.namba.kg/oauth/access_token.php
    6. Внести в конфигурацию Вашего клиента Authorize URL = https://login.namba.kg/login3.php
      (Внимание! Платёжные приложения используют именно такую конфигурацию, это отличается от значения Authorize URL, отображённого Вам в списке Ваших приложений http://dev.namba.kg/applications/list.php).

  2. Получить в приложении OAuth request token с Намбы.
  3. При перенаправлении пользователя на авторизацию в запросе к Authorize URL дополнительно передать GET-параметры: 'oauth_token' - полученный request token
    'sum' - сумма к оплате.
    'item_id' - id товара. Необязательный параметр.
    'title' - краткое описание цели платежа, будет отображено пользователю с диалоге подтверждения оплаты. Из-за ограничений длины URL этот параметр не должен превышать 255 символов.
    'order_id' - уникальный номер заказа
    'order_ts' - timestamp создания заказа
    'sig' - подпись для всех предыдущих параметров по алгоритму "сервер-сервер".
  4. После авторизации пользователя в Намбе и возможного подтверждения платежа пользователь будет возвращён в Ваше приложение. Будут доступны GET - параметры: 'result' - или 'pay', если пользователь подтвердил платёж, или 'cancel' в случае, если пользователь отменил процесс оплаты
    'txn_id' - в случае 'pay' - уникальный номер транзакции по оплате в платёжной системе Намбы.
    'sig' - подпись для всех предыдущих параметров по алгоритму "сервер-сервер".
    Во избежание мошеннических действий обязательно проверяйте подпись параметров запроса.
  5. В случае 'pay' необходимо пометить заказ как оплаченный и затем оказать пользователю запрошенную им услугу.
  6. В случае успешного оказания услуги продолжить транзакцию с Намбой для подтверждения оказания услуги.
  7. Получить OAuth access token.
  8. Вызвать OAuth метод 'performPayment', передав ему параметры: 'action' - строку 'checkout'.
    'txn_id' - номер подтверждаемой транзакции.
    'payment_ts' - timestamp времени оказания услуги .
    Электронная подпись параметров этого метода реализуется внутренними средствами OAuth, поэтому параметр 'sig' добавлять не нужно.
  9. Результат вызова метода performPayment будет доступен в формате JSON. Если поле status будет равным 1, то перечисление средств на счёт Вашего приложения завершилось успешно. С случае ошибки будет status=0.
  10. Информировать пользователя о завершении процесса оплаты.

Для PHP используется дополнительно устанавливаемое расширение http://pecl.php.net/package/oauth .