
    އg*                        d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlZd dlmZ dd	lmZ d dlZd dlZd dlZd d
lmZ d dlm
Z
 d dlmZmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#  ejH                  e%      Z&d Z' e'd      Z( e'd      Z)e(re)r e jT                  e(e)f      Z+ndZ+e&jY                  d       d Z-d Z.d Z/ed        Z0ed        Z1d Z2d Z3d Z4y)    N)settings)renderredirect)JsonResponseHttpResponseHttpResponseNotFound)csrf_exempt)BadRequestErrorSignatureVerificationError)now   )
PaymentLogr   )r   )datetime	timedelta)Channel)set_subscribe_to_channel)
Activation)SiteSettingc                     	 t         j                  j                  |       }t        j                  |j
                  j                               j                         S # t         j                  $ r Y yw xY w)z8Fetch and decode a setting value from SiteSetting model.)key )	r   objectsgetbase64	b64decodevalueencodedecodeDoesNotExist)r   settings     +/var/www/skyplay_api_hub/subscribe/views.pyget_setting_valuer#      s_    %%))c)2 4 4 67>>@@## s   AA A32A3RAZORPAY_KEY_IDRAZORPAY_SECRET)authu:   ❌ Razorpay client not initialized. API keys are missing!c                 t   d|  }ddd}	 t        j                  ||      }|j                         }t        |       t        |       |j                  di g      d   j                  dd	      S # t         j                  j
                  $ r+}t        j                  d
t        |              Y d }~yd }~ww xY w)Nzhttp://api2.skyplay.in/clients/application/json 84a0103ea1780372cbc410e49114633eAcceptTokenheadersnamesr   namezUnknown Client   ❌ API request failed: 	API Error)	requestsr   jsonprint
exceptionsRequestExceptionloggererrorstr)	client_idurlr.   responsedataes         r"   get_client_namer@   -   s    +I;
7C+6XYG<<W5}}hdxx"&q)--f6FGG// /Ax89s   A"A/ /B7!B22B7c                 H   d|  }ddd}	 t        j                  ||      }|j                         }|j                  di g      d   j                  dd	      S # t         j                  j                  $ r+}t
        j                  d
t        |              Y d }~yd }~ww xY w)Nz http://api2.skyplay.in/channels/r(   r)   r*   r-   channelsr   r0   zUnknown Channelr1   r2   )r3   r   r4   r6   r7   r8   r9   r:   )
channel_idr<   r.   r=   r>   r?   s         r"   get_channel_namerD   ;   s    ,ZL
9C+6XYG<<W5}}xx
RD)!,009JKK// /Ax89s   AA B!6!BB!c           	         | j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }t        j                         }|t	        d      z   }t
        j                  j                  |      j                         }|r|j                  }	nd	}	t        |      }t        |      }t        |      }t        |	      }		 |j                  d
      }
t        |      }|||||||	t        d}t!        | d|      S # t        $ r t        ddid      cY S w xY w)NchannelNameclientIddeviceId	channelIdpacks   )days)rC   r   %Y-%m-%dr9   zInvalid date format  status)rG   
clientNameendDaterH   rI   rF   amountr$   zpayment.html)GETr   r   r   r   r   r   filterfirstpriceintstrftime
ValueErrorr   r@   r$   r   )requestchannel_namerG   rH   rI   rJ   current_daterR   channelrS   endDate_strclient_namecontexts                r"   payment_viewrb   I   sS    ;;??=$7L{{z40H{{z40HT2IKKOOGT*E <<>LYB//Goo$$	$:@@BG-- 8}H8}HII[FJ&&z2 "(+K #)	G '>733#  JW&;<SIIJs   E E/.E/c                    | j                   dk7  rt        ddid      S t        s$t        j	                  d       t        ddid      S 	 t        j                  | j                        }|j                  d	d
      }|j                  dd
      }|j                  dd
      }|j                  dd
      }t        |j                  dd            dz  }|j                  dd      }|dk  rt        ddid      S t        j                  j                  ||dddid      }|d   | j                  d<   t        j                  j                  |||||dz  ||d   ||dd       t        |d   |d   |d   d      S # t
        j                  $ r:}	t        j	                  dt!        |	              t        dd id      cY d }	~	S d }	~	wt"        $ rC}	t        j	                  d!t!        |	              t        dt!        |	      id      cY d }	~	S d }	~	wt$        $ r:}	t        j	                  d"t!        |	              t        dd#id      cY d }	~	S d }	~	ww xY w)$NPOSTr9   Method not allowed  rO   #   ❌ Razorpay client not initializedRazorpay client not initialized  r;   Unknownr`   	device_idrC   rS   r   d   currencyINRzInvalid amountrN   r   company_namezSkyPlay APIs)rS   rm   payment_capturenotesidrazorpay_order_idORDER_CREATEDPENDING)r;   r`   rk   pack_or_channel_idrS   rm   order_idrequest_dataresponse_datarP   final_status)rw   rS   rm   u   ❌ JSON Decode Error: zInvalid JSON format   ❌ Razorpay API Error:    ❌ Unexpected Error: Internal server error)methodr   razorpay_clientr8   r9   r4   loadsbodyr   rX   ordercreatesessionr   r   JSONDecodeErrorr:   r
   	Exception)
r[   r>   r;   r`   rk   rC   rS   rm   r   r?   s
             r"   create_orderr   |   sE    ~~W&:;CHH:;W&GHQTUU6Lzz',,'HH[)4	hh}i8HH[)4	XXlI6
TXXh*+c188J.Q;*: ;CHH%%,,  	.
  05T{+, 	!!#)C<4["" 	" 	
 dHoj)
  	  J.s1vh78W&;<SII ;/Ax89Wc!f-c:: L-c!fX67W&=>sKKLsJ   
B*E5 5A?E5 5I/F=7I=I	8HII/IIIc                    | j                   dk7  rt        ddid      S t        s$t        j	                  d       t        ddid      S 	 t        j                  | j                        j                  d	d
      }j                  dd
      }j                  dd
      }j                  dd
      }j                  dd      }j                  dd      }j                  dd
      }g d}t        fd|D              s$t        j	                  d       t        ddid      S t        j                  j                  d   d   d   d      }	t        j                  j                  d   ddd      \  }
}t        j                   |      }|j#                  d      }t%        | ||||       t&        j                  j)                  ||||       }t        d!d"i      S # t*        $ r[ t        j	                  d#       t        j                  j                  j                  dd$      d%d&d'       t        dd(id      cY S t,        $ rC}t        j	                  d)t/        |              t        dt/        |      id      cY d }~S d }~wt0        $ r:}t        j	                  d*t/        |              t        dd+id      cY d }~S d }~ww xY w),Nrd   r9   re   rf   rO   rg   rh   ri   r;   rj   r`   rk   rC   rS   r   rm   rn   end_date)rs   razorpay_payment_idrazorpay_signaturec              3   @   K   | ]  }j                  |        y w)N)r   ).0fieldr>   s     r"   	<genexpr>z!verify_payment.<locals>.<genexpr>   s     @u488E?@s   u   ❌ Missing payment detailszMissing payment detailsrN   rs   r   r   PAYMENT_VERIFIEDSUCCESS)varified_resonserP   rz   )rw   defaultsrM   )r;   rC   r   rk   successzPayment verified successfullyu)   ❌ Payment signature verification failedr   SIGNATURE_VERIFICATION_FAILEDFAILED)rP   rz   zPayment verification failedr{   r|   r}   )r~   r   r   r8   r9   r4   r   r   r   allutilityverify_payment_signaturer   r   update_or_creater   fromisoformatrY   r   r   r   r   r
   r:   r   )r[   r;   r`   rk   rC   rS   rm   r   required_fieldsresultpayment_logcreatedendDate_obj
activationr?   r>   s                  @r"   verify_paymentr      s   ~~W&:;CHH:;W&GHQTUUGLzz',,'HH[)4	hh}i8HH[)4	XXlI6
(A&88J.88J	2\@@@LL67*C DSQQ!))BB!%&9!:#'(=#>"&';"<D
   *11BB-.$(, )  C  
W ,,X6 ''
3
 	!)Xy*U''..!	 / 

 Y(GHII% R@A++XX126 ?QYZ 	, 	
 W&CDSQQ ;/Ax89Wc!f-c:: L-c!fX67W&=>sKKLs?   CG  $B;G   A!KK8J	K	K/K
K
Kc                     t        | d      S )Nzsuccess.htmlr   r[   s    r"   payment_successr     s    '>**    c                     t        | d      S )Nz
error.htmlr   r   s    r"   payment_errorr     s    '<((r   c           	         | j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }t        | d||||d      S )Nr0   rG   rH   rI   zactivation.html)r0   r;   rk   rC   )rT   r   r   )r[   r0   r;   rk   rC   s        r"   r   r     sw    ;;??64(D
D1I
D1Id3J ', 	/  r   )5razorpayr4   loggingdjango.confr   django.shortcutsr   r   django.httpr   r   r   django.views.decorators.csrfr	   razorpay.errorsr
   r   r3   django.utils.timezoner   modelsr   urllib.parseurllibr   sysr   r   iptv_activation.modelsr   skyplay_api.viewsr   subscribe.modelsr   setting.modelsr   	getLogger__name__r8   r#   r$   r%   Clientr   r9   r@   rD   rb   r   r   r   r   r    r   r"   <module>r      s         - H H 4 G  %    
 # $ ( * 6 ' & 
		8	$ $$56#$56%hooO_+MNOO
LLMN
/4f ?L ?LD OL OLj+)r   