@@ -2009,7 +2009,7 @@ pub async fn list_customer_payment_method(
2009
2009
let hyperswitch_token = generate_id ( consts:: ID_LENGTH , "token" ) ;
2010
2010
2011
2011
let card = if pm. payment_method == enums:: PaymentMethod :: Card {
2012
- get_card_details ( & pm, key, state, & hyperswitch_token) . await ?
2012
+ get_card_details ( & pm, key, state, & hyperswitch_token, & key_store ) . await ?
2013
2013
} else {
2014
2014
None
2015
2015
} ;
@@ -2104,6 +2104,7 @@ async fn get_card_details(
2104
2104
key : & [ u8 ] ,
2105
2105
state : & routes:: AppState ,
2106
2106
hyperswitch_token : & str ,
2107
+ key_store : & domain:: MerchantKeyStore ,
2107
2108
) -> errors:: RouterResult < Option < api:: CardDetailFromLocker > > {
2108
2109
let mut _card_decrypted =
2109
2110
decrypt :: < serde_json:: Value , masking:: WithType > ( pm. payment_method_data . clone ( ) , key)
@@ -2120,14 +2121,15 @@ async fn get_card_details(
2120
2121
} ) ;
2121
2122
2122
2123
Ok ( Some (
2123
- get_lookup_key_from_locker ( state, hyperswitch_token, pm) . await ?,
2124
+ get_lookup_key_from_locker ( state, hyperswitch_token, pm, key_store ) . await ?,
2124
2125
) )
2125
2126
}
2126
2127
2127
2128
pub async fn get_lookup_key_from_locker (
2128
2129
state : & routes:: AppState ,
2129
2130
payment_token : & str ,
2130
2131
pm : & storage:: PaymentMethod ,
2132
+ merchant_key_store : & domain:: MerchantKeyStore ,
2131
2133
) -> errors:: RouterResult < api:: CardDetailFromLocker > {
2132
2134
let card = get_card_from_locker (
2133
2135
state,
@@ -2142,9 +2144,15 @@ pub async fn get_lookup_key_from_locker(
2142
2144
. change_context ( errors:: ApiErrorResponse :: InternalServerError )
2143
2145
. attach_printable ( "Get Card Details Failed" ) ?;
2144
2146
let card = card_detail. clone ( ) ;
2145
- let resp =
2146
- BasiliskCardSupport :: create_payment_method_data_in_locker ( state, payment_token, card, pm)
2147
- . await ?;
2147
+
2148
+ let resp = TempLockerCardSupport :: create_payment_method_data_in_temp_locker (
2149
+ state,
2150
+ payment_token,
2151
+ card,
2152
+ pm,
2153
+ merchant_key_store,
2154
+ )
2155
+ . await ?;
2148
2156
Ok ( resp)
2149
2157
}
2150
2158
@@ -2177,6 +2185,7 @@ pub async fn get_lookup_key_for_payout_method(
2177
2185
Some ( payout_token. to_string ( ) ) ,
2178
2186
& pm_parsed,
2179
2187
Some ( pm. customer_id . to_owned ( ) ) ,
2188
+ key_store,
2180
2189
)
2181
2190
. await
2182
2191
. change_context ( errors:: ApiErrorResponse :: InternalServerError )
@@ -2190,110 +2199,16 @@ pub async fn get_lookup_key_for_payout_method(
2190
2199
}
2191
2200
}
2192
2201
2193
- pub struct BasiliskCardSupport ;
2202
+ pub struct TempLockerCardSupport ;
2194
2203
2195
- #[ cfg( not( feature = "basilisk" ) ) ]
2196
- impl BasiliskCardSupport {
2197
- async fn create_payment_method_data_in_locker (
2198
- state : & routes:: AppState ,
2199
- payment_token : & str ,
2200
- card : api:: CardDetailFromLocker ,
2201
- pm : & storage:: PaymentMethod ,
2202
- ) -> errors:: RouterResult < api:: CardDetailFromLocker > {
2203
- let card_number = card. card_number . clone ( ) . get_required_value ( "card_number" ) ?;
2204
- let card_exp_month = card
2205
- . expiry_month
2206
- . clone ( )
2207
- . expose_option ( )
2208
- . get_required_value ( "expiry_month" ) ?;
2209
- let card_exp_year = card
2210
- . expiry_year
2211
- . clone ( )
2212
- . expose_option ( )
2213
- . get_required_value ( "expiry_year" ) ?;
2214
- let card_holder_name = card
2215
- . card_holder_name
2216
- . clone ( )
2217
- . expose_option ( )
2218
- . unwrap_or_default ( ) ;
2219
- let value1 = payment_methods:: mk_card_value1 (
2220
- card_number,
2221
- card_exp_year,
2222
- card_exp_month,
2223
- Some ( card_holder_name) ,
2224
- None ,
2225
- None ,
2226
- None ,
2227
- )
2228
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2229
- . attach_printable ( "Error getting Value1 for locker" ) ?;
2230
- let value2 = payment_methods:: mk_card_value2 (
2231
- None ,
2232
- None ,
2233
- None ,
2234
- Some ( pm. customer_id . to_string ( ) ) ,
2235
- Some ( pm. payment_method_id . to_string ( ) ) ,
2236
- )
2237
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2238
- . attach_printable ( "Error getting Value2 for locker" ) ?;
2239
-
2240
- let value1 = vault:: VaultPaymentMethod :: Card ( value1) ;
2241
- let value2 = vault:: VaultPaymentMethod :: Card ( value2) ;
2242
-
2243
- let value1 = utils:: Encode :: < vault:: VaultPaymentMethod > :: encode_to_string_of_json ( & value1)
2244
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2245
- . attach_printable ( "Wrapped value1 construction failed when saving card to locker" ) ?;
2246
-
2247
- let value2 = utils:: Encode :: < vault:: VaultPaymentMethod > :: encode_to_string_of_json ( & value2)
2248
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2249
- . attach_printable ( "Wrapped value2 construction failed when saving card to locker" ) ?;
2250
-
2251
- let db_value = vault:: MockTokenizeDBValue { value1, value2 } ;
2252
-
2253
- let value_string =
2254
- utils:: Encode :: < vault:: MockTokenizeDBValue > :: encode_to_string_of_json ( & db_value)
2255
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2256
- . attach_printable (
2257
- "Mock tokenize value construction failed when saving card to locker" ,
2258
- ) ?;
2259
-
2260
- let db = & * state. store ;
2261
-
2262
- let already_present = db. find_config_by_key ( payment_token) . await ;
2263
-
2264
- if already_present. is_err ( ) {
2265
- let config = storage:: ConfigNew {
2266
- key : payment_token. to_string ( ) ,
2267
- config : value_string,
2268
- } ;
2269
-
2270
- db. insert_config ( config)
2271
- . await
2272
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2273
- . attach_printable ( "Mock tokenization save to db failed" ) ?;
2274
- } else {
2275
- let config_update = storage:: ConfigUpdate :: Update {
2276
- config : Some ( value_string) ,
2277
- } ;
2278
-
2279
- db. update_config_by_key ( payment_token, config_update)
2280
- . await
2281
- . change_context ( errors:: ApiErrorResponse :: InternalServerError )
2282
- . attach_printable ( "Mock tokenization db update failed" ) ?;
2283
- }
2284
-
2285
- Ok ( card)
2286
- }
2287
- }
2288
-
2289
- #[ cfg( feature = "basilisk" ) ]
2290
- impl BasiliskCardSupport {
2204
+ impl TempLockerCardSupport {
2291
2205
#[ instrument( skip_all) ]
2292
- async fn create_payment_method_data_in_locker (
2206
+ async fn create_payment_method_data_in_temp_locker (
2293
2207
state : & routes:: AppState ,
2294
2208
payment_token : & str ,
2295
2209
card : api:: CardDetailFromLocker ,
2296
2210
pm : & storage:: PaymentMethod ,
2211
+ merchant_key_store : & domain:: MerchantKeyStore ,
2297
2212
) -> errors:: RouterResult < api:: CardDetailFromLocker > {
2298
2213
let card_number = card. card_number . clone ( ) . get_required_value ( "card_number" ) ?;
2299
2214
let card_exp_month = card
@@ -2343,8 +2258,14 @@ impl BasiliskCardSupport {
2343
2258
. change_context ( errors:: ApiErrorResponse :: InternalServerError )
2344
2259
. attach_printable ( "Wrapped value2 construction failed when saving card to locker" ) ?;
2345
2260
2346
- let lookup_key =
2347
- vault:: create_tokenize ( state, value1, Some ( value2) , payment_token. to_string ( ) ) . await ?;
2261
+ let lookup_key = vault:: create_tokenize (
2262
+ state,
2263
+ value1,
2264
+ Some ( value2) ,
2265
+ payment_token. to_string ( ) ,
2266
+ merchant_key_store. key . get_inner ( ) ,
2267
+ )
2268
+ . await ?;
2348
2269
vault:: add_delete_tokenized_data_task (
2349
2270
& * state. store ,
2350
2271
& lookup_key,
0 commit comments