module PayPal.Adaptive.Lookup where
import Control.Applicative
import Data.Aeson
import PayPal.Adaptive.Core
data LookupPayment a where
LookupTrID :: TransactionId -> LookupPayment TransactionId
LookupPayKey :: PayKey -> LookupPayment PayKey
instance ToJSON (LookupPayment a) where
toJSON (LookupTrID (TransactionId p)) =
object [ "transactionId" .= p
, "requestEnvelope" .= requestEnvelope
]
toJSON (LookupPayKey (PayKey p)) =
object [ "payKey" .= p
, "requestEnvelope" .= requestEnvelope
]
req :: Client -> LookupPayment a -> IO (Either AdaptiveErr PayResp)
req c l = (>>= ppDecode) <$> ppPost c "PaymentDetails" l