Current section
Files
Jump to
Current section
Files
lib/openpay/cards.ex
defmodule ExOpenpay.Cards do
@moduledoc """
Functions for working with cards at Openpay. Through this API you can:
* create a card,
* update a card,
* get a card,
* list cards,
* count cards,
* refund a card,
* partially refund a card.
Openpay API reference: https://www.openpay.mx/docs/api/?shell#tarjetas
"""
def endpoint_for_entity(entity_type, entity_id) do
case entity_type do
:customer -> "customers/#{entity_id}/cards"
:commerce -> "cards"
end
end
@doc """
Create a card.
Creates a card for given owner type, owner ID using params.
`params` must contain a "source" object. Inside the "source" object, the following parameters are required:
* object,
* number,
* cvs,
* exp_month,
* exp_year.
Returns a `{:ok, card}` tuple.
## Examples
params = [
source: [
object: "card",
number: "4111111111111111",
cvc: 123,
exp_month: 12,
exp_year: 2020,
metadata: [
test_field: "test val"
]
]
]
{:ok, card} = ExOpenpay.Cards.create(:customer, customer_id, params)
"""
def create(owner_type, owner_id, params) do
create owner_type, owner_id, params, ExOpenpay.config_or_api_key
end
@doc """
Create a card. Accepts ExOpenpay API key.
Creates a card for given owner using params.
`params` must contain a "source" object. Inside the "source" object, the following parameters are required:
* object,
* number,
* cvs,
* exp_month,
* exp_year.
Returns a `{:ok, card}` tuple.
## Examples
{:ok, card} = ExOpenpay.Cards.create(:customer, customer_id, params, key)
"""
def create(owner_type, owner_id, params, key) do
ExOpenpay.make_request_with_key(:post, endpoint_for_entity(owner_type, owner_id), key, params)
|> ExOpenpay.Util.handle_openpay_response
end
@doc """
Delete a card.
Deletes a card for given owner using card ID.
Returns a `{:ok, card}` tuple.
## Examples
{:ok, deleted_card} = ExOpenpay.Cards.delete("card_id")
"""
def delete(owner_type, owner_id, id) do
delete owner_type, owner_id, id, ExOpenpay.config_or_api_key
end
@doc """
Delete a card. Accepts ExOpenpay API key.
Deletes a card for given owner using card ID.
Returns a `{:ok, card}` tuple.
## Examples
{:ok, deleted_card} = ExOpenpay.Cards.delete("card_id", key)
"""
def delete(owner_type, owner_id, id,key) do
ExOpenpay.make_request_with_key(:delete, "#{endpoint_for_entity(owner_type, owner_id)}/#{id}", key)
end
end