defmodule ExOpenpay.Charges do @moduledoc """ Functions for working with charges at Openpay. Through this API you can: * create a charge, * update a charge, * get a charge, * list charges, * count charges, * refund a charge, * partially refund a charge. Openpay API reference: https://www.openpay.mx/docs/api/?shell#cargos """ @endpoint "charges" @doc """ Create a charge. Creates a charge for a customer or card using amount and params. `params` must include a source. Returns `{:ok, charge}` tuple. ## Examples params = [ source_id: "kqgykn96i7bcs1wwhvgw", method: "card", amount: 100, currency: "MXN", description: "Cargo inicial a mi cuenta", order_id: "oid-00051", device_session_id: "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f", customer: [ name: "Juan", last_name: "Vazquez Juarez", phone_number: "4423456723", email: "juan.vazquez@empresa.com.mx" ] ] {:ok, charge} = ExOpenpay.Charges.create(1000, params) """ def create(amount, params) do create amount, params, ExOpenpay.config_or_api_key end @doc """ Create a charge. Accepts ExOpenpay API key. Creates a charge for a customer or card using amount and params. `params` must include a source. Returns `{:ok, charge}` tuple. ## Examples {:ok, charge} = ExOpenpay.Charges.create(1000, params, key) """ def create(amount, params, key) do #default currency params = Keyword.put_new params, :currency, "MXN" #drop in the amount params = Keyword.put_new params, :amount, amount ExOpenpay.make_request_with_key(:post, @endpoint, key, params) |> ExOpenpay.Util.handle_openpay_response end end