@@ -4,8 +4,7 @@ use serde::{Deserialize, Serialize};
4
4
5
5
use crate :: {
6
6
connector:: utils:: {
7
- self as conn_utils, CardData , PaymentsAuthorizeRequestData , RefundsRequestData , RouterData ,
8
- WalletData ,
7
+ self as conn_utils, CardData , PaymentsAuthorizeRequestData , RouterData , WalletData ,
9
8
} ,
10
9
core:: errors,
11
10
services,
@@ -438,6 +437,7 @@ impl<F, T>
438
437
pub struct NoonActionTransaction {
439
438
amount : String ,
440
439
currency : diesel_models:: enums:: Currency ,
440
+ transaction_reference : Option < String > ,
441
441
}
442
442
443
443
#[ derive( Debug , Serialize ) ]
@@ -466,6 +466,7 @@ impl TryFrom<&types::PaymentsCaptureRouterData> for NoonPaymentsActionRequest {
466
466
item. request . currency ,
467
467
) ?,
468
468
currency : item. request . currency ,
469
+ transaction_reference : None ,
469
470
} ;
470
471
Ok ( Self {
471
472
api_operation : NoonApiOperations :: Capture ,
@@ -507,6 +508,7 @@ impl<F> TryFrom<&types::RefundsRouterData<F>> for NoonPaymentsActionRequest {
507
508
item. request . currency ,
508
509
) ?,
509
510
currency : item. request . currency ,
511
+ transaction_reference : Some ( item. request . refund_id . clone ( ) ) ,
510
512
} ;
511
513
Ok ( Self {
512
514
api_operation : NoonApiOperations :: Refund ,
@@ -570,9 +572,11 @@ impl TryFrom<types::RefundsResponseRouterData<api::Execute, RefundResponse>>
570
572
}
571
573
572
574
#[ derive( Default , Debug , Deserialize ) ]
575
+ #[ serde( rename_all = "camelCase" ) ]
573
576
pub struct NoonRefundResponseTransactions {
574
577
id : String ,
575
578
status : RefundStatus ,
579
+ transaction_reference : Option < String > ,
576
580
}
577
581
578
582
#[ derive( Default , Debug , Deserialize ) ]
@@ -592,13 +596,19 @@ impl TryFrom<types::RefundsResponseRouterData<api::RSync, RefundSyncResponse>>
592
596
fn try_from (
593
597
item : types:: RefundsResponseRouterData < api:: RSync , RefundSyncResponse > ,
594
598
) -> Result < Self , Self :: Error > {
595
- let connector_refund_id = item. data . request . get_connector_refund_id ( ) ?;
596
599
let noon_transaction: & NoonRefundResponseTransactions = item
597
600
. response
598
601
. result
599
602
. transactions
600
603
. iter ( )
601
- . find ( |transaction| transaction. id == connector_refund_id)
604
+ . find ( |transaction| {
605
+ transaction
606
+ . transaction_reference
607
+ . clone ( )
608
+ . map_or ( false , |transaction_instance| {
609
+ transaction_instance == item. data . request . refund_id
610
+ } )
611
+ } )
602
612
. ok_or ( errors:: ConnectorError :: ResponseHandlingFailed ) ?;
603
613
604
614
Ok ( Self {
0 commit comments