flutterwave_v3_models/transactions/
query_trans_fees.rs

1use serde::{Deserialize, Serialize};
2use validator::Validate;
3use crate::{
4    common::payload::Payload,
5    fwcall::{FwCall, ToFwCall},
6};
7use std::borrow::Cow;
8
9#[derive(Debug, Serialize, Deserialize, Validate)]
10pub struct QueryTransFeesReq {
11    pub amount: i32,
12    pub currency: String,
13    pub payment_type: String,
14    pub card_first6digits: i32
15}
16
17#[derive(Debug, Serialize, Deserialize)]
18pub struct QueryTransFeesRes {
19    pub status: String,
20    pub message: String,
21    pub data: QueryTransFeesResData
22}
23
24#[derive(Debug, Serialize, Deserialize)]
25pub struct QueryTransFeesResData {
26    pub charge_amount: String,
27    pub fee: i32,
28    pub merchant_fee: i32,
29    pub flutterwave_fee: i32,
30    pub stamp_duty_fee: i32,
31    pub currency: String
32}
33
34impl<'a> ToFwCall<'a> for QueryTransFeesReq {
35    type ApiRequest = Self;
36
37    type ApiResponse = QueryTransFeesRes;
38
39    fn get_call(self) -> FwCall<'a, Self::ApiRequest, Self::ApiResponse> {
40        FwCall::new(
41            Cow::Owned(format!("/v3/transactions/fees?{}", serde_qs::to_string(&self).unwrap())),
42            reqwest::Method::POST,
43            Some(Payload::Plain(self)),
44        )
45    }
46}