U
    - 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   7/var/www/html/api-medvista/Services/Billing/Webhooks.pyverify_webhook_signature   s    
r   c               
   C   s  t j} t jd}t| |s.tddddfS t  }|d}t }zzTt	|j
dd8}|dkrj|d	 d
 d d }|d	 d
 d d }t|d	 d
 d d d }|d|f | rtddddfW  5 Q R  W W S |d|f | }	|	s,tddddfW  5 Q R  W W S |d|	d ||t t|f |d|	d f |  n
|dkrttddddfW  5 Q R  W W fS Q R X W nV tk
r }
 z6|r|  tdt|
 dddf W Y W S d }
~
X Y nX W 5 |r
|  X d S )NzX-Razorpay-SignaturezInvalid webhook signatureT)messageerrori  event)
dictionaryzpayment.capturedr   payment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   closer   cursorfloatexecutefetchoner   nowstrcommit	Exceptionrollback)r   r   Zwebhook_data
event_type
connectionr'   
payment_idr   r   invoiceer   r   r   handle_razorpay_webhook   sX    


&$

.:r5   )flaskr   r   r   
contextlibr   confr   r   r
   r   r   r5   r   r   r   r   <module>   s   	