fix: update recept

This commit is contained in:
2026-05-09 11:22:44 +03:00
parent ea0ca899ac
commit 3dfde69a3e
3 changed files with 26 additions and 24 deletions

View File

@@ -49,7 +49,7 @@ class CreatePaymentCloudkassirCommand:
email = str(user.email or '').strip() email = str(user.email or '').strip()
if not email: if not email:
raise ApplicationException(status_code=400, message='User email missing') raise ApplicationException(status_code=400, message='User email missing')
supplier_name = ' '.join( customer_info = ' '.join(
part part
for part in ( for part in (
str(user.last_name or '').strip(), str(user.last_name or '').strip(),
@@ -58,12 +58,14 @@ class CreatePaymentCloudkassirCommand:
) )
if part if part
) )
if not supplier_name: if not customer_info:
raise ApplicationException(status_code=400, message='User full name missing') raise ApplicationException(status_code=400, message='User full name missing')
supplier_inn = str(user.inn or '').strip() customer_inn = str(user.inn or '').strip()
if not supplier_inn: if not customer_inn:
raise ApplicationException(status_code=400, message='User inn missing') 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) paid_total = _parse_money(payment.amount)
if paid_total is None: if paid_total is None:
@@ -115,9 +117,9 @@ class CreatePaymentCloudkassirCommand:
total_amount=total_amount, total_amount=total_amount,
principal_amount=principal_amount, principal_amount=principal_amount,
service_fee=service_fee, service_fee=service_fee,
phone=phone, customer_info=customer_info,
supplier_name=supplier_name, customer_inn=customer_inn,
supplier_inn=supplier_inn, customer_birthday=customer_birthday,
request_id=str(ULID()), request_id=str(ULID()),
) )
receipt_model = receipt_response.get('Model') receipt_model = receipt_response.get('Model')

View File

@@ -14,9 +14,9 @@ class IReceipt(ABC):
total_amount: Decimal, total_amount: Decimal,
principal_amount: Decimal, principal_amount: Decimal,
service_fee: Decimal, service_fee: Decimal,
phone: str | None = None, customer_info: str = '',
supplier_name: str = '', customer_inn: str = '',
supplier_inn: str = '', customer_birthday: str = '',
success_url: str | None = None, success_url: str | None = None,
fail_url: str | None = None, fail_url: str | None = None,
request_id: str | None = None, request_id: str | None = None,

View File

@@ -40,9 +40,9 @@ class ClaudeKassirClient(IReceipt):
total_amount: Decimal, total_amount: Decimal,
principal_amount: Decimal, principal_amount: Decimal,
service_fee: Decimal, service_fee: Decimal,
phone: str | None = None, customer_info: str = '',
supplier_name: str = '', customer_inn: str = '',
supplier_inn: str = '', customer_birthday: str = '',
success_url: str | None = None, success_url: str | None = None,
fail_url: str | None = None, fail_url: str | None = None,
request_id: str | None = None, request_id: str | None = None,
@@ -71,13 +71,13 @@ class ClaudeKassirClient(IReceipt):
'method': 4, 'method': 4,
'object': 4, 'object': 4,
'measurement_unit': 'шт', 'measurement_unit': 'шт',
'agent_info': { 'agentSign': 6,
'type': 6, 'agentData': {
'agentOperationName': 'Исполнение поручения принципала',
}, },
'supplier_info': { 'purveyorData': {
'phones': [phone] if phone else [], 'name': 'Elcsa',
'name': supplier_name, 'inn': self._inn,
'inn': supplier_inn,
}, },
}, },
{ {
@@ -87,7 +87,7 @@ class ClaudeKassirClient(IReceipt):
'amount': float(fee), 'amount': float(fee),
'vat': 0, 'vat': 0,
'method': 4, 'method': 4,
'object': 4, 'object': 11,
'measurement_unit': 'шт', 'measurement_unit': 'шт',
}, },
], ],
@@ -98,14 +98,14 @@ class ClaudeKassirClient(IReceipt):
'provision': 0, 'provision': 0,
}, },
'email': email, 'email': email,
'phone': phone, 'customerInfo': customer_info,
'customerInn': customer_inn,
'customerBirthday': customer_birthday,
}, },
'Email': email, 'Email': email,
'SuccessUrl': success_url or self._success_url, 'SuccessUrl': success_url or self._success_url,
'FailUrl': fail_url or self._fail_url, 'FailUrl': fail_url or self._fail_url,
} }
if phone is None:
payload['CustomerReceipt'].pop('phone')
if payload['SuccessUrl'] is None: if payload['SuccessUrl'] is None:
payload.pop('SuccessUrl') payload.pop('SuccessUrl')
if payload['FailUrl'] is None: if payload['FailUrl'] is None: