@@ -37,6 +37,7 @@ use common_utils::{
37
37
ext_traits:: { AsyncExt , Encode , ValueExt } ,
38
38
fp_utils:: when,
39
39
generate_id, types as util_types,
40
+ errors,
40
41
} ;
41
42
use diesel_models:: {
42
43
enums, GenericLinkNew , PaymentMethodCollectLink , PaymentMethodCollectLinkData ,
@@ -1892,10 +1893,12 @@ pub async fn retrieve_payment_method(
1892
1893
1893
1894
let payment_method_in_cache = get_single_use_token_from_store (
1894
1895
& state. clone ( ) ,
1895
- payment_method_data:: SingleUseToken :: new ( pm_id. clone ( ) . get_string_repr ( ) )
1896
+ payment_method_data:: SingleUseTokenKey :: store_key ( pm_id. clone ( ) . get_string_repr ( ) )
1896
1897
) . await
1897
- . change_context ( errors:: ApiErrorResponse :: PaymentMethodNotFound )
1898
- . attach_printable ( "Failed to get payment method in store" ) ?;
1898
+ . to_not_found_response ( errors:: ApiErrorResponse :: GenericNotFoundError {
1899
+ message : "payment methods session does not exist or has expired" . to_string ( ) ,
1900
+ } )
1901
+ . attach_printable ( "Failed to retrieve payment method from redis" ) ?;
1899
1902
1900
1903
transformers:: generate_payment_method_response ( & payment_method, Some ( & payment_method_in_cache) )
1901
1904
. map ( services:: ApplicationResponse :: Json )
@@ -2792,7 +2795,7 @@ async fn create_single_use_tokenization_flow(
2792
2795
)
2793
2796
. await ?;
2794
2797
2795
- let token = payment_method_token_response
2798
+ let token_response = payment_method_token_response
2796
2799
. payment_method_token_result
2797
2800
. map_err ( |err| errors:: ApiErrorResponse :: ExternalConnectorError {
2798
2801
code : err. code ,
@@ -2804,6 +2807,11 @@ async fn create_single_use_tokenization_flow(
2804
2807
reason : err. reason ,
2805
2808
} ) ?;
2806
2809
2810
+ let token = token_response
2811
+ . ok_or ( errors:: ApiErrorResponse :: GenericNotFoundError {
2812
+ message : "No token recevied from the PSP" . to_string ( ) ,
2813
+ } ) ?;
2814
+
2807
2815
let value = payment_method_data:: PaymentMethodTokenSingleUse :: get_single_use_token_from_payment_method_token (
2808
2816
token. clone ( ) ,
2809
2817
connector_id. clone ( )
@@ -2836,16 +2844,18 @@ async fn add_single_use_token_to_store(
2836
2844
)
2837
2845
. await
2838
2846
. change_context ( errors:: StorageError :: KVError )
2839
- . attach_printable ( "Failed to insert payment method token to redis" ) ;
2840
-
2847
+ . attach_printable ( "Failed to insert payment method token to redis" ) ?;
2841
2848
Ok ( ( ) )
2842
2849
}
2843
2850
2844
2851
#[ cfg( all( feature = "v2" , feature = "payment_methods_v2" ) ) ]
2845
2852
async fn get_single_use_token_from_store (
2846
2853
state : & SessionState ,
2847
- key : payment_method_data:: SingleUseToken ,
2848
- ) -> RouterResult < payment_method_data:: PaymentMethodTokenSingleUse > {
2854
+ key : payment_method_data:: SingleUseTokenKey ,
2855
+ ) -> CustomResult <
2856
+ payment_method_data:: PaymentMethodTokenSingleUse ,
2857
+ errors:: StorageError ,
2858
+ > {
2849
2859
let redis_connection = state
2850
2860
. store
2851
2861
. get_redis_conn ( )
@@ -2854,7 +2864,7 @@ async fn get_single_use_token_from_store(
2854
2864
2855
2865
redis_connection
2856
2866
. get_and_deserialize_key :: < payment_method_data:: PaymentMethodTokenSingleUse > (
2857
- & payment_method_data:: SingleUseToken :: get_redis_key ( & key) . into ( ) ,
2867
+ & payment_method_data:: SingleUseTokenKey :: get_store_key ( & key) . into ( ) ,
2858
2868
"PaymentMethodTokenSingleUse"
2859
2869
)
2860
2870
. await
0 commit comments