o
    ˷e
                     @   sR   d dl Z d dlmZ d dlmZ d dlmZ dd Zdd Zdd	d
Z	dd Z
dS )    N)settings)	smart_str)warn_untestedc                 C   s$   t | t | d}t| S )Nzutf-8)r   encodehashlibsha1	hexdigest)saltraw_passwordencoded_string r   N/var/www/ideatree/venv/lib/python3.10/site-packages/paypal/standard/helpers.pyget_sha1_hexdigest
   s   r   c                 C   sR   | j jj| jdj| jdjddddd }t|dkr'|d j| jkS d	S )
a  
    Returns True if a record with this transaction id exists and its
    payment_status has not changed.
    This function has been completely changed from its previous implementation
    where it used to specifically only check for a Pending->Completed
    transition.

    )txn_id)idT)flagz-created_atN   r   F)		__class___default_managerfilterr   excluder   order_bylenpayment_status)ipn_objsimilarsr   r   r   duplicate_txn_id   s   r   c                 C   s   |du rddg}d}|D ]<}t | dr"|| jv r!|t| j| 7 }q|| jv r1|t| j| 7 }q|| jv rH| j| jdurH|t| j| j7 }qttj|}|S )z
    Returns a secret for use in a EWP form or an IPN verification based on a
    selection of variables in params. Should only be used with SSL.

    Nbusiness	item_name cleaned_data)hasattrr    strinitialfieldsr   r   
SECRET_KEY)form_instancesecret_fieldsdatanamesecretr   r   r   make_secret(   s   


r+   c                 C   s   t   t| |kS )zo
    Returns true if received `secret` matches expected secret for form_instance.
    Used to verify IPN.

    )r   r+   )r&   r*   r   r   r   check_secretG   s   r,   )N)r   django.confr   django.utils.encodingr   paypal.utilsr   r   r   r+   r,   r   r   r   r   <module>   s   
