packages feed

paypal-api-0.1: example.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import qualified Data.ByteString.Char8 as C
import Network.PayPal.ButtonManager
import Data.Ratio
import Data.Time.Calendar
import Data.Time.LocalTime
import Control.Monad
import Network.HTTP.Enumerator (newManager)

me = Credentials {
        crUsername = "your_username_here",
        crPassword = "your_password_here",
        crSecurity = Signature "your_signature_here",
        crVersion = "56.0"
    }

main :: IO ()
main = do
    putStrLn "creating a new non-hosted button..."
    let cb :: CreateButton (NONHOSTED CLEARTEXT) CART
        cb = CreateButton {
                cbVariables = Variables_CART {
                    cartItem = Item {
                        itAmount = 250 % 100,
                        itItemName = Just "small button image",
                        itBusiness = Nothing,
                        itItemNumber = Just "SML001",
                        itQuantity = Nothing,
                        itShipping = Just (45 % 100),
                        itShipping2 = Nothing,
                        itTax = Nothing,
                        itTaxRate = Just 0.15,
                        itUndefinedQuantity = (),
                        itWeight = Just (0.5, Kg)
                    },
                    cartPayment = Payment {
                        payAddressOverride = Nothing,
                        payCurrencyCode = Just "NZD",
                        payCustom = Nothing,
                        payHandling = Nothing,
                        payInvoice = Just "000002",
                        payTaxCart = Nothing,
                        payWeight = Nothing
                    },
                    cartCart = ShoppingCart {
                        caAction = Add,
                        caHandlingCart = Nothing,
                        caPaymentAction = Sale,
                        caShoppingURL = Just "http://hip-to-be-square.com/"
                    }
                },
                cbButtonSubtype = Nothing,
                cbOptions = Options $ Just (
                        Option "Size" [Select "Small" (Just (200 % 100)),
                                       Select "Medium" (Just (250 % 100)),
                                       Select "Large" (Just (300 % 100))],
                        [Option "Colour" [Select "Red" (),
                                         Select "Green" (),
                                         Select "Blue" ()]]
                    ),
                cbButtonImage = Just (Left SML),
                cbButtonText = (),
                cbCountry = Just "BE",
                cbLanguage = Just "fr",
                cbExtras = []
            }
    --print cb
    --print (toVariables cb)
    reply <- submit sandbox me cb
    case reply of
        Right (Success (CreateButton_NonHosted_Response _ html)) -> do
            C.writeFile "test.html" html
        err -> putStrLn $ "FAILED: "++show err

    putStrLn "fetching list of buttons currently hosted at paypal..."
    let bs = ButtonSearch {
                bsStartDate = LocalTime (fromGregorian 2011 1 1) midnight,
                bsEndDate   = Nothing
            }
    --print (toVariables bs)
    searchRes <- submit sandbox me bs
    --print searchRes
    case searchRes of
        Right (Success (ButtonSearch_Response items)) ->
            forM_ items $ \item -> do
                print item
                det <- submit sandbox me (GetButtonDetails (biButtonID item))
                print det
        err -> putStrLn $ "FAILED: "++show err