o
    j                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	Z	d dl
mZmZmZmZmZmZ d dlmZmZ G dd deZdddZdddZd ddZd!ddZd"ddZd"ddZdS )#    )annotationsN)date)AnyDict)ASAAS_API_KEYASAAS_BASE_URLPAYMENT_PROVIDERPAYMENT_WEBHOOK_URLPIX_PROVIDER_ENDPOINTPIX_PROVIDER_TOKEN)create_paymentfetchonec                   @  s   e Zd ZdS )PaymentErrorN)__name__
__module____qualname__ r   r   $/var/www/divulga_bot/bot/payments.pyr      s    r   returnDict[str, str]c                   C  s   t stdt dddS )Nu9   ASAAS_API_KEY/PIX_PROVIDER_TOKEN não configurado no .envapplication/json)access_tokenacceptzcontent-type)r   r   r   r   r   r   _asaas_headers   s   r   pathstrpayloadDict[str, Any]c              	   C  sX   t  |  }tj|t |dd}|jdkr(td|  d|j d|jd d  | S )N-   headersjsontimeout  zAsaas POST  falhou :   )r   requestspostr   status_coder   textr!   )r   r   urlresponser   r   r   _asaas_post$   s
   
&r-   c              	   C  sV   t  |  }tj|t dd}|jdkr'td|  d|j d|jd d  | S )Nr   )r    r"   r#   z
Asaas GET r$   r%   r&   )r   r'   getr   r)   r   r*   r!   )r   r+   r,   r   r   r   
_asaas_get.   s
   
&r/   model_idintc                 C  s   t d| f}|std|  d|dpdd}|dp%|p%d|  }t|d	p-d }|s7td
||d|  dd}td|}|d}|sTtd| t|S )Nz SELECT * FROM models WHERE id=%szModelo #u    não encontrada no banco.username @display_namezCliente Telegram cpf_cnpjuL   CPF/CNPJ do pagador não está salvo. Peça o CPF/CNPJ antes de gerar o Pix.model_T)namecpfCnpjexternalReferencenotificationDisabledz
/customersidu!   Asaas não retornou customer id: )r   r   r.   lstripr   stripr-   )r0   modelr2   r5   r6   r   datacustomer_idr   r   r   _create_asaas_customer8   s$   

rB   packagec                 C  s<  dt  jd d  }t|d }t|d }t|d }t| }|d|t  |d  d| d	|d
}t	d|}t
|dd}	|	sMtd| td|	 d}
t
|dpa|dpad}t
|
dpjd}t
|
dpsd}t| |||d||||	tj||
dddd
}t
|||	|||t
|
dpddS )NPAY_   pricecreditsr<   PIXr8   z -     crédito(s))customerbillingTypevaluedueDatedescriptionr:   z	/paymentsr3   u%   Asaas não retornou id da cobrança: z
/payments/z
/pixQrCode
invoiceUrlbankSlipUrlr   encodedImageasaas)paymentpixFensure_ascii
r0   
package_idamountrG   providerexternal_referencepayment_urlqr_codeprovider_payment_idraw_responseexpirationDate)
payment_idr[   r^   r\   r]   encoded_imageexpiration_date)uuiduuid4hexfloatr1   rB   r   today	isoformatr-   r   r.   r   r/   r   r!   dumps)r0   rC   r[   rY   rG   rX   rA   payment_payloadrS   payment_id_asaasrT   r\   qr_code_payloadrb   local_payment_idr   r   r   _create_asaas_pix_chargeT   sP   

	ro   c                 C  sz  t dkr	t| |S t dkrtrdt jd d  }t|d }t|d }t|d }|||d| d	td
}dt	 dd}t
jt||dd}|  | }	t|	dd}
t|	dd}t|	dd}t| |||t ||
||tj|	ddd
}t|||
|ddS dt jd d  }t|d }t|d }t|d }t| |||d|ddddd
}t||ddddS )NrR   genericrD   rE   rF   rG   r<   z
Compra de rI   )r[   rY   rG   rN   webhook_urlzBearer r   )AuthorizationzContent-Type   r   r\   r3   r]   r^   FrU   rW   )ra   r[   r\   r]   rb   manualz{})r   ro   r
   rd   re   rf   rg   r1   r	   r   r'   r(   raise_for_statusr!   r   r.   r   rj   )r0   rC   r[   rY   rG   rX   r   r    r,   r@   r\   r]   r^   ra   r   r   r   create_pix_charge   sx   

rv   )r   r   )r   r   r   r   r   r   )r   r   r   r   )r0   r1   r   r   )r0   r1   rC   r   r   r   )
__future__r   r!   rd   datetimer   typingr   r   r'   configr   r   r   r	   r
   r   databaser   r   	Exceptionr   r   r-   r/   rB   ro   rv   r   r   r   r   <module>   s     






5