@@ -43,8 +43,10 @@ defmodule Conekta.Orders do
4343 def create ( order ) when is_map ( order ) do
4444 case Client . post_request ( "orders" , order ) do
4545 { :ok , content } ->
46- body = Handler . handle_status_code ( content )
47- { :ok , Poison . decode! ( body , as: % OrdersCreateResponse { } ) }
46+ content
47+ |> Handler . handle_status_code ( )
48+ |> Poison . decode! ( )
49+ |> parse_response ( )
4850 end
4951 end
5052
@@ -107,11 +109,34 @@ defmodule Conekta.Orders do
107109 def create_charge ( order_id , charge ) do
108110 case Client . post_request ( "orders/" <> order_id <> "/charges" , charge ) do
109111 { :ok , content } ->
110- body = Handler . handle_status_code ( content )
111- { :ok , Poison . decode! ( body , as: % OrderCreateChargeResponse { } ) }
112+ content
113+ |> Handler . handle_status_code ( )
114+ |> Poison . decode! ( )
115+ |> parse_response ( )
112116 end
113117 end
114118
119+ defp parse_response ( % { "data" => % { "object" => "order" } = data } ) do
120+ data
121+ |> Poison . encode! ( )
122+ |> Poison . decode! ( as: % OrdersCreateResponse { } )
123+ |> then ( & { :error , & 1 } )
124+ end
125+
126+ defp parse_response ( % { "charges" => _charges } = data ) do
127+ data
128+ |> Poison . encode! ( )
129+ |> Poison . decode! ( as: % OrdersCreateResponse { } )
130+ |> then ( & { :ok , & 1 } )
131+ end
132+
133+ defp parse_response ( data ) do
134+ data
135+ |> Poison . encode! ( )
136+ |> Poison . decode! ( as: % OrderCreateChargeResponse { } )
137+ |> then ( & { :ok , & 1 } )
138+ end
139+
115140 def refund ( order_id , refund ) do
116141 case Client . post_request ( "orders/" <> order_id <> "/refunds" , refund ) do
117142 { :ok , content } ->
0 commit comments