Проведение оплаты с автоматическими списаниями

Общая информация

Повторяемая оплата с автоматическими списаниями — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется серия переводов денежных средств от пользователя к мерчанту с использованием сохранённых платёжных данных и без подтверждения подлинности платёжного инструмента пользователя (такого, как ввод кода проверки подлинности карты).

В рамках платёжной платформы оплаты со списаниями по запросу проводятся в соответствии с моделью проведения платежей (Повторяемая оплата с автоматическими списаниями).

Схема проведения

Для проведения повторяемой оплаты с автоматическими списаниями необходимо:

  1. Зарегистрировать повторяемую оплату.
  2. Передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний (или пропустить этот шаг, если при регистрации оплаты был передан параметр scheduled_payment_id).
  3. Принять от платёжной платформы оповещение о результате списания.
  4. Продолжать принимать оповещения о результате каждого списания в рамках платежа.

Для изменения условий повторяемой оплаты или её отмены, а также для возврата средств после одного или нескольких списаний необходимо передать соответствующие запросы в платёжную платформу (подробнее — в разделе Управление списаниями в рамках оплаты).

Рис.: Проведение регулярной оплаты с инициированием первого списания

  1. От веб-сервиса на заданный URL ecommpay передаётся запрос на инициирование списаний.
  2. Этот запрос поступает в платёжную платформу.
  3. В платёжной платформе выполняется обработка запроса.
  4. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
  5. От платёжной платформы к платёжной системе направляется запрос на оплату.
  6. В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
  7. На стороне эмитента выполняется обработка платежа и списание средств пользователя.
  8. От эмитента к платёжной системе направляется уведомление о результате оплаты.
  9. От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
  10. От платёжной платформы к веб-сервису направляется оповещение о результате списания.
  11. От веб-сервиса пользователю направляется результат списания.
  12. Далее со стороны платёжной платформы инициируются последующие списания и для каждого из них повторяются шаги 5—11.

Рис.: Проведение регулярной оплаты без инициирования первого списания

  1. В платёжной платформе выполняется обработка платежа.
  2. От платёжной платформы к платёжной системе направляется запрос на оплату.
  3. В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
  4. На стороне эмитента выполняется обработка платежа и списание средств пользователя.
  5. От эмитента к платёжной системе направляется уведомление о результате оплаты.
  6. От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
  7. От платёжной платформы к веб-сервису направляется оповещение о результате списания.
  8. От веб-сервиса пользователю направляется результат списания.
  9. Далее со стороны платёжной платформы инициируются последующие списания и для каждого из них повторяются шаги 1—8.

Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Организация взаимодействия.

Формат запроса

Формат запросов в этом разделе представлен для инициирования повторяемых оплат с автоматическими списаниями с использованием платёжных карт. При формировании запросов необходимо учитывать следующее:

  1. Должен использоваться POST-запрос к конечной точке /v2/payment/card/recurring.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес;
      • id — идентификатор пользователя в рамках проекта мерчанта;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в минорных единицах валюты;
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • recurring — объект, содержащий сведения повторяемой оплате:
      • id — идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации.
  3. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

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

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

Рис.: Пример набора данных в запросе на проведение повторяемой оплаты

{  
  "general":{  
    "project_id":42,
    "payment_id":"456789",
    "signature":"K5D/aZAMdeR+YyilUwS=="
  },
  "customer":{  
    "ip_address":"202.144.196.0",
    "id":"customer_12"
  },
  "payment":{
    "amount":400,
    "currency":"USD"
  },
  "recurring":{
    "id":1079
  }
}

Формат оповещений

От платёжной платформы к веб-сервису передаётся оповещение с данными о регистрации повторяемой оплаты. Для этого оповещения используется стандартный формат, описание которого представлено в разделе Оповещения.

В данном случае оповещение свидетельствует о том, что в рамках проекта 42 для пользователя customer_12 было выполнено списание в размере 4,00 USD с платёжной карты № 424242******4243 и ожидаются последующие списания.

Рис.: Пример данных из оповещения о результате списания

{  
  "customer":{  
    "id":"customer_12"
  },
  "account":{  
    "number":"424242******4243",
    "type":"visa",
    "card_holder":"JOHN SMITH",
    "id":45678,
    "expiry_month":"08",
    "expiry_year":"2025"
  },
  "payment":{  
    "sum":{  
      "amount":400,
      "currency":"USD"
    },
    "method":"card",
    "date":"2019-06-07T06:18:02+0000",
    "status":"scheduled recurring processing",    // Статус платежа
    "type":"recurring",    // Тип платежа
    "id":"456789",
    "description":""
  },
  "project_id":42,
  "recurring":{  
    "valid_thru":"2019-07-31T00:00:00+0000",
    "currency":"USD",
    "id":1079    // Идентификатор серии списаний
  },
  "operation":{  
    "id":39690002636,
    "type":"recurring",    // Тип операции
    "status":"success",    // Статус операции
    "date":"2019-06-07T06:18:02+0000",
    "created_date":"2019-06-07T06:18:02+0000",
    "request_id":"5cfa0199c33071",
    "sum_initial":{  
      "amount":400,
      "currency":"USD"
    },
    "sum_converted":{  
      "amount":400,
      "currency":"USD"
    },
    "provider":{  
      "id":6,
      "payment_id":"1192",
      "date":"2018-02-07T08:34:24+0000",
      "auth_code":"5253",
      "endpoint_id":6
    },
    "code":"0",
    "message":"Success"
  },
  "signature":"v7KNMpfZZ5D/aZMdeR+YyilUwSm...=="
}