use crate::core::{IntoBody, Json, Result};
pub const PROVIDER_SANTANDER: &str = "santander";
pub const PROVIDER_INTER: &str = "inter";
pub const PROVIDER_MERCADO_PAGO: &str = "mercadopago";
pub const PROVIDER_SICOOB: &str = "sicoob";
platform_service! {
PaymentsService
}
impl PaymentsService {
pub async fn recharge_show(&self, identifier: &str) -> Result<Json> {
self.base.get(&format!("recharge/{identifier}")).await
}
pub async fn pix_generate(&self, provider: &str, body: impl IntoBody) -> Result<Json> {
self.base
.post(&format!("{provider}/pix/generate"), body)
.await
}
pub async fn pix_status(&self, provider: &str, tx_id: &str) -> Result<Json> {
self.base.get(&format!("{provider}/pix/{tx_id}")).await
}
pub async fn boleto_generate(&self, provider: &str, body: impl IntoBody) -> Result<Json> {
self.base
.post(&format!("{provider}/boleto/generate"), body)
.await
}
pub async fn boleto_status(&self, provider: &str, id: &str) -> Result<Json> {
self.base.get(&format!("{provider}/boleto/{id}")).await
}
pub async fn boleto_pdf(&self, provider: &str, id: &str) -> Result<Vec<u8>> {
self.base
.download(&format!("{provider}/boleto/{id}/pdf"))
.await
}
pub async fn card_status(&self, id: &str) -> Result<Json> {
self.base.get(&format!("mercadopago/card/{id}")).await
}
}
json_get! {
PaymentsService {
recharges => "recharges",
checkout_payment_methods => "checkout/payment-methods",
checkout_periods => "checkout/periods",
}
}
json_body! {
PaymentsService {
recharge => post "recharge",
card_process => post "mercadopago/card/process",
card_installments => post "mercadopago/card/installments",
validate_coupon => post "checkout/validate-coupon",
checkout_finalize => post "checkout/finalize",
}
}