diff --git a/src/orca-loader/Hyper.res b/src/orca-loader/Hyper.res index 30bb77a2..b3113774 100644 --- a/src/orca-loader/Hyper.res +++ b/src/orca-loader/Hyper.res @@ -614,6 +614,7 @@ let make = (publishableKey, options: option, analyticsInfo: option) => { +let make = ( + options, + ~clientSecret, + ~publishableKey, + ~logger: option, + ~ephemeralKey, +) => { let logger = logger->Option.getOr(OrcaLogger.defaultLoggerConfig) let switchToCustomPod = GlobalVars.isInteg && @@ -20,6 +26,13 @@ let make = (options, ~clientSecret, ~publishableKey, ~logger: option + PaymentSessionMethods.getPaymentManagementMethods( + ~ephemeralKey, + ~logger, + ~switchToCustomPod, + ~endpoint, + ), } defaultInitPaymentSession diff --git a/src/orca-loader/PaymentSessionMethods.res b/src/orca-loader/PaymentSessionMethods.res index a0e92045..097df06f 100644 --- a/src/orca-loader/PaymentSessionMethods.res +++ b/src/orca-loader/PaymentSessionMethods.res @@ -1,3 +1,7 @@ +open Promise +open Types +open Utils + let getCustomerSavedPaymentMethods = ( ~clientSecret, ~publishableKey, @@ -5,9 +9,7 @@ let getCustomerSavedPaymentMethods = ( ~logger, ~switchToCustomPod, ) => { - open Promise - open Types - open Utils + // open Promise open ApplePayTypes open GooglePayType let applePaySessionRef = ref(Nullable.null) @@ -463,3 +465,65 @@ let getCustomerSavedPaymentMethods = ( handleFailureResponse(~message=exceptionMessage, ~errorType="server_error")->resolve }) } + +let getPaymentManagementMethods = (~ephemeralKey, ~logger, ~switchToCustomPod, ~endpoint) => { + let getSavedPaymentManagementMethodsList = _ => { + PaymentHelpers.fetchSavedPaymentMethodList( + ~ephemeralKey, + ~optLogger=Some(logger), + ~switchToCustomPod=false, + ~endpoint, + ) + ->then(response => { + response->resolve + }) + ->catch(err => { + let exceptionMessage = err->formatException->JSON.stringify + let updatedCustomerDetails = + [ + ( + "error", + [ + ("type", "server_error"->JSON.Encode.string), + ("message", exceptionMessage->JSON.Encode.string), + ]->getJsonFromArrayOfJson, + ), + ]->getJsonFromArrayOfJson + updatedCustomerDetails->resolve + }) + } + + let deleteSavedPaymentMethod = paymentMethodId => { + PaymentHelpers.deletePaymentMethod( + ~ephemeralKey, + ~paymentMethodId={paymentMethodId->JSON.Decode.string->Option.getOr("")}, + ~logger, + ~switchToCustomPod, + ) + ->then(response => { + response->resolve + }) + ->catch(err => { + let exceptionMessage = err->formatException->JSON.stringify + let updatedCustomerDetails = + [ + ( + "error", + [ + ("type", "server_error"->JSON.Encode.string), + ("message", exceptionMessage->JSON.Encode.string), + ]->getJsonFromArrayOfJson, + ), + ]->getJsonFromArrayOfJson + + updatedCustomerDetails->resolve + }) + } + + { + getSavedPaymentManagementMethodsList, + deleteSavedPaymentMethod, + } + ->Identity.anyTypeToJson + ->resolve +} diff --git a/src/orca-loader/Types.res b/src/orca-loader/Types.res index 4a2774a2..2b22ed3e 100644 --- a/src/orca-loader/Types.res +++ b/src/orca-loader/Types.res @@ -46,7 +46,15 @@ type getCustomerSavedPaymentMethods = { confirmWithLastUsedPaymentMethod: JSON.t => Promise.t, } -type initPaymentSession = {getCustomerSavedPaymentMethods: unit => Promise.t} +type getPaymentManagementMethods = { + getSavedPaymentManagementMethodsList: unit => Promise.t, + deleteSavedPaymentMethod: JSON.t => Promise.t, +} + +type initPaymentSession = { + getCustomerSavedPaymentMethods: unit => Promise.t, + getPaymentManagementMethods: unit => Promise.t, +} type confirmParams = {return_url: string} @@ -125,6 +133,14 @@ let getCustomerDefaultSavedPaymentMethodData = () => { JSON.Encode.null } +let getSavedPaymentManagementMethodsList = () => { + JSON.Encode.null +} + +let deleteSavedPaymentMethod = () => { + JSON.Encode.null +} + let getCustomerLastUsedPaymentMethodData = () => { JSON.Encode.null } @@ -146,8 +162,13 @@ let defaultGetCustomerSavedPaymentMethods = () => { Promise.resolve(JSON.Encode.null) } +let defaultGetPaymentManagementMethods = () => { + Promise.resolve(JSON.Encode.null) +} + let defaultInitPaymentSession: initPaymentSession = { getCustomerSavedPaymentMethods: defaultGetCustomerSavedPaymentMethods, + getPaymentManagementMethods: defaultGetPaymentManagementMethods, } let defaultHyperInstance = {