Разбиение сумм платежей

Общие сведения

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

Формула для вычисления сумм и количества всех операций в платеже следующая:
  1. сумма платежа делится на сумму лимита, целое число из получившегося результата — это количество операций с суммой, максимально допустимой по лимиту,
  2. из суммы платежа вычитается произведение установленного лимита и получившегося целого числа, чтобы узнать остаток суммы.

Например, если лимит суммы, установленный провайдером, составляет 10 000,00 EUR, а сумма платежа от пользователя — 15 000,00 EUR, то платеж разбивается на две операции с суммами: 10 000,00 EUR (максимально допустимая сумма) и 5 000,00 EUR (остаток суммы) по формуле 15000:10000=1.5, 15000-(10000*1)=5000. Или если лимит суммы — 1 800,00 EUR, а сумма платежа — 5 000,00 EUR, то платеж разбивается на три операции с суммами: 1 800,00 EUR, 1 800,00 EUR (максимально допустимые суммы) и 1 400,00 EUR (остаток суммы) по формуле: 5000:1800=2.8, 5000-(1800*2)=1400.

Функциональность поддерживается для проведения разовой оплаты с использованием карт в одну или в две стадии. При проведении платежа пользователю на Payment Page отображается предупреждение о том, что сумма может быть разбита, и возникнет необходимость пройти аутентификацию 3‑D Secure более одного раза.

Совет: Для подключения и настройки функциональности обратитесь в службу технической поддержки по адресу support@ecommpay.com.
На финальной странице оплаты на Payment Page пользователю отображаются обе суммы — исходная и фактически списанная.


Формат оповещения о результате оплаты

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

Возможные итоговые статусы платежа:
  • success — оплачена вся сумма платежа,
  • decline — не оплачена вся сумма платежа и нет или закончены все попытки каскадного проведения,
  • partially paid — сумма платежа оплачена частично и нет или закончены все попытки каскадного проведения.

Полная сумма и валюта платежа передаются в объекте payment.sum:

  • amount — общая сумма платежа, всегда передается;
  • currency — валюта платежа, всегда передается;
В зависимости от типа операции и статуса платежа в объекте payment могут передаваться следующие параметры, содержащие информацию о суммах:
  • actual_amount — фактическая сумма, которая была оплачена по проведенной операции sale или capture, всегда передается;
  • amount_authorized — фактическая сумма, которая ранее была заблокирована операцией auth, и ее можно либо подтвердить операцией capture, либо отменить операцией cancel, передается, если оплата в две стадии;
  • amount_remaining_refund — сумма, на которую возможно сделать возврат средств пользователю, передается только для платежей со статусом partially paid или success.

Далее приведены примеры оповещений, отправляемые при разных возможных вариантах проведения оплат в одну и две стадии с разбиением суммы платежа.

  • Пример оплаты в одну стадию общей суммой 10,01 EUR и с лимитом провайдера в 10,00 EUR:

    В следующем примере оповещение свидетельствует о том, что инициирована оплата в одну стадию от пользователя. Cумма первой операции, на которую отправлено оповещение и которая фактически была оплачена пользователем, равна 10,00 EUR.

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

    {
        "project_id": 968,
        "payment": {
          "id": "ORDER_ID_762",
          "type": "purchase",
          "status": "processing",
          "date": "2019-11-14T05:36:19+0000",
          "method": "card",
          "sum": {
            "amount": 1001,
            "currency": "EUR"        
          },
          "actual_amount": 1000,
          "description": "2 operations"
        },
        "account": {
          "number": "541333******0019",
          "type": "mastercard",
          "card_holder": "PAUL LEE",
          "expiry_month": "01",
          "expiry_year": "2025"
        },
        "customer": {
          "id": "D_K"
        },
        "operation": {
          "id": 302103697,
          "type": "sale",
          "status": "success",
          "date": "2019-11-14T05:36:20+0000",
          "created_date": "2019-11-14T05:36:13+0000",
          "request_id": "00000001",
          "sum_initial": {
            "amount": 1000,
            "currency": "EUR"
          },
          "code": "0",
          "message": "Success",
          "provider": {
            "id": 3,
            "payment_id": "81206",
            "auth_code": "",
            "endpoint_id": "3",
            "date": "2019-11-14T05:36:18+0000"
          }
        },
        "signature": "h8WLEFVwUVnuL5X0szc0sVqDexKoe3UwumxXxLdn0...=="
      }

    В следующем примере оповещение свидетельствует о том, что проведены обе операции оплаты в одну стадию от пользователя общей суммой 10,01 EUR, а сумма операции, на которую отправлено оповещение — 0,01 EUR. Сумма, доступная к возврату — 10,01 EUR.

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

    {
        "project_id": 968,
        "payment": {
          "id": "ORDER_ID_762",
          "type": "purchase",
          "status": "success",
          "date": "2019-11-14T05:36:19+0000",
          "method": "card",
          "sum": {
            "amount": 1001,
            "currency": "EUR"        
          },
          "actual_amount": 1001,
          "amount_remaining_refund": 1001,
          "description": "2 operations"
        },
        "account": {
          "number": "541333******0019",
          "type": "mastercard",
          "card_holder": "PAUL LEE",
          "expiry_month": "01",
          "expiry_year": "2025"
        },
        "customer": {
          "id": "D_K"
        },
        "operation": {
          "id": 302103697,
          "type": "sale",
          "status": "success",
          "date": "2019-11-14T05:36:20+0000",
          "created_date": "2019-11-14T05:36:13+0000",
          "request_id": "00000001",
          "sum_initial": {
            "amount": 1,
            "currency": "EUR"
          },
          "code": "0",
          "message": "Success",
          "provider": {
            "id": 3,
            "payment_id": "81206",
            "auth_code": "",
            "endpoint_id": "3",
            "date": "2019-11-14T05:36:18+0000"
          }
        },
        "signature": "h8WLEFVwUVnuL5X0szc0sVqDexKoe3UwumxXxLdn0...=="
      }
  • Пример оплаты в две стадии общей суммой 45,27 EUR и с лимитом провайдера в 25,00 EUR:

    В следующем примере оповещение свидетельствует о том, что проведена часть оплаты в две стадии от пользователя общей суммой 45,27 EUR, а сумма операции, на которую отправлено оповещение, составляет 25,00 EUR. Статус платежа processing означает, что по платежу остается сумма на подтверждение — 20,27 EUR.

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

    {
        "project_id": 968,
        "payment": {
          "id": "ORDER_09519",
          "type": "purchase",
          "status": "processing",
          "date": "2019-11-14T05:32:27+0000",
          "method": "card",
          "sum": {
            "amount": 4527,
            "currency": "EUR"
            },   
          "actual_amount": 2500,
          "amount_authorized": 2027,
          "description": "2 operations"
        },
        "account": {
          "number": "541333******0019",
          "type": "mastercard",
          "card_holder": "PAUL LEE",
          "expiry_month": "01",
          "expiry_year": "2025"
        },
        "customer": {
          "id": "D_K"
        },
        "operation": {
          "id": 302103695,
          "type": "capture",
          "status": "success",
          "date": "2019-11-14T05:32:28+0000",
          "created_date": "2019-11-14T05:32:26+0000",
          "request_id": "00000001",
          "sum_initial": {
            "amount": 2500,
            "currency": "EUR"
          },
         "code": "0",
          "message": "success",
          "provider": {
            "id": 3,
            "payment_id": "",
            "auth_code": "",
            "endpoint_id": "3",
            "date": "2019-11-14T05:32:27+0000"
          }
        },
        "signature": "GvDHyki3OPkwbWzumbTYRBxNSgDFLF8Yg220hAud3r...=="
      }

    В следующем примере оповещение свидетельствует о том, что провайдером отклонена часть оплаты в две стадии общей суммой 45,27 EUR, сумма операции, на которую отправлено оповещение, составляет 20,27 EUR. Статус платежа awaiting capture означает, что по платежу есть сумма, уже подтвержденная и проведенная ранее — 25,00 EUR, и остается сумма на подтверждение или отмену — 20,27 EUR.

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

    {
        "project_id": 968,
        "payment": {
          "id": "ORDER_ID_C00024_0.63157000_1573709519",
          "type": "purchase",
          "status": "awaiting capture",
          "date": "2019-11-14T05:32:27+0000",
          "method": "card",
          "sum": {
            "amount": 4527,
            "currency": "EUR"
            }, 
          "actual_amount": 2500,
          "amount_authorized": 2027,     
          "description": "2 operations"
        },
        "account": {
          "number": "541333******0019",
          "type": "mastercard",
          "card_holder": "PAUL LEE",
          "expiry_month": "01",
          "expiry_year": "2025"
        },
        "customer": {
          "id": "D_K"
        },
        "operation": {
          "id": 302103695,
          "type": "capture",
          "status": "decline",
          "date": "2019-11-14T05:32:28+0000",
          "created_date": "2019-11-14T05:32:26+0000",
          "request_id": "00000001",
          "sum_initial": {
            "amount": 2027,
            "currency": "EUR"
          },
          "code": "10000",
          "message": "General decline",
          "provider": {
            "id": 3,
            "payment_id": "",
            "auth_code": "",
            "endpoint_id": "3",
            "date": "2019-11-14T05:32:27+0000"
          }
        },
        "signature": "GvDHyki3OPkwbWzumbTYRBxNSgDFLF8Yg220hAud3r...=="
      }

    В следующем примере оповещение свидетельствует о том, что мерчантом произведена отмена части оплаты в две стадии от пользователя общей суммой 45,27 EUR, сумма операции, на которую отправлено оповещение, составляет 20,27 EUR. Статус платежа partially paid означает, что по платежу есть сумма, уже подтвержденная и проведенная ранее — 25,00 EUR и ее можно вернуть пользователю.

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

    {
        "project_id": 968,
        "payment": {
          "id": "ORDER_ID_C00024_0.63157000_1573709519",
          "type": "purchase",
          "status": "partially paid",
          "date": "2019-11-14T05:32:27+0000",
          "method": "card",
          "sum": {
            "amount": 4527,
            "currency": "EUR"
            }, 
          "actual_amount": 2500,
          "amount_authorized": 0, 
          "amount_remaining_refund": 2500,     
          "description": "2 operations"
        },
        "account": {
          "number": "541333******0019",
          "type": "mastercard",
          "card_holder": "PAUL LEE",
          "expiry_month": "01",
          "expiry_year": "2025"
        },
        "customer": {
          "id": "D_K"
        },
        "operation": {
          "id": 302103695,
          "type": "cancel",
          "status": "success",
          "date": "2019-11-14T05:32:28+0000",
          "created_date": "2019-11-14T05:32:26+0000",
          "request_id": "00000001",
          "sum_initial": {
            "amount": 2027,
            "currency": "EUR"
          },
          "code": "10000",
          "message": "General decline",
          "provider": {
            "id": 3,
            "payment_id": "",
            "auth_code": "",
            "endpoint_id": "3",
            "date": "2019-11-14T05:32:27+0000"
          }
        },
        "signature": "GvDHyki3OPkwbWzumbTYRBxNSgDFLF8Yg220hAud3r...=="
      }
  • Пример оплаты в две стадии общей суммой 45,00 EUR и с лимитом провайдера в 20,00 EUR и с установленным лимитом на количество создаваемых операций по одному платежу — 2.

    Оповещение свидетельствует о том, что сумма платежа превышает установленный лимит по количеству создаваемых операций с разбиением суммы.

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

    {
            "customer": {
                "id": "customer_123"
            },
            "account": {
                "number": "431422******0056",
                "type": "visa",
                "card_holder": "PAUL LEE",
                "expiry_month": "07",
                "expiry_year": "2021"
            },
            "project_id": 260,
            "payment": {
                "id": "TEST_14-04-2020_0001",
                "type": "purchase",
                "status": "decline",
                "date": "2020-04-14T11:19:42+0000",
                "method": "card",
                "sum": {
                    "amount": 4500,
                    "currency": "EUR"
                },
                "description": "TEST_1586862995539"
            },
            "operation": {
                "id": 46523000020281,
                "type": "auth",
                "status": "decline",
                "date": "2020-04-14T11:19:42+0000",
                "created_date": "2020-04-14T11:19:42+0000",
                "request_id": "046524",
                "sum_initial": {
                    "amount": 4500,
                    "currency": "EUR"
                },
                "code": "3019",
                "message": "Exceeded count split operation",
                "provider": {
                    "id": 414,
                    "payment_id": "",
                    "endpoint_id": 414
                }
            },
            "signature": "/dnQUd/uLStqBI4DU1j2+/X2Cua6cvH00...=="
        }