
    9hA                     X   d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlZd dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ  e       Z G d de      Z G d de      Z G d de      Zddddg ed       ed       ed       ed      ddd	iZej;                  d      d        Zej?                  de       ee       ee      fd ed!efd"       Z ej?                  d#       ee      fd$e!d%ed!efd&       Z"ej;                  d'       ee       ee      fd(e!d!efd)       Z#y)*    )	APIRouterDependsHTTPExceptionstatus)Session)DictAny)DecimalN)datetime)get_db)UserBalanceBalanceTransactionTenant)get_current_user)	BaseModelc                   d    e Zd ZU eed<   eed<   dZeed<   eed<   dZeed<   dZeed<   dZ	eed	<   y)
PaymentGatewayCreategateway_typeamountRUBcurrencydescriptionN
return_urlsuccess_urlfailure_url)
__name__
__module____qualname__str__annotations__r
   r   r   r   r        2/var/www/notifications/app/api/payment_gateways.pyr   r      s;    OHcJKKr"   r   c                   p    e Zd ZU eed<   eed<   eed<   dZeed<   eed<   eed<   eed<   eed	<   dZeed
<   y)PaymentGatewayResponse
payment_idr   r   Npayment_urlr   r   r   
created_at
expires_at)	r   r   r   r   r    r'   r
   r   r)   r!   r"   r#   r%   r%      s<    OKKOMJr"   r%   c                   b    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   i Zeeef   ed<   y)	PaymentWebhookr&   r   r   r   r   gateway_transaction_idmetadataN)	r   r   r   r   r    r
   r-   r   r	   r!   r"   r#   r+   r+   #   s4    OKOM!Hd38n!r"   r+   yookassau   ЮKassazhttps://yookassa.ru/logo.pngr   z1.00z	600000.00z2.90u   Мгновенноu   Принимайте платежи картами, электронными деньгами и через интернет-банки)	namelogosupported_currencies
min_amount
max_amountfee_percent	fee_fixedprocessing_timer   z	/gatewaysc                      t         dg ddS )uP   Получить список доступных платежных шлюзовr   )r   USDEUR)gatewaysdefault_currencyr2   )PAYMENT_GATEWAYSr!   r"   r#   get_payment_gatewaysr>   ;   s     %! 5 r"   z/create-payment)response_modeldatadbc                    | j                   t        vrt        t        j                  d      t        | j                      }| j
                  |d   k  r4t        t        j                  d|d    d|d    d| j                         | j
                  |d   kD  r4t        t        j                  d	|d    d|d    d| j                         t        t        j                               }| j                   d
k(  rd| }nd}t        || j                   d|| j
                  | j                  | j                  t        j                         t        j                         j                  ddd      	      S )uB   Создать платеж через выбранный шлюзu<   Неподдерживаемый платежный шлюз)status_codedetailr3   u)   Минимальная сумма для r0   z:  r4   u+   Максимальная сумма для r.   z6https://yoomoney.ru/checkout/payments/v2/show?orderId=Npending   ;   )hourminutesecond)	r&   r   r   r'   r   r   r   r(   r)   )r   r=   r   r   HTTP_400_BAD_REQUESTr   r   r   uuiduuid4r%   r   r   utcnowreplace)r@   rA   current_usergateway_configr&   r'   s         r#   create_paymentrS   D   s     0033Q
 	

 &d&7&78N {{^L1133>~f?U>VVXYghtYuXvvwx|  yF  yF  xG  H
 	

 {{^L1133@PVAW@XXZ[ijv[wZxxyz~  {H  {H  zI  J
 	
 TZZ\"J J& Ozl[
 "&&{{$$??$??$,,"R,K
 
r"   z/webhook/{gateway_type}r   webhook_datac                 ,    |j                   dk(  r	 dddS )u?   Обработка webhook от платежного шлюза	completedokzWebhook processed)r   message)r   )r   rT   rA   s      r#   payment_webhookrY   {   s#     k) 	':;;r"   z/payment/{payment_id}r&   c                     | ddddt        j                         j                         t        j                         j                         dS )u,   Получить статус платежаrV   z1000.00r   r.   )r&   r   r   r   r   r(   completed_at)r   rO   	isoformat)r&   rA   rQ   s      r#   get_payment_statusr]      sC     !"oo'113 )335 r"   )$fastapir   r   r   r   sqlalchemy.ormr   typingr   r	   decimalr
   rM   r   app.db.sessionr   app.db.modelsr   r   r   app.api.depsr   pydanticr   routerr   r%   r+   r=   getr>   postrS   r   rY   r]   r!   r"   r#   <module>ri      s|   = = "     ! A A ) 	9 	 Y 	 "Y " .!&fok*u~S\/ a
  K  /EF &/+,4
44 G4l &' &/<< < 	< (<2 #$ &/+, %r"   