Skip to content
3 changes: 2 additions & 1 deletion src/App.res
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ let make = () => {
let clientSecret = CardUtils.getQueryParamsDictforKey(url.search, "clientSecret")
let sessionId = CardUtils.getQueryParamsDictforKey(url.search, "sessionId")
let publishableKey = CardUtils.getQueryParamsDictforKey(url.search, "publishableKey")
<PreMountLoader publishableKey sessionId clientSecret />
let endpoint = CardUtils.getQueryParamsDictforKey(url.search, "endpoint")
<PreMountLoader publishableKey sessionId clientSecret endpoint />
}
| "achBankTransfer"
| "bacsBankTransfer"
Expand Down
13 changes: 13 additions & 0 deletions src/LoaderController.res
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,19 @@ let make = (~children, ~paymentMode, ~setIntegrateErrorError, ~logger, ~initTime
dict->getJsonObjectFromDict("isReadyToPay")->JSON.Decode.bool->Option.getOr(false)
)
}
if (
dict->getDictIsSome("customBackendUrlVal") &&
dict
->getString("customBackendUrlVal", "")
->String.length > 0
) {
if dict->getDictIsSome("endpoint") {
switch dict->getString("endpoint", "") {
| "" => ()
| endpoint => ApiEndpoint.setApiEndPoint(endpoint)
}
}
}
if dict->getDictIsSome("paymentMethodList") {
let paymentMethodList = dict->getJsonObjectFromDict("paymentMethodList")
let listDict = paymentMethodList->getDictFromJson
Expand Down
7 changes: 4 additions & 3 deletions src/Payments/CardPayment.res
Original file line number Diff line number Diff line change
Expand Up @@ -280,9 +280,10 @@ let make = (
</div>
</div>
<RenderIf
condition={cardError->String.length > 0 ||
cvcError->String.length > 0 ||
expiryError->String.length > 0}>
condition={innerLayout === Compressed &&
(cardError->String.length > 0 ||
cvcError->String.length > 0 ||
expiryError->String.length > 0)}>
<div
className="Error pt-1"
style={ReactDOMStyle.make(
Expand Down
4 changes: 1 addition & 3 deletions src/Payments/PreMountLoader.res
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@react.component
let make = (~sessionId, ~publishableKey, ~clientSecret) => {
let make = (~sessionId, ~publishableKey, ~clientSecret, ~endpoint) => {
open Utils
let (paymentMethodsResponseSent, setPaymentMethodsResponseSent) = React.useState(_ => false)
let (
Expand All @@ -15,8 +15,6 @@ let make = (~sessionId, ~publishableKey, ~clientSecret) => {
(),
)

let endpoint = ApiEndpoint.getApiEndPoint(~publishableKey, ())

let paymentMethodsResponse = React.useMemo0(() =>
PaymentHelpers.fetchPaymentMethodList(
~clientSecret,
Expand Down
27 changes: 14 additions & 13 deletions src/orca-loader/Elements.res
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,16 @@ let make = (
~publishableKey,
~logger: option<OrcaLogger.loggerMake>,
~analyticsMetadata,
~customBackendUrl,
) => {
let applePaySessionRef = ref(Nullable.null)

try {
let iframeRef = []
let logger = logger->Option.getOr(OrcaLogger.defaultLoggerConfig)
let savedPaymentElement = Dict.make()
let localOptions = options->JSON.Decode.object->Option.getOr(Dict.make())
let endpoint = ApiEndpoint.getApiEndPoint(~publishableKey, ())

let appearance =
localOptions->Dict.get("appearance")->Option.getOr(Dict.make()->JSON.Encode.object)
let launchTime = localOptions->getFloat("launchTime", 0.0)
Expand Down Expand Up @@ -67,7 +68,7 @@ let make = (
<iframe
id ="orca-payment-element-iframeRef-${localSelectorString}"
name="orca-payment-element-iframeRef-${localSelectorString}"
src="${ApiEndpoint.sdkDomainUrl}/index.html?fullscreenType=${componentType}&publishableKey=${publishableKey}&clientSecret=${clientSecret}&sessionId=${sdkSessionId}"
src="${ApiEndpoint.sdkDomainUrl}/index.html?fullscreenType=${componentType}&publishableKey=${publishableKey}&clientSecret=${clientSecret}&sessionId=${sdkSessionId}&endpoint=${endpoint}"
allow="*"
name="orca-payment"
></iframe>
Expand Down Expand Up @@ -99,9 +100,9 @@ let make = (
let preMountLoaderIframeCallback = (ev: Types.event) => {
let json = ev.data->Identity.anyTypeToJson
let dict = json->Utils.getDictFromJson
if dict->Dict.get("preMountLoaderIframeMountedCallback")->Belt.Option.isSome {
if dict->Dict.get("preMountLoaderIframeMountedCallback")->Option.isSome {
resolve(true->JSON.Encode.bool)
} else if dict->Dict.get("preMountLoaderIframeUnMount")->Belt.Option.isSome {
} else if dict->Dict.get("preMountLoaderIframeUnMount")->Option.isSome {
unMountPreMountLoaderIframe()
}
}
Expand All @@ -125,16 +126,15 @@ let make = (
->PaymentMethodsRecord.itemToObjMapper,
~paymentMethod="wallet",
~paymentMethodType="apple_pay",
)->Belt.Option.isSome
)->Option.isSome

let isGooglePayPresent =
PaymentMethodsRecord.getPaymentMethodTypeFromList(
~paymentMethodListValue=json
->Utils.getDictFromJson
->PaymentMethodsRecord.itemToObjMapper,
~paymentMethod="wallet",
~paymentMethodType="google_pay",
)->Belt.Option.isSome
let isGooglePayPresent = PaymentMethodsRecord.getPaymentMethodTypeFromList(
~paymentMethodListValue=json
->Utils.getDictFromJson
->PaymentMethodsRecord.itemToObjMapper,
~paymentMethod="wallet",
~paymentMethodType="google_pay",
)->Option.isSome

if isApplePayPresent || isGooglePayPresent {
if (
Expand Down Expand Up @@ -297,6 +297,7 @@ let make = (
("parentURL", "*"->JSON.Encode.string),
("analyticsMetadata", analyticsMetadata),
("launchTime", launchTime->JSON.Encode.float),
("customBackendUrlVal", customBackendUrl->JSON.Encode.string),
]->Dict.fromArray

let wallets = PaymentType.getWallets(newOptions->getDictFromJson, "wallets", logger)
Expand Down
4 changes: 4 additions & 0 deletions src/orca-loader/Hyper.res
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,10 @@ let make = (publishableKey, options: option<JSON.t>, analyticsInfo: option<JSON.
~clientSecret={clientSecretId},
~logger=Some(logger),
~analyticsMetadata,
~customBackendUrl=options
->Option.getOr(JSON.Encode.null)
->getDictFromJson
->getString("customBackendUrl", ""),
)
}
let confirmCardPaymentFn = (
Expand Down