
    Эh                     F   S SK r S SKJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  \" 5       r\" 5         \ R0                  " SS5      r\R5                  S5      \" \5      4S\S\4S jj5       r\R=                  S5      \" \5      4S\4S jj5       r\R=                  S5      \" \5      4S\ S\4S jj5       r!\R=                  S5      \" \5      4S\ S\4S jj5       r"\R=                  S5      \" \5      4S\ S\4S jj5       r#g)    N)	APIRouterDependsHTTPException)"disable_installed_extensions_check)Program)Payment)PaymentState)RegistrationState)Registration)CinetpayHelper)check_token_validity)get_random_intFILE_STORAGE_PATHfilesz/payments/initiate
program_iddependenciesc           
        #    Uu  p#UR                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d  SS0S4$ S[        S5       3nSUR                   3nSUR                  0nSnS	n	[        UUR                  UR                  [        R                  UR                  S
9n
UR                  U
5        UR                  5         UR                  U
5        [        R                  " U[!        UR                  5      UUUU	US9I S h  vN n[#        U[$        5      (       a  SU;   a  SUS   ;   a  US   S   nSUS.$ SUS.$  N:7f)Nmessageu   Programme non trouvé  TX   zPaiement pour le programme r   z"https://example.com/payment-returnz"https://example.com/payment-cancel)	referenceamountuser_idstatepayment_value)transaction_idr   metadatadescription
return_url
cancel_urluserdatapayment_urlu   Paiement initié)r   payment_linkz'Erreur lors de l'initiation du paiement)r   error)queryr   filteridfirstr   namer   pricer	   PENDINGaddcommitrefreshr   generate_payment_linkint
isinstancedict)r   r   dbr"   programr   r   r   r    r!   paymentresponser$   s                FD:\kofCorporation\kof-academy-backend\app\routers\students\payments.pycreate_paymentr:      sV    HBhhw&&wzzZ'?@FFHG23S88 .+,-N/~>Kgjj)H5J5J  }}""mmG FF7OIIKJJw#99%7==! H (D!!f&8]hW]N^=^v&}5-LLDxXX!s   DE!E";Ez/users/me/paymentsc                     U u  pUR                  [        5      R                  [        R                  UR                  :H  5      R                  5       nU$ )N)r'   r   r(   r   r)   all)r   r5   r"   paymentss       r9   my_paymentsr>   K   s=    HBxx ''477(BCGGIHO    z/payment-returnr   c                   #    Uu  p#[         R                  " U 5      I S h  vN nUS   S:w  a  [        SS5      eUR                  [        5      R                  [        R                  U :H  5      R                  5       nU(       d  [        SS5      e[        R                  Ul
        UR                  SS5      Ul        UR                  5         UR                  U5        [        UR                   UR                   UR                  S	0 5      R                  S
5      ["        R                  S9nUR%                  U5        UR                  5         UR                  U5        SUR                   S.$  GNK7f)Ncode00i  u   Paiement non validér   Paiement introuvablepayment_methodunknownr   r   )r   
payment_idr   statusu   Paiement validér   r7   )r   check_transactionr   r'   r   r(   r   r*   r	   PAIDr   getmethodr/   r0   r   r)   r
   r.   )r   r   r5   r"   status_datar7   registrations          r9   payment_returnrO   U   s%     HB&88HHK 6d"C!788 hhw&&w'8'8N'JKQQSGC!788 %%GM __%5yAGNIIKJJw"::&??:r:>>|L(--	L FF<IIKJJ|)gjjAA5 Is   E.E+EE.z/payment-cancelc                 4  #    Uu  p#UR                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d  [        SS5      e[        R                  Ul        UR                  5         UR                  U5        SUS.$ 7f)u&   Callback CinetPay si paiement annulé.r   rC   u   Paiement annulérH   )r'   r   r(   r   r*   r   r	   	CANCELLEDr   r/   r0   )r   r   r5   r"   r7   s        r9   payment_cancelrR   v   sy      HBhhw&&w'8'8N'JKQQSGC!788 **GMIIKJJw)g>>s   BBz/cinetpay-notifyc                    #    Uu  p#[         R                  " U 5      I S h  vN nUR                  S5      S:X  a  gg N7f)NrA   rB      r   )r   rI   rK   )r   r   r5   r"   r8   s        r9   cinetpay_notifyrU      sB      HB#55nEEH||Ft#   Fs   ><>)$osfastapir   r   r   fastapi_pagination.utilsr   app.models.baser   app.models.paymentr   app.enums.payment_stater	   app.enums.registration_stater
   app.models.registrationr   app.services.cinetpay_helperr   app.utils.authentificationr   app.utils.helpersr   routergetenvr   postr2   tupler:   rK   r>   strrO   rR   rU    r?   r9   <module>rg      sX   	 6 5 G # & 0 :
 1 7 ; ,	 " $II17;  !"@GH\@] *YS *Y *Y #*YZ  !&-.B&C e  " DKL`Da B BE B B@ DKL`Da ? ?E ? ? ELMaEb # U   r?   