module Web.Stripe.Token
(
createCardToken
, createBankAccountToken
, getCardToken
, getBankAccountToken
, CardNumber (..)
, ExpMonth (..)
, ExpYear (..)
, CVC (..)
, Token (..)
, TokenId (..)
, TokenType (..)
, Country (..)
, RoutingNumber (..)
, AccountNumber (..)
, Account (..)
) where
import Web.Stripe.Client.Internal (Method (GET, POST), Stripe,
StripeRequest (..), callAPI,
getParams, toText, (</>))
import Web.Stripe.Types (Account(..), AccountNumber (..),
CVC (..), CardNumber (..),
Country (..), ExpMonth (..), BankAccount(..),
ExpYear (..), RoutingNumber (..), Card(..),
Token (..), TokenId (..), TokenType(..))
createCardToken
:: CardNumber
-> ExpMonth
-> ExpYear
-> CVC
-> Stripe (Token Card)
createCardToken
(CardNumber number)
(ExpMonth month)
(ExpYear year)
(CVC cvc)
= callAPI request
where request = StripeRequest POST url params
url = "tokens"
params = getParams [
("card[number]", Just number)
, ("card[exp_month]", toText `fmap` Just month)
, ("card[exp_year]", toText `fmap` Just year)
, ("card[cvc]", Just cvc)
]
createBankAccountToken
:: Country
-> RoutingNumber
-> AccountNumber
-> Stripe (Token BankAccount)
createBankAccountToken
(Country country)
(RoutingNumber routingNumber)
(AccountNumber accountNumber)
= callAPI request
where request = StripeRequest POST url params
url = "tokens"
params = getParams [
("bank_account[country]", Just country)
, ("bank_account[routing_number]", Just routingNumber)
, ("bank_account[account_number]", Just accountNumber)
]
getCardToken
:: TokenId
-> Stripe (Token Card)
getCardToken (TokenId token) = callAPI request
where request = StripeRequest GET url params
url = "tokens" </> token
params = []
getBankAccountToken
:: TokenId
-> Stripe (Token BankAccount)
getBankAccountToken (TokenId token) = callAPI request
where request = StripeRequest GET url params
url = "tokens" </> token
params = []