{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the types generated from the schema PaymentMethod
module StripeAPI.Types.PaymentMethod where

import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.BillingDetails
import {-# SOURCE #-} StripeAPI.Types.Customer
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodAcssDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodAuBecsDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodBacsDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodBoleto
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCard
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodEps
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodFpx
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodIdeal
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodP24
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodSepaDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodSofort
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.payment_method@ in the specification.
--
-- PaymentMethod objects represent your customer\'s payment instruments.
-- They can be used with [PaymentIntents](https:\/\/stripe.com\/docs\/payments\/payment-intents) to collect payments or saved to
-- Customer objects to store instrument details for future payments.
--
-- Related guides: [Payment Methods](https:\/\/stripe.com\/docs\/payments\/payment-methods) and [More Payment Scenarios](https:\/\/stripe.com\/docs\/payments\/more-payment-scenarios).
data PaymentMethod = PaymentMethod
  { -- | acss_debit:
    PaymentMethod -> Maybe PaymentMethodAcssDebit
paymentMethodAcssDebit :: (GHC.Maybe.Maybe PaymentMethodAcssDebit),
    -- | afterpay_clearpay:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAfterpayClearpay :: (GHC.Maybe.Maybe PaymentMethodAfterpayClearpay),
    -- | alipay:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAlipay :: (GHC.Maybe.Maybe PaymentFlowsPrivatePaymentMethodsAlipay),
    -- | au_becs_debit:
    PaymentMethod -> Maybe PaymentMethodAuBecsDebit
paymentMethodAuBecsDebit :: (GHC.Maybe.Maybe PaymentMethodAuBecsDebit),
    -- | bacs_debit:
    PaymentMethod -> Maybe PaymentMethodBacsDebit
paymentMethodBacsDebit :: (GHC.Maybe.Maybe PaymentMethodBacsDebit),
    -- | bancontact:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodBancontact :: (GHC.Maybe.Maybe PaymentMethodBancontact),
    -- | billing_details:
    PaymentMethod -> BillingDetails
paymentMethodBillingDetails :: BillingDetails,
    -- | boleto:
    PaymentMethod -> Maybe PaymentMethodBoleto
paymentMethodBoleto :: (GHC.Maybe.Maybe PaymentMethodBoleto),
    -- | card:
    PaymentMethod -> Maybe PaymentMethodCard
paymentMethodCard :: (GHC.Maybe.Maybe PaymentMethodCard),
    -- | card_present:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodCardPresent :: (GHC.Maybe.Maybe PaymentMethodCardPresent),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    PaymentMethod -> Int
paymentMethodCreated :: GHC.Types.Int,
    -- | customer: The ID of the Customer to which this PaymentMethod is saved. This will not be set when the PaymentMethod has not been saved to a Customer.
    PaymentMethod -> Maybe PaymentMethodCustomer'Variants
paymentMethodCustomer :: (GHC.Maybe.Maybe PaymentMethodCustomer'Variants),
    -- | eps:
    PaymentMethod -> Maybe PaymentMethodEps
paymentMethodEps :: (GHC.Maybe.Maybe PaymentMethodEps),
    -- | fpx:
    PaymentMethod -> Maybe PaymentMethodFpx
paymentMethodFpx :: (GHC.Maybe.Maybe PaymentMethodFpx),
    -- | giropay:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGiropay :: (GHC.Maybe.Maybe PaymentMethodGiropay),
    -- | grabpay:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGrabpay :: (GHC.Maybe.Maybe PaymentMethodGrabpay),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethod -> Text
paymentMethodId :: Data.Text.Internal.Text,
    -- | ideal:
    PaymentMethod -> Maybe PaymentMethodIdeal
paymentMethodIdeal :: (GHC.Maybe.Maybe PaymentMethodIdeal),
    -- | interac_present:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodInteracPresent :: (GHC.Maybe.Maybe PaymentMethodInteracPresent),
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    PaymentMethod -> Bool
paymentMethodLivemode :: GHC.Types.Bool,
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | oxxo:
    PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodOxxo :: (GHC.Maybe.Maybe PaymentMethodOxxo),
    -- | p24:
    PaymentMethod -> Maybe PaymentMethodP24
paymentMethodP24 :: (GHC.Maybe.Maybe PaymentMethodP24),
    -- | sepa_debit:
    PaymentMethod -> Maybe PaymentMethodSepaDebit
paymentMethodSepaDebit :: (GHC.Maybe.Maybe PaymentMethodSepaDebit),
    -- | sofort:
    PaymentMethod -> Maybe PaymentMethodSofort
paymentMethodSofort :: (GHC.Maybe.Maybe PaymentMethodSofort),
    -- | type: The type of the PaymentMethod. An additional hash is included on the PaymentMethod with a name matching this value. It contains additional information specific to the PaymentMethod type.
    PaymentMethod -> PaymentMethodType'
paymentMethodType :: PaymentMethodType'
  }
  deriving
    ( Int -> PaymentMethod -> ShowS
[PaymentMethod] -> ShowS
PaymentMethod -> String
(Int -> PaymentMethod -> ShowS)
-> (PaymentMethod -> String)
-> ([PaymentMethod] -> ShowS)
-> Show PaymentMethod
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethod] -> ShowS
$cshowList :: [PaymentMethod] -> ShowS
show :: PaymentMethod -> String
$cshow :: PaymentMethod -> String
showsPrec :: Int -> PaymentMethod -> ShowS
$cshowsPrec :: Int -> PaymentMethod -> ShowS
GHC.Show.Show,
      PaymentMethod -> PaymentMethod -> Bool
(PaymentMethod -> PaymentMethod -> Bool)
-> (PaymentMethod -> PaymentMethod -> Bool) -> Eq PaymentMethod
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethod -> PaymentMethod -> Bool
$c/= :: PaymentMethod -> PaymentMethod -> Bool
== :: PaymentMethod -> PaymentMethod -> Bool
$c== :: PaymentMethod -> PaymentMethod -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethod where
  toJSON :: PaymentMethod -> Value
toJSON PaymentMethod
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"acss_debit" Text -> Maybe PaymentMethodAcssDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAcssDebit
paymentMethodAcssDebit PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"afterpay_clearpay" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAfterpayClearpay PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"alipay" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAlipay PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"au_becs_debit" Text -> Maybe PaymentMethodAuBecsDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAuBecsDebit
paymentMethodAuBecsDebit PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bacs_debit" Text -> Maybe PaymentMethodBacsDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodBacsDebit
paymentMethodBacsDebit PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bancontact" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodBancontact PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_details" Text -> BillingDetails -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> BillingDetails
paymentMethodBillingDetails PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"boleto" Text -> Maybe PaymentMethodBoleto -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodBoleto
paymentMethodBoleto PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text -> Maybe PaymentMethodCard -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodCard
paymentMethodCard PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card_present" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodCardPresent PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Int
paymentMethodCreated PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Maybe PaymentMethodCustomer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodCustomer'Variants
paymentMethodCustomer PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"eps" Text -> Maybe PaymentMethodEps -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodEps
paymentMethodEps PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fpx" Text -> Maybe PaymentMethodFpx -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodFpx
paymentMethodFpx PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"giropay" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGiropay PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"grabpay" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGrabpay PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Text
paymentMethodId PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"ideal" Text -> Maybe PaymentMethodIdeal -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodIdeal
paymentMethodIdeal PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"interac_present" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodInteracPresent PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Bool
paymentMethodLivemode PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodMetadata PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"oxxo" Text -> Maybe PaymentMethodAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodOxxo PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"p24" Text -> Maybe PaymentMethodP24 -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodP24
paymentMethodP24 PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sepa_debit" Text -> Maybe PaymentMethodSepaDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodSepaDebit
paymentMethodSepaDebit PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sofort" Text -> Maybe PaymentMethodSofort -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodSofort
paymentMethodSofort PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> PaymentMethodType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> PaymentMethodType'
paymentMethodType PaymentMethod
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"payment_method" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PaymentMethod -> Encoding
toEncoding PaymentMethod
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"acss_debit" Text -> Maybe PaymentMethodAcssDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAcssDebit
paymentMethodAcssDebit PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"afterpay_clearpay" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAfterpayClearpay PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"alipay" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodAlipay PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"au_becs_debit" Text -> Maybe PaymentMethodAuBecsDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAuBecsDebit
paymentMethodAuBecsDebit PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bacs_debit" Text -> Maybe PaymentMethodBacsDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodBacsDebit
paymentMethodBacsDebit PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bancontact" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodBancontact PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_details" Text -> BillingDetails -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> BillingDetails
paymentMethodBillingDetails PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"boleto" Text -> Maybe PaymentMethodBoleto -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodBoleto
paymentMethodBoleto PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text -> Maybe PaymentMethodCard -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodCard
paymentMethodCard PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card_present" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodCardPresent PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Int
paymentMethodCreated PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Maybe PaymentMethodCustomer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodCustomer'Variants
paymentMethodCustomer PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"eps" Text -> Maybe PaymentMethodEps -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodEps
paymentMethodEps PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fpx" Text -> Maybe PaymentMethodFpx -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodFpx
paymentMethodFpx PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"giropay" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGiropay PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"grabpay" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodGrabpay PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Text
paymentMethodId PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"ideal" Text -> Maybe PaymentMethodIdeal -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodIdeal
paymentMethodIdeal PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"interac_present" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodInteracPresent PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Bool
paymentMethodLivemode PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodMetadata PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"oxxo" Text -> Maybe PaymentMethodAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodAfterpayClearpay
paymentMethodOxxo PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"p24" Text -> Maybe PaymentMethodP24 -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodP24
paymentMethodP24 PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"sepa_debit" Text -> Maybe PaymentMethodSepaDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodSepaDebit
paymentMethodSepaDebit PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"sofort" Text -> Maybe PaymentMethodSofort -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> Maybe PaymentMethodSofort
paymentMethodSofort PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"type" Text -> PaymentMethodType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethod -> PaymentMethodType'
paymentMethodType PaymentMethod
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"payment_method")))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethod where
  parseJSON :: Value -> Parser PaymentMethod
parseJSON = String
-> (PaymentMethodAfterpayClearpay -> Parser PaymentMethod)
-> Value
-> Parser PaymentMethod
forall a.
String
-> (PaymentMethodAfterpayClearpay -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PaymentMethod" (\PaymentMethodAfterpayClearpay
obj -> ((((((((((((((((((((((((((Maybe PaymentMethodAcssDebit
 -> Maybe PaymentMethodAfterpayClearpay
 -> Maybe PaymentMethodAfterpayClearpay
 -> Maybe PaymentMethodAuBecsDebit
 -> Maybe PaymentMethodBacsDebit
 -> Maybe PaymentMethodAfterpayClearpay
 -> BillingDetails
 -> Maybe PaymentMethodBoleto
 -> Maybe PaymentMethodCard
 -> Maybe PaymentMethodAfterpayClearpay
 -> Int
 -> Maybe PaymentMethodCustomer'Variants
 -> Maybe PaymentMethodEps
 -> Maybe PaymentMethodFpx
 -> Maybe PaymentMethodAfterpayClearpay
 -> Maybe PaymentMethodAfterpayClearpay
 -> Text
 -> Maybe PaymentMethodIdeal
 -> Maybe PaymentMethodAfterpayClearpay
 -> Bool
 -> Maybe PaymentMethodAfterpayClearpay
 -> Maybe PaymentMethodAfterpayClearpay
 -> Maybe PaymentMethodP24
 -> Maybe PaymentMethodSepaDebit
 -> Maybe PaymentMethodSofort
 -> PaymentMethodType'
 -> PaymentMethod)
-> Parser
     (Maybe PaymentMethodAcssDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAuBecsDebit
      -> Maybe PaymentMethodBacsDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe PaymentMethodAcssDebit
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAuBecsDebit
-> Maybe PaymentMethodBacsDebit
-> Maybe PaymentMethodAfterpayClearpay
-> BillingDetails
-> Maybe PaymentMethodBoleto
-> Maybe PaymentMethodCard
-> Maybe PaymentMethodAfterpayClearpay
-> Int
-> Maybe PaymentMethodCustomer'Variants
-> Maybe PaymentMethodEps
-> Maybe PaymentMethodFpx
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Text
-> Maybe PaymentMethodIdeal
-> Maybe PaymentMethodAfterpayClearpay
-> Bool
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodP24
-> Maybe PaymentMethodSepaDebit
-> Maybe PaymentMethodSofort
-> PaymentMethodType'
-> PaymentMethod
PaymentMethod Parser
  (Maybe PaymentMethodAcssDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAuBecsDebit
   -> Maybe PaymentMethodBacsDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAcssDebit)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAuBecsDebit
      -> Maybe PaymentMethodBacsDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAcssDebit)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"acss_debit")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAuBecsDebit
   -> Maybe PaymentMethodBacsDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAuBecsDebit
      -> Maybe PaymentMethodBacsDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"afterpay_clearpay")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAuBecsDebit
   -> Maybe PaymentMethodBacsDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Maybe PaymentMethodAuBecsDebit
      -> Maybe PaymentMethodBacsDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"alipay")) Parser
  (Maybe PaymentMethodAuBecsDebit
   -> Maybe PaymentMethodBacsDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAuBecsDebit)
-> Parser
     (Maybe PaymentMethodBacsDebit
      -> Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAuBecsDebit)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"au_becs_debit")) Parser
  (Maybe PaymentMethodBacsDebit
   -> Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodBacsDebit)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodBacsDebit)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bacs_debit")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (BillingDetails
      -> Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bancontact")) Parser
  (BillingDetails
   -> Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser BillingDetails
-> Parser
     (Maybe PaymentMethodBoleto
      -> Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay -> Text -> Parser BillingDetails
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"billing_details")) Parser
  (Maybe PaymentMethodBoleto
   -> Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodBoleto)
-> Parser
     (Maybe PaymentMethodCard
      -> Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodBoleto)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"boleto")) Parser
  (Maybe PaymentMethodCard
   -> Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodCard)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodCard)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Int
      -> Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card_present")) Parser
  (Int
   -> Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser Int
-> Parser
     (Maybe PaymentMethodCustomer'Variants
      -> Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay -> Text -> Parser Int
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"created")) Parser
  (Maybe PaymentMethodCustomer'Variants
   -> Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodCustomer'Variants)
-> Parser
     (Maybe PaymentMethodEps
      -> Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodCustomer'Variants)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"customer")) Parser
  (Maybe PaymentMethodEps
   -> Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodEps)
-> Parser
     (Maybe PaymentMethodFpx
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodEps)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"eps")) Parser
  (Maybe PaymentMethodFpx
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodFpx)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodFpx)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fpx")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"giropay")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Text
      -> Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"grabpay")) Parser
  (Text
   -> Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser Text
-> Parser
     (Maybe PaymentMethodIdeal
      -> Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay -> Text -> Parser Text
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"id")) Parser
  (Maybe PaymentMethodIdeal
   -> Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodIdeal)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodIdeal)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"ideal")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Bool
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"interac_present")) Parser
  (Bool
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser Bool
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay -> Text -> Parser Bool
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"livemode")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Maybe PaymentMethodAfterpayClearpay
      -> Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe PaymentMethodAfterpayClearpay
   -> Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodAfterpayClearpay)
-> Parser
     (Maybe PaymentMethodP24
      -> Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodAfterpayClearpay)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"oxxo")) Parser
  (Maybe PaymentMethodP24
   -> Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodP24)
-> Parser
     (Maybe PaymentMethodSepaDebit
      -> Maybe PaymentMethodSofort
      -> PaymentMethodType'
      -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodP24)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"p24")) Parser
  (Maybe PaymentMethodSepaDebit
   -> Maybe PaymentMethodSofort
   -> PaymentMethodType'
   -> PaymentMethod)
-> Parser (Maybe PaymentMethodSepaDebit)
-> Parser
     (Maybe PaymentMethodSofort -> PaymentMethodType' -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodSepaDebit)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sepa_debit")) Parser
  (Maybe PaymentMethodSofort -> PaymentMethodType' -> PaymentMethod)
-> Parser (Maybe PaymentMethodSofort)
-> Parser (PaymentMethodType' -> PaymentMethod)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay
-> Text -> Parser (Maybe PaymentMethodSofort)
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sofort")) Parser (PaymentMethodType' -> PaymentMethod)
-> Parser PaymentMethodType' -> Parser PaymentMethod
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (PaymentMethodAfterpayClearpay
obj PaymentMethodAfterpayClearpay -> Text -> Parser PaymentMethodType'
forall a.
FromJSON a =>
PaymentMethodAfterpayClearpay -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"type"))

-- | Create a new 'PaymentMethod' with all required fields.
mkPaymentMethod ::
  -- | 'paymentMethodBillingDetails'
  BillingDetails ->
  -- | 'paymentMethodCreated'
  GHC.Types.Int ->
  -- | 'paymentMethodId'
  Data.Text.Internal.Text ->
  -- | 'paymentMethodLivemode'
  GHC.Types.Bool ->
  -- | 'paymentMethodType'
  PaymentMethodType' ->
  PaymentMethod
mkPaymentMethod :: BillingDetails
-> Int -> Text -> Bool -> PaymentMethodType' -> PaymentMethod
mkPaymentMethod BillingDetails
paymentMethodBillingDetails Int
paymentMethodCreated Text
paymentMethodId Bool
paymentMethodLivemode PaymentMethodType'
paymentMethodType =
  PaymentMethod :: Maybe PaymentMethodAcssDebit
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAuBecsDebit
-> Maybe PaymentMethodBacsDebit
-> Maybe PaymentMethodAfterpayClearpay
-> BillingDetails
-> Maybe PaymentMethodBoleto
-> Maybe PaymentMethodCard
-> Maybe PaymentMethodAfterpayClearpay
-> Int
-> Maybe PaymentMethodCustomer'Variants
-> Maybe PaymentMethodEps
-> Maybe PaymentMethodFpx
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Text
-> Maybe PaymentMethodIdeal
-> Maybe PaymentMethodAfterpayClearpay
-> Bool
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodAfterpayClearpay
-> Maybe PaymentMethodP24
-> Maybe PaymentMethodSepaDebit
-> Maybe PaymentMethodSofort
-> PaymentMethodType'
-> PaymentMethod
PaymentMethod
    { paymentMethodAcssDebit :: Maybe PaymentMethodAcssDebit
paymentMethodAcssDebit = Maybe PaymentMethodAcssDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodAfterpayClearpay :: Maybe PaymentMethodAfterpayClearpay
paymentMethodAfterpayClearpay = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodAlipay :: Maybe PaymentMethodAfterpayClearpay
paymentMethodAlipay = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodAuBecsDebit :: Maybe PaymentMethodAuBecsDebit
paymentMethodAuBecsDebit = Maybe PaymentMethodAuBecsDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodBacsDebit :: Maybe PaymentMethodBacsDebit
paymentMethodBacsDebit = Maybe PaymentMethodBacsDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodBancontact :: Maybe PaymentMethodAfterpayClearpay
paymentMethodBancontact = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodBillingDetails :: BillingDetails
paymentMethodBillingDetails = BillingDetails
paymentMethodBillingDetails,
      paymentMethodBoleto :: Maybe PaymentMethodBoleto
paymentMethodBoleto = Maybe PaymentMethodBoleto
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCard :: Maybe PaymentMethodCard
paymentMethodCard = Maybe PaymentMethodCard
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardPresent :: Maybe PaymentMethodAfterpayClearpay
paymentMethodCardPresent = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCreated :: Int
paymentMethodCreated = Int
paymentMethodCreated,
      paymentMethodCustomer :: Maybe PaymentMethodCustomer'Variants
paymentMethodCustomer = Maybe PaymentMethodCustomer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodEps :: Maybe PaymentMethodEps
paymentMethodEps = Maybe PaymentMethodEps
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodFpx :: Maybe PaymentMethodFpx
paymentMethodFpx = Maybe PaymentMethodFpx
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodGiropay :: Maybe PaymentMethodAfterpayClearpay
paymentMethodGiropay = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodGrabpay :: Maybe PaymentMethodAfterpayClearpay
paymentMethodGrabpay = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodId :: Text
paymentMethodId = Text
paymentMethodId,
      paymentMethodIdeal :: Maybe PaymentMethodIdeal
paymentMethodIdeal = Maybe PaymentMethodIdeal
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodInteracPresent :: Maybe PaymentMethodAfterpayClearpay
paymentMethodInteracPresent = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodLivemode :: Bool
paymentMethodLivemode = Bool
paymentMethodLivemode,
      paymentMethodMetadata :: Maybe PaymentMethodAfterpayClearpay
paymentMethodMetadata = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodOxxo :: Maybe PaymentMethodAfterpayClearpay
paymentMethodOxxo = Maybe PaymentMethodAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodP24 :: Maybe PaymentMethodP24
paymentMethodP24 = Maybe PaymentMethodP24
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodSepaDebit :: Maybe PaymentMethodSepaDebit
paymentMethodSepaDebit = Maybe PaymentMethodSepaDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodSofort :: Maybe PaymentMethodSofort
paymentMethodSofort = Maybe PaymentMethodSofort
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodType :: PaymentMethodType'
paymentMethodType = PaymentMethodType'
paymentMethodType
    }

-- | Defines the oneOf schema located at @components.schemas.payment_method.properties.customer.anyOf@ in the specification.
--
-- The ID of the Customer to which this PaymentMethod is saved. This will not be set when the PaymentMethod has not been saved to a Customer.
data PaymentMethodCustomer'Variants
  = PaymentMethodCustomer'Text Data.Text.Internal.Text
  | PaymentMethodCustomer'Customer Customer
  deriving (Int -> PaymentMethodCustomer'Variants -> ShowS
[PaymentMethodCustomer'Variants] -> ShowS
PaymentMethodCustomer'Variants -> String
(Int -> PaymentMethodCustomer'Variants -> ShowS)
-> (PaymentMethodCustomer'Variants -> String)
-> ([PaymentMethodCustomer'Variants] -> ShowS)
-> Show PaymentMethodCustomer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethodCustomer'Variants] -> ShowS
$cshowList :: [PaymentMethodCustomer'Variants] -> ShowS
show :: PaymentMethodCustomer'Variants -> String
$cshow :: PaymentMethodCustomer'Variants -> String
showsPrec :: Int -> PaymentMethodCustomer'Variants -> ShowS
$cshowsPrec :: Int -> PaymentMethodCustomer'Variants -> ShowS
GHC.Show.Show, PaymentMethodCustomer'Variants
-> PaymentMethodCustomer'Variants -> Bool
(PaymentMethodCustomer'Variants
 -> PaymentMethodCustomer'Variants -> Bool)
-> (PaymentMethodCustomer'Variants
    -> PaymentMethodCustomer'Variants -> Bool)
-> Eq PaymentMethodCustomer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethodCustomer'Variants
-> PaymentMethodCustomer'Variants -> Bool
$c/= :: PaymentMethodCustomer'Variants
-> PaymentMethodCustomer'Variants -> Bool
== :: PaymentMethodCustomer'Variants
-> PaymentMethodCustomer'Variants -> Bool
$c== :: PaymentMethodCustomer'Variants
-> PaymentMethodCustomer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCustomer'Variants where
  toJSON :: PaymentMethodCustomer'Variants -> Value
toJSON (PaymentMethodCustomer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (PaymentMethodCustomer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCustomer'Variants where
  parseJSON :: Value -> Parser PaymentMethodCustomer'Variants
parseJSON Value
val = case (Text -> PaymentMethodCustomer'Variants
PaymentMethodCustomer'Text (Text -> PaymentMethodCustomer'Variants)
-> Result Text -> Result PaymentMethodCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PaymentMethodCustomer'Variants
-> Result PaymentMethodCustomer'Variants
-> Result PaymentMethodCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Customer -> PaymentMethodCustomer'Variants
PaymentMethodCustomer'Customer (Customer -> PaymentMethodCustomer'Variants)
-> Result Customer -> Result PaymentMethodCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Customer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PaymentMethodCustomer'Variants
-> Result PaymentMethodCustomer'Variants
-> Result PaymentMethodCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result PaymentMethodCustomer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success PaymentMethodCustomer'Variants
a -> PaymentMethodCustomer'Variants
-> Parser PaymentMethodCustomer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PaymentMethodCustomer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser PaymentMethodCustomer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @components.schemas.payment_method.properties.type@ in the specification.
--
-- The type of the PaymentMethod. An additional hash is included on the PaymentMethod with a name matching this value. It contains additional information specific to the PaymentMethod type.
data PaymentMethodType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PaymentMethodType'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PaymentMethodType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"acss_debit"@
    PaymentMethodType'EnumAcssDebit
  | -- | Represents the JSON value @"afterpay_clearpay"@
    PaymentMethodType'EnumAfterpayClearpay
  | -- | Represents the JSON value @"alipay"@
    PaymentMethodType'EnumAlipay
  | -- | Represents the JSON value @"au_becs_debit"@
    PaymentMethodType'EnumAuBecsDebit
  | -- | Represents the JSON value @"bacs_debit"@
    PaymentMethodType'EnumBacsDebit
  | -- | Represents the JSON value @"bancontact"@
    PaymentMethodType'EnumBancontact
  | -- | Represents the JSON value @"boleto"@
    PaymentMethodType'EnumBoleto
  | -- | Represents the JSON value @"card"@
    PaymentMethodType'EnumCard
  | -- | Represents the JSON value @"card_present"@
    PaymentMethodType'EnumCardPresent
  | -- | Represents the JSON value @"eps"@
    PaymentMethodType'EnumEps
  | -- | Represents the JSON value @"fpx"@
    PaymentMethodType'EnumFpx
  | -- | Represents the JSON value @"giropay"@
    PaymentMethodType'EnumGiropay
  | -- | Represents the JSON value @"grabpay"@
    PaymentMethodType'EnumGrabpay
  | -- | Represents the JSON value @"ideal"@
    PaymentMethodType'EnumIdeal
  | -- | Represents the JSON value @"interac_present"@
    PaymentMethodType'EnumInteracPresent
  | -- | Represents the JSON value @"oxxo"@
    PaymentMethodType'EnumOxxo
  | -- | Represents the JSON value @"p24"@
    PaymentMethodType'EnumP24
  | -- | Represents the JSON value @"sepa_debit"@
    PaymentMethodType'EnumSepaDebit
  | -- | Represents the JSON value @"sofort"@
    PaymentMethodType'EnumSofort
  deriving (Int -> PaymentMethodType' -> ShowS
[PaymentMethodType'] -> ShowS
PaymentMethodType' -> String
(Int -> PaymentMethodType' -> ShowS)
-> (PaymentMethodType' -> String)
-> ([PaymentMethodType'] -> ShowS)
-> Show PaymentMethodType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethodType'] -> ShowS
$cshowList :: [PaymentMethodType'] -> ShowS
show :: PaymentMethodType' -> String
$cshow :: PaymentMethodType' -> String
showsPrec :: Int -> PaymentMethodType' -> ShowS
$cshowsPrec :: Int -> PaymentMethodType' -> ShowS
GHC.Show.Show, PaymentMethodType' -> PaymentMethodType' -> Bool
(PaymentMethodType' -> PaymentMethodType' -> Bool)
-> (PaymentMethodType' -> PaymentMethodType' -> Bool)
-> Eq PaymentMethodType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethodType' -> PaymentMethodType' -> Bool
$c/= :: PaymentMethodType' -> PaymentMethodType' -> Bool
== :: PaymentMethodType' -> PaymentMethodType' -> Bool
$c== :: PaymentMethodType' -> PaymentMethodType' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodType' where
  toJSON :: PaymentMethodType' -> Value
toJSON (PaymentMethodType'Other Value
val) = Value
val
  toJSON (PaymentMethodType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PaymentMethodType'
PaymentMethodType'EnumAcssDebit) = Value
"acss_debit"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumAfterpayClearpay) = Value
"afterpay_clearpay"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumAlipay) = Value
"alipay"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumAuBecsDebit) = Value
"au_becs_debit"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumBacsDebit) = Value
"bacs_debit"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumBancontact) = Value
"bancontact"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumBoleto) = Value
"boleto"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumCard) = Value
"card"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumCardPresent) = Value
"card_present"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumEps) = Value
"eps"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumFpx) = Value
"fpx"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumGiropay) = Value
"giropay"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumGrabpay) = Value
"grabpay"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumIdeal) = Value
"ideal"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumInteracPresent) = Value
"interac_present"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumOxxo) = Value
"oxxo"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumP24) = Value
"p24"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumSepaDebit) = Value
"sepa_debit"
  toJSON (PaymentMethodType'
PaymentMethodType'EnumSofort) = Value
"sofort"

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodType' where
  parseJSON :: Value -> Parser PaymentMethodType'
parseJSON Value
val =
    PaymentMethodType' -> Parser PaymentMethodType'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"acss_debit" -> PaymentMethodType'
PaymentMethodType'EnumAcssDebit
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"afterpay_clearpay" -> PaymentMethodType'
PaymentMethodType'EnumAfterpayClearpay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"alipay" -> PaymentMethodType'
PaymentMethodType'EnumAlipay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"au_becs_debit" -> PaymentMethodType'
PaymentMethodType'EnumAuBecsDebit
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"bacs_debit" -> PaymentMethodType'
PaymentMethodType'EnumBacsDebit
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"bancontact" -> PaymentMethodType'
PaymentMethodType'EnumBancontact
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"boleto" -> PaymentMethodType'
PaymentMethodType'EnumBoleto
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"card" -> PaymentMethodType'
PaymentMethodType'EnumCard
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"card_present" -> PaymentMethodType'
PaymentMethodType'EnumCardPresent
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"eps" -> PaymentMethodType'
PaymentMethodType'EnumEps
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"fpx" -> PaymentMethodType'
PaymentMethodType'EnumFpx
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"giropay" -> PaymentMethodType'
PaymentMethodType'EnumGiropay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"grabpay" -> PaymentMethodType'
PaymentMethodType'EnumGrabpay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"ideal" -> PaymentMethodType'
PaymentMethodType'EnumIdeal
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"interac_present" -> PaymentMethodType'
PaymentMethodType'EnumInteracPresent
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"oxxo" -> PaymentMethodType'
PaymentMethodType'EnumOxxo
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"p24" -> PaymentMethodType'
PaymentMethodType'EnumP24
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"sepa_debit" -> PaymentMethodType'
PaymentMethodType'EnumSepaDebit
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"sofort" -> PaymentMethodType'
PaymentMethodType'EnumSofort
            | Bool
GHC.Base.otherwise -> Value -> PaymentMethodType'
PaymentMethodType'Other Value
val
      )