M-Pesa — приём платежей Safaricom и оплата на кассе (Кения)
Что это
M-Pesa — мобильные платежи Safaricom. Покупатель платит на номер магазина, Safaricom сообщает ERPJS о платеже, и платёж появляется в регистре Платежи M-Pesa сам. На кассе кассир выбирает этот платёж, а не вводит сумму: чек, в котором сумма M-Pesa не совпадает с выбранными платежами, не проводится. Всё это есть только в версии ERPJS для Кении.
Обзор модуля — на странице M-Pesa (Safaricom, Кения).
Предусловия: что получить у Safaricom
- Рабочий номер Till («Buy Goods») или Paybill.
- Аккаунт разработчика Daraja и приложение в нём: consumer key и consumer secret — сначала для тестовой среды (Sandbox).
- Для боевой среды — одобрение Safaricom: письмо на бланке компании, обычно 1–3 рабочих дня.
- Адрес ERPJS, открытый из интернета по
https://: Safaricom сообщает о платежах только туда.
Шаг 1. Способ оплаты кассы
- В настройке Способ оплаты заведите код для M-Pesa, если его ещё нет.
- В способах оплаты кассы поставьте этот код третьим способом оплаты. У кассы с 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. На кассе
- Пробейте товар.
- Нажмите кнопку третьего способа оплаты — откроется окно «Платеж M-Pesa».
- Наберите код транзакции из SMS покупателя, сумму, имя плательщика или (для Paybill) номер счёта, который он ввёл, — от двух знаков. В таблице появятся свободные платежи на номер этой кассы, поступившие за последние сутки; платёж на сумму, которая осталась к оплате, — первым.
- Выберите платёж и подтвердите. Код из SMS, набранный целиком, берётся сразу.
На чеке под итогами печатается блок «Оплачено M-Pesa» — код транзакции и сумма каждого взятого платежа.
- Убрать платёж из чека — в том же окне выберите строку «Убрать из чека: …».
- Удалить чек — его платежи снова свободны.
- Платёж больше остатка к оплате касса не возьмёт: платёж берётся целиком, сдачи с M-Pesa нет.
- Платёж, взятый другим чеком или другой кассой, взять нельзя — касса назовёт номер того чека.
- Платёж на номер другой кассы взять нельзя.
Предоплата клиента по M-Pesa
Клиент перевёл деньги заранее, а счёта ещё нет (депозит):
- Откройте платёж в Платежи M-Pesa и выберите в меню окна «Создать платеж клиента (предоплата)».
- Откроется новый документ Платежи: способ оплаты — тот, что у учётной записи M-Pesa, одна строка предоплаты на всю сумму, отмечено «Сгенерировать № предоп.», в колонке «Код транзакции M-Pesa» — код платежа.
- Выберите клиента и сохраните документ.
После сохранения у платежа в «Платежах 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. Клиента в документе «Платежи» выбирает бухгалтер.