|
| 1 | +use std::str::FromStr; |
| 2 | + |
1 | 3 | #[cfg(feature = "payouts")]
|
2 | 4 | use api_models::payouts::{self, PayoutMethodData};
|
3 | 5 | use api_models::{
|
@@ -1390,12 +1392,37 @@ pub struct DokuBankData {
|
1390 | 1392 | pub struct AdyenRefundRequest {
|
1391 | 1393 | merchant_account: Secret<String>,
|
1392 | 1394 | amount: Amount,
|
1393 |
| - merchant_refund_reason: Option<String>, |
| 1395 | + merchant_refund_reason: Option<AdyenRefundRequestReason>, |
1394 | 1396 | reference: String,
|
1395 | 1397 | splits: Option<Vec<AdyenSplitData>>,
|
1396 | 1398 | store: Option<String>,
|
1397 | 1399 | }
|
1398 | 1400 |
|
| 1401 | +#[derive(Debug, Serialize, Deserialize)] |
| 1402 | +pub enum AdyenRefundRequestReason { |
| 1403 | + FRAUD, |
| 1404 | + #[serde(rename = "CUSTOMER REQUEST")] |
| 1405 | + CUSTOMERREQUEST, |
| 1406 | + RETURN, |
| 1407 | + DUPLICATE, |
| 1408 | + OTHER, |
| 1409 | +} |
| 1410 | + |
| 1411 | +impl FromStr for AdyenRefundRequestReason { |
| 1412 | + type Err = error_stack::Report<errors::ConnectorError>; |
| 1413 | + |
| 1414 | + fn from_str(s: &str) -> Result<Self, Self::Err> { |
| 1415 | + match s.to_uppercase().as_str() { |
| 1416 | + "FRAUD" => Ok(Self::FRAUD), |
| 1417 | + "CUSTOMER REQUEST" => Ok(Self::CUSTOMERREQUEST), |
| 1418 | + "RETURN" => Ok(Self::RETURN), |
| 1419 | + "DUPLICATE" => Ok(Self::DUPLICATE), |
| 1420 | + "OTHER" => Ok(Self::OTHER), |
| 1421 | + _ => Ok(Self::OTHER), |
| 1422 | + } |
| 1423 | + } |
| 1424 | +} |
| 1425 | + |
1399 | 1426 | #[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
1400 | 1427 | #[serde(rename_all = "camelCase")]
|
1401 | 1428 | pub struct AdyenRefundResponse {
|
@@ -4709,7 +4736,13 @@ impl<F> TryFrom<&AdyenRouterData<&RefundsRouterData<F>>> for AdyenRefundRequest
|
4709 | 4736 | currency: item.router_data.request.currency,
|
4710 | 4737 | value: item.amount,
|
4711 | 4738 | },
|
4712 |
| - merchant_refund_reason: item.router_data.request.reason.clone(), |
| 4739 | + merchant_refund_reason: item |
| 4740 | + .router_data |
| 4741 | + .request |
| 4742 | + .reason |
| 4743 | + .as_ref() |
| 4744 | + .map(|reason| AdyenRefundRequestReason::from_str(reason)) |
| 4745 | + .transpose()?, |
4713 | 4746 | reference: item.router_data.request.refund_id.clone(),
|
4714 | 4747 | store,
|
4715 | 4748 | splits,
|
|
0 commit comments