stripe-core-2.0.0: src/Web/Stripe/Dispute.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
-------------------------------------------
-- |
-- Module : Web.Stripe.Dispute
-- Copyright : (c) David Johnson, 2014
-- Maintainer : djohnson.m@gmail.com
-- Stability : experimental
-- Portability : POSIX
--
-- < https:/\/\stripe.com/docs/api#diputes >
--
-- @
-- {-\# LANGUAGE OverloadedStrings \#-}
-- import Web.Stripe
-- import Web.Stripe.Charge
-- import Web.Stripe.Dispute
--
-- main :: IO ()
-- main = do
-- let config = StripeConfig (StripeKey "secret_key")
-- result <- stripe config $ getCharge (ChargeId "charge_id")
-- case result of
-- (Left stripeError) -> print stripeError
-- (Right (Charge { chargeDispute = dispute })) ->
-- case dispute of
-- (Just dispute) -> print dispute
-- Nothing -> print "no dispute on this charge"
-- @
module Web.Stripe.Dispute
( -- * API
UpdateDispute
, updateDispute
, CloseDispute
, closeDispute
-- * Types
, ChargeId (..)
, Dispute (..)
, DisputeReason (..)
, DisputeStatus (..)
, Evidence (..)
, MetaData (..)
) where
import Web.Stripe.StripeRequest (Method (POST),
StripeHasParam, StripeRequest (..),
StripeReturn,
mkStripeRequest)
import Web.Stripe.Util ((</>))
import Web.Stripe.Types (ChargeId (..), Dispute (..),
DisputeReason (..),
DisputeStatus (..),
Evidence (..), MetaData(..))
import Web.Stripe.Types.Util (getChargeId)
------------------------------------------------------------------------------
-- | `Dispute` to be updated
updateDispute
:: ChargeId -- ^ The ID of the Charge being disputed
-> StripeRequest UpdateDispute
updateDispute
chargeId = request
where request = mkStripeRequest POST url params
url = "charges" </> getChargeId chargeId </> "dispute"
params = []
data UpdateDispute
type instance StripeReturn UpdateDispute = Dispute
instance StripeHasParam UpdateDispute Evidence
instance StripeHasParam UpdateDispute MetaData
------------------------------------------------------------------------------
-- | `Dispute` to be closed
closeDispute
:: ChargeId -- ^ The ID of the Charge being disputed
-> StripeRequest CloseDispute
closeDispute
chargeId = request
where request = mkStripeRequest POST url params
url = "charges" </> getChargeId chargeId </> "dispute" </> "close"
params = []
data CloseDispute
type instance StripeReturn CloseDispute = Dispute