Фон

M-Pesa - это услуга денежных переводов, финансирования и микрофинансирования с использованием мобильных телефонов, запущенная в 2007 году компанией Vodafone для Safaricom и Vodacom, крупнейших операторов мобильной связи в Кении и Танзании.

M-Pesa позволяет пользователям легко вносить, снимать, переводить деньги и оплачивать товары и услуги (Lipa na M-Pesa) с помощью мобильных устройств. M-Pesa быстро распространилась, как лесной пожар, и к 2010 году стала самой успешной в мире финансовой службой для мобильных телефонов.

Когда M-Pesa завоевал сердца и души масс, часть населения стремилась к большему. Это были разработчики программного обеспечения, им нужен был API для доступа к продуктам M-Pesa. Safaricom ответил им, предоставив им M-Pesa G2 API. Это приветствовалось, но лишь немногие разработчики смогли интегрировать с ним свои приложения. У некоторых не было инфраструктуры или технических ноу-хау для выполнения интеграции из-за требований, которые включали: VPN-соединение, мыльный протокол и т. Д.

Safaricom недавно представил новый API M-Pesa, получивший название API Дараджа (Дараджа на суахили означает мост), чтобы попытаться восполнить этот пробел для разработчиков. Вы можете получить доступ к этому API через общедоступный Интернет, на шаг впереди API G2, для которого требуется VPN-соединение. Другое изменение заключалось в том, что он обменивался данными по протоколу REST, чтобы попытаться облегчить боль разработчиков, чьи приложения используют протокол REST, но должны были найти способ приспособиться к протоколу SOAP M-Pesa. В Daraja API были не только старые сервисы G2 API (C2B, B2C и обратный ход), но и новые сервисы M-Pesa (B2B, статус транзакции, баланс счета и Lipa na M-Pesa онлайн)

В этой статье мы просто рассмотрим Lipa na M-Pesa в Интернете, так как это один из самых интересных API, который они предоставили до сих пор.

Предпосылки

  1. У вас должна быть учетная запись разработчика Safaricom. Если у вас его нет, зайдите на портал разработчиков и зарегистрируйтесь, чтобы получить аккаунт. Это бесплатно.
  2. Я буду демонстрировать использование API с помощью Javascript, поэтому вы должны, по крайней мере, иметь представление об основах javascript, хотя вы можете следовать и повторно реализовывать на любом языке по вашему выбору.
  3. У вас должен быть установлен Узел
  4. Мы будем использовать Ngrok, чтобы открыть доступ к нашему локальному серверу в Интернет, поэтому его загрузка сейчас приветствуется.
  5. Мы будем использовать Почтальон для отправки запросов, поэтому его скачивание приветствуется.

Lipa Na M-Pesa Интернет

Онлайн-сервис Lipa na M-Pesa, предоставляемый Daraja API, представляет собой очень эффективный способ реализации кассовых операций для продавцов на сайтах электронной коммерции, мобильных приложениях, системах управления парковками и т. Д.

Распространенная реализация: у вас есть кнопка оплаты в вашем мобильном приложении / на интернет-сайте, которую пользователь нажимает, чтобы заплатить за товары или услуги, которые вы предлагаете. При нажатии этой кнопки запускается почтовый запрос к Дарадже с соответствующей полезной нагрузкой. Когда Daraja получает запрос, он запускает STK push на телефон пользователя, предлагая пользователю ввести свой пароль M-Pesa для завершения транзакции. Когда пользователь вводит пароль для завершения транзакции, этот запрос отправляется в M-Pesa для обработки, счет пользователя M-Pesa списывается, а затем вы получаете веб-перехватчик (на URL-адрес веб-перехватчика ваших серверов, который вы указали) с деталями перевод.

Сервер Webhook

Теперь мы реализуем сервер, который будет получать эти веб-перехватчики от Safaricom. Наш сервер будет иметь минимальную функциональность и ничего особенного, поэтому вам не следует переходить с ним в производственную среду.

Мы будем использовать ExpressJS - библиотеку JS для реализации нашего простого сервера.

Хорошо, давайте перейдем к нашему терминалу, создадим новую папку и назовем ее webhook

$ mkdir webhook && cd webhook

Запустите наш package.json в нашем каталоге

$ npm init

Теперь установим наши зависимости с помощью npm.

npm i -s express body-parser prettyjson

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

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

Теперь давайте реализуем наш сервер, создадим файл с именем server.js.

Давайте запустим наш сервер и проверим его

$ node server.js

Теперь, когда наш сервер запущен, давайте представим его в Интернете с помощью ngrok. Перейдите в папку, в которую вы скачали и распаковали ngrok, и запустите

$ ./ngrok http 5000

Теперь, когда мы подключили наш сервер веб-перехватчиков к Интернету, давайте проверим, сможем ли мы получить к нему доступ по указанному URL. Запустите почтальона и отправьте сообщение JSON по ссылке, указанной на вашем ngrok, за которой следует конечная точка или веб-перехватчик. в моем случае это будет https://05135c4e.ngrok.io/hooks/mpesa, для вас 05135c4e.ngrok.io будет другим, потому что каждый раз, когда вы запускаете ngrok, он будет давать вам новый уникальный URL.

Затем наш запрос выгружается в терминал, как и ожидалось.

Теперь, когда мы разработали наш простой сервер и разместили его в Интернете, давайте теперь взаимодействуем с API M-Pesa.

Приложение M-Pesa

Перейдите на портал разработчиков, войдите со своими учетными данными, затем щелкните вкладку Мои приложения, чтобы получить доступ к своим приложениям. Создайте новое приложение, нажав кнопку Добавить новое приложение, которая перенесет вас на страницу, подобную приведенной ниже.

Введите имя своего приложения и установите флажок Lipa Na Mpesa Sandbox, затем нажмите кнопку создания приложения.

Нажмите на созданное вами приложение, чтобы просмотреть подробную информацию и учетные данные, которые вы будете использовать для доступа к M-Pesa API.

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

Теперь, когда у нас есть учетные данные, давайте аутентифицируемся и получим токен, который мы будем использовать для взаимодействия со службой Lipa na M-Pesa.

поскольку мы еще не начали работать с нашим приложением, мы будем использовать конечные точки песочницы для демонстрации (https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials). Он использует базовую аутентификацию для аутентификации и возвращает наш токен api, который мы будем использовать для доступа к службе Lipa na M-Pesa. Имя пользователя - это ваш ключ клиента, а пароль - секрет вашего клиента. Итак, откройте почтальон, щелкните вкладку авторизации и выберите тип как базовую аутентификацию. Введите имя пользователя и пароль, затем вставьте поле URL-адреса ссылки.

Затем отправьте запрос на получение токена, как показано ниже.

Теперь, когда у нас есть токен доступа, давайте отправим наш первый запрос в сервис Lipa na M-Pesa. Эта служба ожидает полезные данные запроса, содержащие JSON:

  1. BusinessShortCode: это сокращенный код организации (Paybill или Buygood), используемый для идентификации организации и получения транзакции.
  2. Пароль: это пароль, используемый для шифрования отправленного запроса: строка в кодировке base64. (Строка base64 представляет собой комбинацию короткого кода + ключа доступа + отметки времени)
  3. Метка времени: это метка времени транзакции, обычно в формате ГОД + МЕСЯЦ + ДАТА + ЧАС + МИНУТА + СЕКУНДА (ГГГГММДДЧЧММСС). Каждая часть должна состоять как минимум из двух цифр, кроме года, который состоит из четырех цифр.
  4. TransactionType: это тип транзакции, который используется для идентификации транзакции при отправке запроса в M-Pesa. Тип транзакции для M-Pesa Express - «CustomerPayBillOnline».
  5. Сумма: это сумма транзакции, обычно числовая. Деньги, которые клиент платит на шорт-код. Поддерживаются только целые числа.
  6. PartyA: номер телефона, по которому отправляются деньги. Ожидаемый параметр - действительный номер мобильного телефона Safaricom, зарегистрированный M-Pesa в формате 2547XXXXXXXX.
  7. PartyB: организация, получающая средства. Ожидаемый параметр - это от 5 до 6 цифр, как определено в описании короткого кода выше. Это может быть то же самое, что и значение BusinessShortCode выше.
  8. PhoneNumber: номер мобильного телефона для получения подсказки о вводе кода STK. Это число может совпадать со значением PartyA, указанным выше. Используйте только номера Safaricom.
  9. CallBackURL: URL-адрес обратного вызова - это действительный защищенный URL-адрес, который используется для получения уведомлений от M-Pesa API. Это конечная точка, на которую API M-Pesa отправляет результаты.
  10. AccountReference: это буквенно-цифровой параметр, который определяется вашей системой как идентификатор транзакции для типа транзакции CustomerPayBillOnline. Наряду с названием компании это значение также отображается для клиента в сообщении STK Pin Prompt. Максимум 12 символов.
  11. TransactionDesc: это любая дополнительная информация / комментарий, который может быть отправлен вместе с запросом из вашей системы. Максимум 13 символов

Для тестирования мы можем получить учетные данные для тестирования здесь после входа в систему.

На странице учетных данных мы будем использовать сокращенный код Lipa Na Mpesa Online в качестве нашего BusinessShortCode и PartyB. Мы также будем использовать ключ доступа Lipa Na Mpesa Online в качестве ключа доступа для генерации строкового пароля base64.

Чтобы сгенерировать свой строковый пароль base64, перейдите на этот сайт и закодируйте свой

Короткий код + ключ доступа + метка времени (например, 174379bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c91920181015123520), затем скопируйте строку в кодировке base64, чтобы использовать ее в качестве пароля.

Затем мы отправим почтовый запрос, содержащий полезную нагрузку, описанную выше, и заголовок авторизации, содержащий:

Предъявитель ‹Access-Token›. на этот URL https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest

Итак, откройте почтальон, щелкните вкладку авторизации и выберите тип токена на предъявителя. Заполните токен (токен API, который мы получили из нашего запроса авторизации), затем вставьте поле URL-адреса ссылки.

Выберите тип запроса, который будет post запросом, затем щелкните вкладку тела, щелкните необработанные полезные данные, выберите тип контента как application/json, введите полезные данные JSON и нажмите «Отправить».

После этого на предоставленный номер телефона будет отправлено нажатие STK для ввода пин-кода M-Pesa для завершения транзакции.

После ввода пин-кода клиент списывается, а затем M-Pesa отправляет полезные данные веб-перехватчика на указанный нами URL.

Все списанные во время тестирования средства автоматически возвращаются на ваш счет позже Safaricom.

Заключение

С этим введением вы можете продолжить экспериментировать в песочнице и изучить этот API. Надеюсь, статья была для вас информативной. Вы можете оставить комментарий о том, какой сервис API M-Pesa вы хотите, чтобы я написал в следующей статье. До следующего раза, пока.