From 3dfde69a3e5edcc810ee710a981a53fe5dad4c3a Mon Sep 17 00:00:00 2001 From: Noloquideus Date: Sat, 9 May 2026 11:22:44 +0300 Subject: [PATCH] fix: update recept --- .../create_payment_cloudkassir_command.py | 18 +++++++------ src/application/contracts/i_receipt.py | 6 ++--- src/infrastructure/cloud_kassir/client.py | 26 +++++++++---------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/application/commands/create_payment_cloudkassir_command.py b/src/application/commands/create_payment_cloudkassir_command.py index 7c6c95c..d62864a 100644 --- a/src/application/commands/create_payment_cloudkassir_command.py +++ b/src/application/commands/create_payment_cloudkassir_command.py @@ -49,7 +49,7 @@ class CreatePaymentCloudkassirCommand: email = str(user.email or '').strip() if not email: raise ApplicationException(status_code=400, message='User email missing') - supplier_name = ' '.join( + customer_info = ' '.join( part for part in ( str(user.last_name or '').strip(), @@ -58,12 +58,14 @@ class CreatePaymentCloudkassirCommand: ) if part ) - if not supplier_name: + if not customer_info: raise ApplicationException(status_code=400, message='User full name missing') - supplier_inn = str(user.inn or '').strip() - if not supplier_inn: + customer_inn = str(user.inn or '').strip() + if not customer_inn: raise ApplicationException(status_code=400, message='User inn missing') - phone = str(user.phone or '').strip() or None + if user.birth_date is None: + raise ApplicationException(status_code=400, message='User birth date missing') + customer_birthday = user.birth_date.isoformat() paid_total = _parse_money(payment.amount) if paid_total is None: @@ -115,9 +117,9 @@ class CreatePaymentCloudkassirCommand: total_amount=total_amount, principal_amount=principal_amount, service_fee=service_fee, - phone=phone, - supplier_name=supplier_name, - supplier_inn=supplier_inn, + customer_info=customer_info, + customer_inn=customer_inn, + customer_birthday=customer_birthday, request_id=str(ULID()), ) receipt_model = receipt_response.get('Model') diff --git a/src/application/contracts/i_receipt.py b/src/application/contracts/i_receipt.py index c40e204..5b6121c 100644 --- a/src/application/contracts/i_receipt.py +++ b/src/application/contracts/i_receipt.py @@ -14,9 +14,9 @@ class IReceipt(ABC): total_amount: Decimal, principal_amount: Decimal, service_fee: Decimal, - phone: str | None = None, - supplier_name: str = '', - supplier_inn: str = '', + customer_info: str = '', + customer_inn: str = '', + customer_birthday: str = '', success_url: str | None = None, fail_url: str | None = None, request_id: str | None = None, diff --git a/src/infrastructure/cloud_kassir/client.py b/src/infrastructure/cloud_kassir/client.py index 5b29aa2..45cc9aa 100644 --- a/src/infrastructure/cloud_kassir/client.py +++ b/src/infrastructure/cloud_kassir/client.py @@ -40,9 +40,9 @@ class ClaudeKassirClient(IReceipt): total_amount: Decimal, principal_amount: Decimal, service_fee: Decimal, - phone: str | None = None, - supplier_name: str = '', - supplier_inn: str = '', + customer_info: str = '', + customer_inn: str = '', + customer_birthday: str = '', success_url: str | None = None, fail_url: str | None = None, request_id: str | None = None, @@ -71,13 +71,13 @@ class ClaudeKassirClient(IReceipt): 'method': 4, 'object': 4, 'measurement_unit': 'шт', - 'agent_info': { - 'type': 6, + 'agentSign': 6, + 'agentData': { + 'agentOperationName': 'Исполнение поручения принципала', }, - 'supplier_info': { - 'phones': [phone] if phone else [], - 'name': supplier_name, - 'inn': supplier_inn, + 'purveyorData': { + 'name': 'Elcsa', + 'inn': self._inn, }, }, { @@ -87,7 +87,7 @@ class ClaudeKassirClient(IReceipt): 'amount': float(fee), 'vat': 0, 'method': 4, - 'object': 4, + 'object': 11, 'measurement_unit': 'шт', }, ], @@ -98,14 +98,14 @@ class ClaudeKassirClient(IReceipt): 'provision': 0, }, 'email': email, - 'phone': phone, + 'customerInfo': customer_info, + 'customerInn': customer_inn, + 'customerBirthday': customer_birthday, }, 'Email': email, 'SuccessUrl': success_url or self._success_url, 'FailUrl': fail_url or self._fail_url, } - if phone is None: - payload['CustomerReceipt'].pop('phone') if payload['SuccessUrl'] is None: payload.pop('SuccessUrl') if payload['FailUrl'] is None: