diff --git a/src/Utilities/APIHelpers/APIUtils.res b/src/Utilities/APIHelpers/APIUtils.res index 03666c905..71066eabd 100644 --- a/src/Utilities/APIHelpers/APIUtils.res +++ b/src/Utilities/APIHelpers/APIUtils.res @@ -13,7 +13,9 @@ type apiCallV1 = | RetrieveStatus | ConfirmPayout -type apiCallV2 = FetchSessionsV2 +type apiCallV2 = + | FetchSessionsV2 + | DeletePaymentMethodV2 type apiCall = | V1(apiCallV1) @@ -27,6 +29,7 @@ type apiParams = { forceSync: option, pollId: option, payoutId: option, + pmSessionId: option, } let generateApiUrl = (apiCallType: apiCall, ~params: apiParams) => { @@ -38,6 +41,7 @@ let generateApiUrl = (apiCallType: apiCall, ~params: apiParams) => { forceSync, pollId, payoutId, + pmSessionId, } = params let clientSecretVal = clientSecret->Option.getOr("") @@ -46,6 +50,7 @@ let generateApiUrl = (apiCallType: apiCall, ~params: apiParams) => { let paymentMethodIdVal = paymentMethodId->Option.getOr("") let pollIdVal = pollId->Option.getOr("") let payoutIdVal = payoutId->Option.getOr("") + let pmSessionIdVal = pmSessionId->Option.getOr("") let baseUrl = customBackendBaseUrl->Option.getOr( @@ -118,6 +123,7 @@ let generateApiUrl = (apiCallType: apiCall, ~params: apiParams) => { | V2(inner) => switch inner { | FetchSessionsV2 => `v2/payments/${paymentIntentID}/create-external-sdk-tokens` + | DeletePaymentMethodV2 => `v2/payment-method-sessions/${pmSessionIdVal}` } } diff --git a/src/Utilities/PaymentHelpers.res b/src/Utilities/PaymentHelpers.res index 22ca3d4f1..e211ae924 100644 --- a/src/Utilities/PaymentHelpers.res +++ b/src/Utilities/PaymentHelpers.res @@ -37,6 +37,7 @@ let retrievePaymentIntent = async ( forceSync: isForceSync ? Some("true") : None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -73,6 +74,7 @@ let threeDsAuth = async (~clientSecret, ~logger, ~threeDsMethodComp, ~headers) = forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) let broswerInfo = BrowserSpec.broswerInfo @@ -175,6 +177,7 @@ let retrieveStatus = async (~publishableKey, ~customPodUri, pollID, logger) => { forceSync: None, pollId: Some(pollID), payoutId: None, + pmSessionId: None, }, ) @@ -1372,6 +1375,7 @@ let fetchSessions = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1413,6 +1417,7 @@ let confirmPayout = async ( forceSync: None, pollId: None, payoutId: Some(payoutId), + pmSessionId: None, }, ) @@ -1456,6 +1461,7 @@ let createPaymentMethod = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1498,6 +1504,7 @@ let fetchPaymentMethodList = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1535,6 +1542,7 @@ let fetchCustomerPaymentMethodList = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1642,6 +1650,7 @@ let callAuthLink = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1706,6 +1715,7 @@ let callAuthExchange = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1779,6 +1789,7 @@ let fetchSavedPaymentMethodList = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1810,6 +1821,7 @@ let deletePaymentMethod = async (~ephemeralKey, ~paymentMethodId, ~logger, ~cust forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) @@ -1848,6 +1860,7 @@ let calculateTax = async ( forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, ) let onSuccess = data => data diff --git a/src/Utilities/PaymentHelpersV2.res b/src/Utilities/PaymentHelpersV2.res index 2a6b96e1f..3443df9f1 100644 --- a/src/Utilities/PaymentHelpersV2.res +++ b/src/Utilities/PaymentHelpersV2.res @@ -299,46 +299,54 @@ let fetchPaymentManagementList = ( }) } -let deletePaymentMethodV2 = ( +let deletePaymentMethodV2 = async( ~pmClientSecret, ~publishableKey, ~profileId, ~paymentMethodId, ~pmSessionId, - ~logger as _, + ~logger, ~customPodUri, ) => { - open Promise - let endpoint = ApiEndpoint.getApiEndPoint() let headers = [ ("x-profile-id", `${profileId}`), ("Authorization", `publishable-key=${publishableKey},client-secret=${pmClientSecret}`), ] - let uri = `${endpoint}/v2/payment-method-sessions/${pmSessionId}` - fetchApi( + + let uri = APIUtils.generateApiUrl( + V2(DeletePaymentMethodV2), + ~params={ + customBackendBaseUrl: None, + clientSecret: None, + publishableKey: Some(publishableKey), + paymentMethodId: None, + forceSync: None, + pollId: None, + payoutId: None, + pmSessionId: Some(pmSessionId), + }, + ) + + let bodyStr = [("payment_method_id", paymentMethodId->JSON.Encode.string)] + ->getJsonFromArrayOfJson + ->JSON.stringify + + let onSuccess = data => data + + let onFailure = _ => JSON.Encode.null + + await fetchApiWithLogging( uri, + ~eventName=DELETE_PAYMENT_METHODS_CALL, + ~logger, ~method=#DELETE, + ~bodyStr, ~headers=headers->ApiEndpoint.addCustomPodHeader(~customPodUri), - ~bodyStr=[("payment_method_id", paymentMethodId->JSON.Encode.string)] - ->getJsonFromArrayOfJson - ->JSON.stringify, + ~customPodUri=Some(customPodUri), + ~publishableKey=Some(publishableKey), + ~onSuccess, + ~onFailure, ) - ->then(resp => { - if !(resp->Fetch.Response.ok) { - resp - ->Fetch.Response.json - ->then(_ => { - JSON.Encode.null->resolve - }) - } else { - Fetch.Response.json(resp) - } - }) - ->catch(err => { - let exceptionMessage = err->formatException - Console.error2("Error ", exceptionMessage) - JSON.Encode.null->resolve - }) } let updatePaymentMethod = ( diff --git a/src/hyper-loader/Hyper.res b/src/hyper-loader/Hyper.res index 5a5a45800..4d2c7113e 100644 --- a/src/hyper-loader/Hyper.res +++ b/src/hyper-loader/Hyper.res @@ -341,6 +341,7 @@ let make = (keys, options: option, analyticsInfo: option) => { forceSync: None, pollId: None, payoutId: None, + pmSessionId: None, }, )