o
    Mf                     @   s   d dl Z d dlZd dlZd dlZd dlmZ dZdZd&ddZd&ddZ	d&d	d
Z
dd Zdd Zdejej ej fddZdd Zdd Zdd Zdd Zdd Zedkrkddddd d!d"d#Zeeed$d% dS dS )'    N)AESz@@@@&&&&####$$$$   c                 C   sf   t |  t d t | t| }|r|ntd}d||f }t| }| }||7 }t|t|S )N    %s|%s)	print__get_param_string____id_generator__hashlibsha256encode	hexdigest
__encode__IV)
param_dictmerchant_keysaltparams_stringfinal_stringhasherhash_string r   &/var/www/html/humari/myapp/checksum.pygenerate_checksum   s   r   c                 C   sn   | D ]}d| | v ri } t   qt| }|r|ntd}d||f }t| }| }||7 }t|t|S )N|r   r   )	exitr   r	   r
   r   r   r   r   r   )r   r   r   ir   r   r   r   r   r   r   generate_refund_checksum   s   r   c                 C   sJ   | }|r|nt d}d||f }t| }| }||7 }t|t|S )Nr   r   )r	   r
   r   r   r   r   r   )	param_strr   r   r   r   r   r   r   r   r   generate_checksum_by_str/   s   r   c                 C   s@   d| v r	|  d t|t|}|dd  }t| ||d}||kS )NCHECKSUMHASHr   )pop
__decode__r   r   )r   r   checksum
paytm_hashr   calculated_checksumr   r   r   verify_checksum<   s   
r(   c                 C   s.   t |t|}|dd  }t| ||d}||kS )Nr!   r"   )r$   r   r   )r   r   r%   r&   r   r'   r   r   r   verify_checksum_by_strG   s   r)      c                    s   d  fddt| D S )Nr   c                 3   s    | ]}t  V  qd S N)randomchoice).0_charsr   r   	<genexpr>U   s    z#__id_generator__.<locals>.<genexpr>)joinrange)sizer1   r   r0   r   r	   T   s   r	   c                 C   sd   g }t |  D ]$}d| | v sd| | v ri }t  | | }||dkr'dnt| qd|S )NREFUNDr   nullr   )sortedkeysr   appendstrr3   )paramsr   keyrespons_dictvaluer   r   r   r   X   s   
r   c                 C   s(   | t t| t   tt t| t     S r+   )
BLOCK_SIZElenchrsr   r   r   <lambda>c   s   ( rE   c                 C   s   | dt | d   S )Nr   )ordrC   r   r   r   rE   d   s    c                 C   sH   t | } t|dtj|d}|| d} t| } | dS )Nutf-8zUTF-8)	__pad__r   newr   MODE_CBCencryptbase64	b64encodedecode)	to_encodeivr=   cr   r   r   r   g   s
   

r   c                 C   sL   t | } t|dtj|d}|| } t| tkr"| 	 } t
| S )NrH   )rM   	b64decoder   rJ   r   rK   decrypttypebytesrO   	__unpad__)	to_decoderQ   r=   rR   r   r   r   r$   r   s   

r$   __main__midorder_idcust_id1WEBRetailxxxxxxxxxxx)MIDORDER_IDCUST_ID
TXN_AMOUNT
CHANNEL_IDINDUSTRY_TYPE_IDWEBSITExxxxxxxxxxxxxxxxzlCD5ndX8VVjlzjWbbYoAtKQIlvtXPypQYOg0Fi2AUYKXZA5XSHiRF0FDj7vQu66S8MHx9NaDZ/uYm3WBOWHf+sDQAmTyxqUipA7i1nILlxrk=r+   )rM   stringr,   r
   Crypto.Cipherr   r   r@   r   r   r   r(   r)   ascii_uppercasedigitsascii_lowercaser	   r   rI   rW   r   r$   __name__r<   r   r   r   r   r   <module>   s@   




