Обработка платежей с измененной пользователем суммой
В некоторых платежных методах пользователь может самостоятельно вводить или менять сумму платежа так, что она будет отличаться от суммы, которая была указана в запросе изначально. При определенных обстоятельствах провайдер может успешно провести подобный платеж, и тогда в итоговом оповещении будет указана именно та сумма, которую фактически оплатил пользователь. Чтобы избежать возможных финансовых потерь, необходимо уметь принимать и обрабатывать подобные оповещения.
Данная статья содержит информацию о возможных сценариях обработки таких платежей, примеры запроса и оповещения и рекомендации по дальнейшим действиям.
Информацию о том, могут ли пользователи изменять сумму платежа при использовании того ли иного платежного метода, смотрите на странице с описанием этого метода в разделе Платежные методы.
Варианты обработки платежа после того, как пользователь изменил сумму
Если пользователь при оплате преднамеренно или случайно указал сумму, отличную от исходной, возможны три сценария дальнейшего развития событий:
- провайдер отклоняет платеж;
- провайдер успешно проводит платеж, но платежная платформа при обработке оставляет платеж в промежуточном статусе, пока конфликт не будет разрешен вручную техническими специалистами Rocketpay;
- провайдер успешно проводит платеж, платежная платформа обрабатывает его и отправляет вам итоговое оповещение о проведении этого платежа, но уже с новой суммой.
В последнем сценарии важно понимать, что именно сумма указанная в итоговом оповещении и является фактической суммой, которую вы получите от пользователя. Дальнейшее разрешение ситуации осуществляется на вашей стороне.
Информацию о том, какой из этих сценариев актуален для вас, уточняйте у курирующего менеджера Rocketpay.
Запрос и оповещение об оплате с измененной суммой
Допустим, что вы инициировали платеж с суммой 100,00 USD таким запросом:
Рис.: Пример данных из запроса
{
"general": {
"project_id": 200,
"payment_id": "payment_456",
"signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWo...=="
},
"payment": {
"amount": 10000, // Исходная сумма платежа
"currency": "USD"
},
"customer": {
"id": "customer123",
"ip_address": "248.14.67.234",
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@example.com"
}
}
Если пользователь укажет при оплате сумму 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=="
}
Что делать, если сумма платежа отличается от суммы в исходном запросе
Описанные сценарии влекут за собой риск финансовых потерь. Например, вы можете не заметить, что пользователь заплатил меньше, чем нужно, и предоставить ему услуги и товары или пополнить его счет на большую сумму.
Чтобы избежать возможных потерь:
- всегда проверяйте соответствие сумм в исходном запросе и в финальном оповещении, поступающем от платежной платформы;
- реализуйте в своей системе корректную обработку оповещений с измененной суммой;
- убедитесь, что ваша система верно интерпретирует данные. Например, что пользователю зачисляется именно та сумма, которую он фактически оплатил.
Дополнительные материалы
- Обработка платежей с измененной пользователем суммой — раздел с информацией об обработке платежей, выполненных через Payment Page.