use crate::Error;
pub async fn create(
charge_id: &str,
amount_cents: Option<i64>,
idempotency_key: &str,
reason: Option<stripe::RefundReasonFilter>,
) -> Result<stripe::Refund, Error> {
let _ = idempotency_key;
let client = crate::Stripe::client();
let mut params = stripe::CreateRefund::new();
let charge: stripe::ChargeId = charge_id
.parse()
.map_err(|_| Error::Stripe(format!("invalid charge id: {charge_id}")))?;
params.charge = Some(charge);
params.amount = amount_cents;
params.reason = reason;
let refund = stripe::Refund::create(client, params).await?;
Ok(refund)
}
pub async fn retrieve(refund_id: &str) -> Result<stripe::Refund, Error> {
let client = crate::Stripe::client();
let id: stripe::RefundId = refund_id
.parse()
.map_err(|_| Error::Stripe(format!("invalid refund id: {refund_id}")))?;
let refund = stripe::Refund::retrieve(client, &id, &[]).await?;
Ok(refund)
}