Перейти к содержанию

M-Pesa — приём платежей Safaricom и оплата на кассе (Кения)

Что это

M-Pesa — мобильные платежи Safaricom. Покупатель платит на номер магазина, Safaricom сообщает ERPJS о платеже, и платёж появляется в регистре Платежи M-Pesa сам. На кассе кассир выбирает этот платёж, а не вводит сумму: чек, в котором сумма M-Pesa не совпадает с выбранными платежами, не проводится. Всё это есть только в версии ERPJS для Кении.

Обзор модуля — на странице M-Pesa (Safaricom, Кения).

Предусловия: что получить у Safaricom

  1. Рабочий номер Till («Buy Goods») или Paybill.
  2. Аккаунт разработчика Daraja и приложение в нём: consumer key и consumer secret — сначала для тестовой среды (Sandbox).
  3. Для боевой среды — одобрение Safaricom: письмо на бланке компании, обычно 1–3 рабочих дня.
  4. Адрес ERPJS, открытый из интернета по https://: Safaricom сообщает о платежах только туда.

Шаг 1. Способ оплаты кассы

  1. В настройке Способ оплаты заведите код для M-Pesa, если его ещё нет.
  2. В способах оплаты кассы поставьте этот код третьим способом оплаты. У кассы с M-Pesa третий способ — только M-Pesa; другие безналичные способы ставьте вторым (терминал) или четвёртым.

Шаг 2. Учетная запись M-Pesa

Откройте Модули → M-Pesa → Регистры → Учетные записи M-Pesa и создайте запись.

  • «Номер M-Pesa (Till / Paybill)» — 5–7 цифр; «Тип номера» — Till (Buy Goods) или Paybill.
  • «Способ оплаты» — код из шага 1: по нему касса узнаёт, что её третий способ — M-Pesa.
  • «Среда Daraja», «Ключ Daraja (consumer key)» и «Секрет Daraja (consumer secret)». Ключи хранятся зашифрованными: после сохранения поле показывает маску. Не трогайте его — ключ останется; наберите новый — он заменит старый; очистите поле — ключ сотрётся при сохранении. Сменили среду — введите ключи ещё раз. Ключи нужны только для кнопки «Зарегистрировать адрес в Safaricom»: принимать уведомления запись может и без них.

Открытая учётная запись — одна на номер и одна на способ оплаты. Поля и проверки — на странице Учетные записи M-Pesa.

Шаг 3. Адрес уведомлений — в Safaricom

Сохраните запись. В меню окна:

  • «Адрес уведомлений» показывает адреса, на которые Safaricom будет сообщать о платежах. В них — секрет записи: не пересылайте их никому, кроме Safaricom.
  • «Зарегистрировать адрес в Safaricom» передаёт эти адреса в Safaricom ключами записи. Открывайте ERPJS по тому адресу, который видят из интернета: его и получит Safaricom. Регистрируется сохранённая запись: изменили номер или среду — сначала сохраните. В боевой среде Safaricom обычно позволяет зарегистрировать адрес один раз — дальше изменения идут через Safaricom.

Оба действия доступны тому, у кого есть право изменять учётные записи M-Pesa.

Проверка: заплатите на номер небольшую сумму (в тестовой среде — через симулятор Daraja). Платёж должен появиться в Платежах M-Pesa через несколько секунд.

Шаг 4. На кассе

  1. Пробейте товар.
  2. Нажмите кнопку третьего способа оплаты — откроется окно «Платеж M-Pesa».
  3. Наберите код транзакции из SMS покупателя, сумму, имя плательщика или (для Paybill) номер счёта, который он ввёл, — от двух знаков. В таблице появятся свободные платежи на номер этой кассы, поступившие за последние сутки; платёж на сумму, которая осталась к оплате, — первым.
  4. Выберите платёж и подтвердите. Код из SMS, набранный целиком, берётся сразу.

На чеке под итогами печатается блок «Оплачено M-Pesa» — код транзакции и сумма каждого взятого платежа.

  • Убрать платёж из чека — в том же окне выберите строку «Убрать из чека: …».
  • Удалить чек — его платежи снова свободны.
  • Платёж больше остатка к оплате касса не возьмёт: платёж берётся целиком, сдачи с M-Pesa нет.
  • Платёж, взятый другим чеком или другой кассой, взять нельзя — касса назовёт номер того чека.
  • Платёж на номер другой кассы взять нельзя.

Предоплата клиента по M-Pesa

Клиент перевёл деньги заранее, а счёта ещё нет (депозит):

  1. Откройте платёж в Платежи M-Pesa и выберите в меню окна «Создать платеж клиента (предоплата)».
  2. Откроется новый документ Платежи: способ оплаты — тот, что у учётной записи M-Pesa, одна строка предоплаты на всю сумму, отмечено «Сгенерировать № предоп.», в колонке «Код транзакции M-Pesa» — код платежа.
  3. Выберите клиента и сохраните документ.

После сохранения у платежа в «Платежах M-Pesa» заполнена колонка Документ «Платежи» — номер этого документа. Касса и другой документ такой платёж уже не возьмут. Дальше предоплату привязывают к счетам как обычно; одна предоплата может закрыть несколько счетов или остаться частично на клиенте.

Код можно ввести и вручную в строке документа «Платежи», если способ оплаты документа — способ открытой учётной записи M-Pesa. Один платёж можно разложить на несколько строк одного документа (часть — оплата счёта, остаток — предоплата): код — в каждой строке, а сумма строк с этим кодом должна быть равна платежу. Делить платёж между разными документами нельзя.

  • Убрали код из строки или удалили непроведённый документ — платёж снова свободен.
  • Проведённый документ со способом оплаты M-Pesa — в каждой строке код, валюта строки — базовая, а сумма строк по каждому коду равна сумме платежа. Иначе документ не проведётся.

Если уведомление не пришло

У покупателя есть SMS, а в регистре платежа нет: значит, Safaricom не смог достучаться до ERPJS. Менеджер вносит платёж вручную в Платежи M-Pesa — код транзакции, сумма, номер. После этого кассир берёт его как обычно. Если уведомление потом всё-таки придёт, второго платежа не будет: ключ платежа — код транзакции.

Номер и сумму вносите точно по выписке Safaricom: касса видит только платежи на номера своих учётных записей, а более позднее уведомление с тем же кодом не исправит платёж, внесённый вручную.

Проверки, которые ERPJS делает сам

  • Повтор уведомления Safaricom — тот же платёж, а не второй.
  • Счёт с суммой M-Pesa не проводится, пока сумма каждого способа оплаты M-Pesa в нём не равна сумме взятых им платежей на номера этого способа, — с кассы, из окна счёта или через API.
  • Платежи M-Pesa — в базовой валюте (KES): счёт в другой валюте M-Pesa не оплатить, такой счёт не проводится. Пересчёта по курсу нет.
  • Платёж от Safaricom нельзя удалить и нельзя изменить — кроме комментария.

Выключить M-Pesa

Закройте учётную запись (флажок «Закрыто»). Уведомления на её адрес больше не принимаются, а касса снова принимает сумму третьего способа с клавиатуры, без сверки.

Чего пока нет

  • Возврат по M-Pesa. Чек-возврат принимает сумму третьего способа с клавиатуры, как раньше.
  • Подбор клиента по номеру счёта Paybill. Клиента в документе «Платежи» выбирает бухгалтер.