B
    CDb=#                 @   s   d dl Z d dlZd dlmZ d dlmZ d dlm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 ejZejZejZejZejZejZG d
d deZG dd deZdS )    N)settings)TemplateResponse)APIView)BasicAuthentication)utils)OrderPaymentRecord)CsrfExemptSessionAuthentication)get_http_schemac               @   s"   e Zd Zedd ZdddZdS )PaytmTransactionViewc          	   C   s   t | }|  }t }dtd|d|||||dd|id|d< tt|d t	}d|i|d	< t|}	d
t|}
t
j|
|	ddidj}t|}|d d }||td}|S )NZPaymentZ
WEBSTAGINGz6{}://{}/cloud/api/v1/internal/payment/paytm/status/{}/)valuecurrencyZcustId)ZrequestTypemidZwebsiteNameorderIdZcallbackUrl	txnAmountZuserInfobody	signatureheadzRhttps://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid={}&orderId={}zContent-typezapplication/json)dataheaderstxnToken)r   r   r   )r
   Zget_hostdictPAYTM_MERCHANT_IDformatr   generateSignaturejsondumpsPAYTM_MERCHANT_KEYrequestspostcontentloads)requestorder_numberorder_payment_priceorder_payment_current
company_idZschemeZhostpaytmParamschecksum	post_dataurlresponsedict_responser   
paytm_dict r.   CG:\easytimepro\master/mysite/cloud\api\payment\paytm\paytm_views.py_initiate_transaction   s0    

z*PaytmTransactionView._initiate_transactionNc             C   s   t jj||jjdd}| s2d}t|dd|iS t jj|d}|j}|dkrbd}t|dd|iS |j	j
}t|jj}| |||||}	dt|}
t|d	|	|
d
S d S )N   )numberr&   payment_statusfalsez!cloud/payment/payment_status.htmlr3   )r2   r   zNhttps://securegw-stage.paytm.in/theia/api/v1/showPaymentPage?mid={}&orderId={}z,cloud/payment/payment_paytm_transaction.html)r-   transaction_url)r   objectsfilteruserZcurrent_companyexistsr   getZpayment_priceprice_strategyr   strZcompanyidr0   r   r   )selfr"   r#   r   orderr3   r$   r%   r&   r-   r5   r.   r.   r/   r:   K   s&    zPaytmTransactionView.get)N)__name__
__module____qualname__staticmethodr0   r:   r.   r.   r.   r/   r      s   1r   c               @   s*   e Zd ZeefZedd ZdddZdS )PaytmStatusViewc             C   s  t jj| d}tjj|d }|r4tjj|d}nt }||_d|_|d |_|j	j
|_
|d |_|d |_d|kr|d |_d|kr|d r|d |_d	|kr|d	 |_|d
 d |_|d
 d |_|d |_|d
 d |_|  |d
 d dkrd|_|  d}nd}|S )a  
        :paytm return response
        {
            'resultInfo': {
                'resultStatus': 'TXN_SUCCESS',
                'resultCode': '01',
                'resultMsg': 'Txn Success'
            },
            'txnId': '20200825111212800110168238401836728',
            'bankTxnId': '11330090367',
            'orderId': '202008251723277208823',
            'txnAmount': '44000.00',
            'txnType': 'SALE',
            'gatewayName': 'ICICI',
            'bankName': 'ICICI',
            'mid': 'WgZJwd54775452828304',
            'paymentMode': 'NB',
            'refundAmt': '0.00',
            'txnDate': '2020-08-25 17:23:38.0'
        }
        :param order_number:
        :param dict_response:
        :return: payment status
        )r2   )r?      ZgatewayNameZtxnDateZtxnIdZbankNameZ	bankTxnIdZpaymentModeZ
resultInfoZ
resultCodeZ	resultMsgr   ZresultStatusZTXN_SUCCESStruer4   )r   r6   r:   r   r7   r9   r?   Zpayment_methodZgateway_namer;   r   Ztxn_dateZtxn_idZ	bank_nameZbank_txn_idZpayment_modeZ	resp_codeZresp_msgZ
tnx_amountstatusZsaver3   )r#   r,   r?   Zpayment_record_existsZpayment_recordr3   r.   r.   r/   check_payment_statusj   s:    







z$PaytmStatusView.check_payment_statusNc             C   s   t jj|d}| s*d}t|dd|iS t }t|d|d< tt	
|d t}d|i|d< t	
|}d	}	tj|	|d
didj}
t	|
d }| ||}t|dd|iS d S )N)r2   r4   z!cloud/payment/payment_status.htmlr3   )r   r   r   r   r   z/https://securegw-stage.paytm.in/v3/order/statuszContent-typezapplication/json)r   r   )r   r6   r7   r9   r   r   r   r   r   r   r   r   r   r   r    r!   rH   )r>   r"   r#   r   r?   r3   r'   r(   r)   r*   r+   r,   r.   r.   r/   r      s"    
zPaytmStatusView.post)N)	r@   rA   rB   r	   r   Zauthentication_classesrC   rH   r   r.   r.   r.   r/   rD   g   s   >rD   )r   r   Zdjango.confr   Zdjango.template.responser   Zrest_framework.viewsr   Zrest_framework.authenticationr   Zmysite.cloud.api.payment.paytmr   Zmysite.cloud.modelsr   r   Zmysite.cloud.utilsr	   Zmysite.base.utilsr
   r   r   ZPAYTM_WEBSITEZPAYTM_INDUSTRY_TYPE_IDZPAYTM_TRANSACTION_URLZPAYTM_ORDER_CHECK_URLr   rD   r.   r.   r.   r/   <module>   s"   O