o
    Ўi                     @   s\   d dl mZmZmZ d dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
dd Zdd	 ZdS )
    )requestjsonifycurrent_app)closing)connect_to_database)datetimeNc                 C   s,   t jd }t|d| tj }||kS )NRAZORPAY_WEBHOOK_SECRETzutf-8)r   confighmacnewencodehashlibsha256	hexdigest)payload	signaturesecretgenerated_signature r   S/Users/harjaapdhillon/Desktop/newidea/medvista_backend/Services/Billing/Webhooks.pyverify_webhook_signature   s   
r   c               
   C   sT  t j} t jd}t| |stddddfS t  }|d}t }zzt|j	dd}|dkr|d	 d
 d d }|d	 d
 d d }t
|d	 d
 d d d }|d|f | rxtddddfW  d    W W |rw|  S S |d|f | }	|	stddddfW  d    W W |r|  S S |d|	d ||t t|f |d|	d f |  n|dkr	 tddddfW  d    W W |r|  S S 1 sw   Y  W n0 ty }
 z#|r|  tdt|
 dddfW  Y d }
~
W |r|  S S d }
~
ww W |r|  d S d S |r)|  w w )NzX-Razorpay-SignaturezInvalid webhook signatureT)messageerrori  event)
dictionaryzpayment.capturedr   paymentZentityidorder_idamountd   zl
                    SELECT id FROM payments 
                    WHERE transaction_id = %s
                zPayment already processedF   z
                    SELECT id, total_amount 
                    FROM invoices 
                    WHERE gateway_order_id = %s
                zInvoice not foundi  a+  
                    INSERT INTO payments (
                        invoice_id, amount, payment_method, 
                        transaction_id, payment_date, status,
                        gateway_response
                    ) VALUES (%s, %s, 'razorpay', %s, %s, 'completed', %s)
                zW
                    UPDATE invoices SET status = 'paid' WHERE id = %s
                zrefund.processedzWebhook processedzError processing webhook: i  )r   dataheadersgetr   r   get_jsonr   r   cursorfloatexecutefetchonecloser   nowstrcommit	Exceptionrollback)r   r   Zwebhook_dataZ
event_type
connectionr%   
payment_idr   r   invoiceer   r   r   handle_razorpay_webhook   s   

=
=

=
8(
=

r3   )flaskr   r   r   
contextlibr   confr   r   r
   r   r   r3   r   r   r   r   <module>   s    	