Введение

Компания IntellectMoney сотрудничает с сервисом OrangeData для проведения онлайн-чеков для интернет магазинов. Orange Data - сервис по аренде онлайн-касс для интернет магазина.

Если вы хотите использовать систему IntellectMoney для проведения онлайн платежей, но при этом у вас есть другой партнер, предоставляющий услуги онлайн-кассы, или собственная касса, то для этого необходимо немного доработать модуль оплаты, установленный на вашем сайте.

Конечно лучше всего воспользоватся услугами онлайн-кассы от партнера IntellectMoney, так как в данном случае Вам вообще ничего не нужно будет делать, потому что все взаимодействие с онлайн-кассой уже реализованы на стороне системы IntellectMoney и интегрированы в стандартные модули оплаты.

Бизнес схема

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

  1. Клиент формирует заказ на сайте интернет-магазина
  2. Клиента переходит на страницу оплаты системы IntellectMoney
  3. Клиент оплачивает заказа
  4. Система IntellectMoney отправляет запрос на сайт интернет-магазин об оплате
  5. На сайте интернет-магазина происходит обработка запроса от системы IntellectMoney об оплате
  6. На сайте интернет-магазина меняется статус заказа на “Оплачен“

После того как заказ оплачен необходимо провести соответствующий онлайн-чек через онлайн-кассу.

Таким образом, запрос о проведении онлайн-чека в стороннюю онлайн-кассу необходимо отправлять именно в тот момент, когда в стандартном модуле оплаты происходит обработка запроса от системы IntellectMoney об оплате.

Пример на php (на основе модуля оплаты для cms bitrix)

После успешной оплаты заказа система IntellectMoney отправляет запрос об успешной оплате на сайт интернет-магазина с параметром paymentStatus=5. Проще говоря, если передан статус 5, то заказ полностью оплачен.

Рассмотрим код в модуле оплаты для cms bitrix, который обрабатывает данный статус:

if ($this->payment_status == '5') {
	$arFieldsSuccess = array(
		"PAYED" => "Y",
		"PS_STATUS" => "Y",
		"STATUS_ID" => CSalePaySystemAction::GetParamValue("IM.PAYMENT_PAYEED_STATUS"),
		"PS_SUM" => $this->recipient_amount,
		"PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
		"USER_ID" => $this->order["USER_ID"],
		"PS_STATUS_DESCRIPTION" => GetMessage("IM.PAYMENT_PAYMENT_FOR_ORDER_SUCCESFUL", array("#ORDER_ID#" => $orderId)),
		"PS_STATUS_CODE" => $this->payment_status
	);
	CSaleOrder::PayOrder($this->order["ID"], "Y");
	CSaleOrder::Update($this->order["ID"], $arFieldsSuccess);
}

В строке 298 и 299 происходит изменение статуса заказа. Поэтому сразу после этого необходимо отправлять запрос в сервис онлайн-кассы с информацией по чеку. Информацию по чеку можно будет взять из заказа $this→order["ID"].

Как сформировать и отправить запрос на примере онлайн-кассы АТОЛ

Смотрите в данной статье

Заключение

Есть 2 основных типа чеков:

  1. Чек прихода (формируется после оплаты заказа клиентом)
  2. Чек расхода (формируется при возврате денег клиенту)

При полной оплате заказа система IntellectMoney отправляет запрос на сайт интернет-магазина с параметром paymentStatus=5. В этом случае нужно отправлять чек прихода. 

При возврате денег клиенту по заказу система IntellectMoney отправляет запрос на сайт интернет-магазина с параметром paymentStatus=8. В этом случае нужно отправлять чек расхода.

Оплата заказа может быть произведена только 1 раз, значит запрос со статусом 5 будет отправлен только один раз. Возврат по заказу можно делать сколько угодно (частичный возврат), значит запросов со статусом 8 может быть много, это необходимо учитывать для формирования корректного чека расхода.

ВАЖНО

Если в момент отправки запроса на сайт интернет-магазина, он был недоступен, тогда система IntellectMoney будет повторно отправлять запрос, пока не получит положительный ответ (либо закончится время отправки, а это примерно сутки).

Управлять уведомлениями можно в личном кабинете в настройках магазина. По-умолчанию отправка запроса о возврате по СКО отключена

Примечание

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

  • No labels