Skip to content

Commit 1fa2019

Browse files
committed
1. Modified authorize, removed helper functions.
2. Fetched order_type from opts. 3. Removed config from opts in examples.
1 parent 4694ac9 commit 1fa2019

File tree

1 file changed

+21
-39
lines changed

1 file changed

+21
-39
lines changed

lib/gringotts/gateways/mercadopago.ex

+21-39
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,15 @@ defmodule Gringotts.Gateways.Mercadopago do
134134

135135
@spec authorize(Money.t(), CreditCard.t(), keyword) :: {:ok | :error, Response}
136136
def authorize(amount, %CreditCard{} = card, opts) do
137-
if Keyword.has_key?(opts, :customer_id) do
138-
auth_token(amount, card, opts, opts[:customer_id], false)
139-
else
140-
case create_customer(opts) do
141-
{:error, res} -> {:error, res}
142-
{:ok, customer_id} -> auth_token(amount, card, opts, customer_id, false)
143-
end
137+
with {:ok, customer_id} <- create_customer(opts),
138+
{:ok, card_token} <- create_token(card, opts) do
139+
{_, value, _, _} = Money.to_integer_exp(amount)
140+
url_params = [access_token: opts[:config][:access_token]]
141+
142+
body =
143+
authorize_params(value, card, opts, card_token, customer_id, false) |> Poison.encode!()
144+
145+
commit(:post, "/v1/payments", body, opts, params: url_params)
144146
end
145147
end
146148

@@ -161,39 +163,19 @@ defmodule Gringotts.Gateways.Mercadopago do
161163
# Parses mercadopago's response and returns a `Gringotts.Response` struct
162164
# in a `:ok`, `:error` tuple.
163165

164-
defp auth_token(amount, %CreditCard{} = card, opts, customer_id, capture) do
165-
opts = opts ++ [customer_id: customer_id]
166-
{state, res} = create_token(card, opts)
167-
168-
if state == :error do
169-
{state, res}
170-
else
171-
auth(amount, card, opts, res, capture)
172-
end
173-
end
174-
175-
defp auth(amount, %CreditCard{} = card, opts, token_id, capture) do
176-
{_, value, _, _} = Money.to_integer_exp(amount)
177-
opts = opts ++ [token_id: token_id]
178-
url_params = [access_token: opts[:config][:access_token]]
179-
180-
body =
181-
authorize_params(value, card, opts, opts[:token_id], opts[:customer_id], capture)
182-
|> Poison.encode!()
183-
184-
commit(:post, "/v1/payments", body, opts, params: url_params)
185-
end
186-
187166
defp create_customer(opts) do
188-
url_params = [access_token: opts[:config][:access_token]]
189-
body = %{email: opts[:email]} |> Poison.encode!()
190-
191-
{state, res} = commit(:post, "/v1/customers", body, opts, params: url_params)
192-
193-
if state == :error do
194-
{state, res}
167+
if Keyword.has_key?(opts, :customer_id) do
168+
{:ok, opts[:customer_id]}
195169
else
196-
{state, res.id}
170+
url_params = [access_token: opts[:config][:access_token]]
171+
body = %{email: opts[:email]} |> Poison.encode!()
172+
{state, res} = commit(:post, "/v1/customers", body, opts, params: url_params)
173+
174+
if state == :error do
175+
{state, res}
176+
else
177+
{state, res.id}
178+
end
197179
end
198180
end
199181

@@ -229,7 +211,7 @@ defmodule Gringotts.Gateways.Mercadopago do
229211
last_name: card.last_name
230212
},
231213
order: %{
232-
type: "mercadopago",
214+
type: opts[:order_type],
233215
id: opts[:order_id]
234216
},
235217
installments: opts[:installments] || 1,

0 commit comments

Comments
 (0)