Обработка платежей с измененной пользователем суммой
В некоторых платежных методах пользователь может самостоятельно вводить или менять сумму платежа так, что она будет отличаться от суммы, которая была указана в запросе изначально. При определенных обстоятельствах провайдер может успешно провести подобный платеж, и тогда в итоговом оповещении будет указана именно та сумма, которую фактически оплатил пользователь. Чтобы избежать возможных финансовых потерь, необходимо уметь принимать и обрабатывать подобные оповещения.
Данная статья содержит информацию о возможных сценариях обработки таких платежей, примеры запроса и оповещения и рекомендации по дальнейшим действиям.
Информацию о том, могут ли пользователи изменять сумму платежа при использовании того ли иного платежного метода, смотрите на странице с описанием этого метода в разделе Платежные методы.
Варианты обработки платежа после того, как пользователь изменил сумму
Если пользователь при оплате преднамеренно или случайно указал сумму, отличную от исходной, возможны три сценария дальнейшего развития событий:
- провайдер отклоняет платеж;
- провайдер успешно проводит платеж, но платежная платформа при обработке оставляет платеж в промежуточном статусе, пока конфликт не будет разрешен вручную техническими специалистами Rocketpay;
- провайдер успешно проводит платеж, платежная платформа обрабатывает его и отправляет вам итоговое оповещение о проведении этого платежа, но уже с новой суммой.
В последнем сценарии важно понимать, что именно сумма указанная в итоговом оповещении и является фактической суммой, которую вы получите от пользователя. Дальнейшее разрешение ситуации осуществляется на вашей стороне.
Информацию о том, какой из этих сценариев актуален для вас, уточняйте у курирующего менеджера Rocketpay.
Запрос и оповещение об оплате с измененной суммой
Допустим, что вы инициировали платеж с суммой 100,00 USD таким запросом:
Рис.: Пример данных из запроса
{ "project_id": 200, "payment_id": "payment_456", "customer_id": "customer123", "customer_first_name": 'John', "customer_last_name": 'Doe', "customer_email": 'johndoe@example.com', "payment_currency": "USD", "payment_amount": 10000, // Исходная сумма платежа "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWo...==" }
Если пользователь укажет при оплате сумму 90,00 USD и платеж будет успешно обработан на стороне провайдера и платежной платформы, платформа отправит в веб-сервис оповещение, пример которого приведен ниже. В оповещении будет указана именно та сумма, которую оплатил пользователь (в примере она выделена полужирным начертанием), несмотря на то, что она отличается от суммы в запросе.
Рис.: Пример данных из оповещения
{ "project_id": 200, "payment": { "id": "payment_456", "type": "purchase", "status": "success", "date": "2020-09-18T10:45:07+0000", "method": "card", "sum": { "amount": 9000, // Новая сумма платежа "currency": "USD" }, "description": "" }, "customer": { "id": "customer123" }, "operation": { "id": 6176263066107, "type": "sale", "status": "success", "date": "2020-09-18T10:45:07+0000", "created_date": "2020-09-18T10:44:41+0000", "request_id": "10a618359f918192beb120d98...886c8fa6d397dd-00006177", "sum_initial": { "amount": 9000, // Новая сумма платежа "currency": "USD" }, "sum_converted": { "amount": 9000, // Новая сумма платежа "currency": "USD" }, "code": "0", "message": "Success", "provider": { "id": 2455, "payment_id": "JP3295254739", "auth_code": "" } }, "signature": "4q3yqcJ3HJ+AhC6KXIseF...tcjmCgJHmtyz510MsNgFVZTh11lCqg==" }
Что делать, если сумма платежа отличается от суммы в исходном запросе
Описанные сценарии влекут за собой риск финансовых потерь. Например, вы можете не заметить, что пользователь заплатил меньше, чем нужно, и предоставить ему услуги и товары или пополнить его счет на большую сумму.
Чтобы избежать возможных потерь:
- всегда проверяйте соответствие сумм в исходном запросе и в финальном оповещении, поступающем от платежной платформы;
- реализуйте в своей системе корректную обработку оповещений с измененной суммой;
- убедитесь, что ваша система верно интерпретирует данные. Например, что пользователю зачисляется именно та сумма, которую он фактически оплатил.
Дополнительные материалы
- Обработка платежей с измененной пользователем суммой — раздел с информацией об обработке платежей, выполненных через Gate.