Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
{-# LANGUAGE OverloadedStrings #-}
module Util.JSON where
import Web.Stripe.Types
( Charge(Charge)
, ChargeId(ChargeId)
, InvoiceId(InvoiceId)
, Amount(Amount)
, Currency(USD)
)
import Web.Stripe.Event
( Event(Event)
, EventData(ChargeEvent)
, EventType(ChargeSucceededEvent)
, EventId(EventId)
)
import Data.Aeson
( ToJSON(toJSON)
, Value(String, Number)
, object
, (.=)
)
instance ToJSON Event where
toJSON (Event
eventId
eventCreated
eventLiveMode
eventType
eventData
eventObject
eventPendingWebHooks
eventRequest)
= object
[ "id" .= eventId
, "object" .= eventObject
, "api_version" .= String "2018-05-21"
, "created" .= eventCreated
, "data" .= object [ "object" .= eventData ]
, "type" .= eventType
, "livemode" .= eventLiveMode
, "pending_webhooks" .= eventPendingWebHooks
, "request" .= eventRequest
]
instance ToJSON EventId where
toJSON (EventId eId) = String eId
instance ToJSON InvoiceId where
toJSON (InvoiceId iId) = String iId
instance ToJSON ChargeId where
toJSON (ChargeId cId) = String cId
instance ToJSON Currency where
toJSON USD = "USD"
instance ToJSON EventType where
toJSON ChargeSucceededEvent = "charge.succeeded"
instance ToJSON EventData where
toJSON (ChargeEvent charge) = toJSON charge
instance ToJSON Amount where
toJSON (Amount a) = Number $ fromIntegral a
instance ToJSON Charge where
toJSON (Charge
chargeId
chargeObject
chargeCreated
chargeLiveMode
chargePaid
chargeAmount
chargeCurrency
chargeRefunded
chargeCreditChard
chargeCaptured
chargeRefunds
chargeBalanceTransaction
chargeFailureMessage
chargeFailureCode
chargeAmountRefunded
chargeCustomerId
chargeInvoice
chargeDescription
chargeDispute
chargeMetaData
chargeStatementDescription
chargeReceiptEmail
chargeNumber
)
= object
[ "id" .= chargeId
, "object" .= chargeObject
, "amount" .= chargeAmount
-- , "amount_refunded" .= chargeAmountRefunded
-- , "balance_transaction" .= chargeBalanceTransaction
, "captured" .= chargeCaptured
, "created" .= chargeCreated
, "currency" .= chargeCurrency
-- , "customer" .= chargeCustomerId
-- , "description" .= chargeDescription
-- , "dispute" .= chargeDispute
-- , "failure_code" .= chargeFailureCode
-- , "failure_message" .= chargeFailureMessage
-- , "invoice" .= chargeInvoice
, "livemode" .= chargeLiveMode
]