Gocardlex.Behaviour.Customer behaviour (gocardlex v1.1.0)

Public API for Gocardless

Summary

Callbacks

Creates a new Customer

Gets a Customer based on their ID in GoCardless

Lists Customers from GoCardless

Updates a Customer based on their ID in GoCardless

Callbacks

create_customer(map)

@callback create_customer(map()) :: tuple()

Creates a new Customer

Examples

iex> params = %{
  email: "name@email.com",
  given_name: "Firstname",
  family_name: "Lastname",
  country_code: "GB"
}
iex> Gocardlex.Client.create_customer(%{customers: params})
{:ok,
  %{"customers" => %{"address_line1" => nil, "address_line2" => nil,
     "address_line3" => nil, "city" => nil, "company_name" => nil,
     "country_code" => "GB", "created_at" => "2017-06-23T13:04:45.459Z",
     "email" => "name@email.com", "family_name" => "Lastname",
     "given_name" => "Firstname", "id" => "CU00099999999", "language" => "en",
     "metadata" => %{}, "postal_code" => nil, "region" => nil,
     "swedish_identity_number" => nil}}}

get_customer(t)

@callback get_customer(String.t()) :: tuple()

Gets a Customer based on their ID in GoCardless

Examples

iex> Gocardlex.Client.get_customer("CU000999999998")
{:ok,
 %{"customers" => %{"address_line1" => nil, "address_line2" => nil,
     "address_line3" => nil, "city" => nil, "company_name" => nil,
     "country_code" => "GB", "created_at" => "2017-06-23T10:47:22.248Z",
     "email" => "name@email.com", "family_name" => "Lastname",
     "given_name" => "Firstname", "id" => "CU000999999998", "language" => "en",
     "metadata" => %{}, "postal_code" => nil, "region" => nil,
     "swedish_identity_number" => nil}}}

list_customers(map)

@callback list_customers(map()) :: tuple()

Lists Customers from GoCardless

Examples

iex> Gocardlex.Client.list_customers()
{:ok,
%{"customers" => [%{"address_line1" => nil, "address_line2" => nil,
    "address_line3" => nil, "city" => nil, "company_name" => nil,
    "country_code" => "GB", "created_at" => "2017-06-23T10:47:22.248Z",
    "email" => "name@email.com", "family_name" => "Lastname",
    "given_name" => "Firstname", "id" => "CU000999999997", "language" => "en",
    "metadata" => %{}, "postal_code" => nil, "region" => nil,
    "swedish_identity_number" => nil},
  %{"address_line1" => nil, "address_line2" => nil, "address_line3" => nil,
    "city" => nil, "company_name" => nil, "country_code" => "GB",
    "created_at" => "2017-06-22T17:11:04.112Z",
    "email" => "name@email.com", "family_name" => "Lastname2",
    "given_name" => "Firstname2", "id" => "CU000999999998", "language" => "en",
    "metadata" => %{}, "postal_code" => nil, "region" => nil,
    "swedish_identity_number" => nil}],
 "meta" => %{"cursors" => %{"after" => nil, "before" => nil}, "limit" => 50}}}

iex> Gocardlex.Client.list_customers(%{"created_at[gt]" => "2017-06-22T17:18:06.000Z"})
{:ok,
 %{"customers" => [%{"address_line1" => nil, "address_line2" => nil,
      "address_line3" => nil, "city" => nil, "company_name" => nil,
      "country_code" => "GB", "created_at" => "2017-06-23T10:47:22.248Z",
      "email" => "name@email.com", "family_name" => "Lastname",
      "given_name" => "Firstname", "id" => "CU000999999997", "language" => "en",
      "metadata" => %{}, "postal_code" => nil, "region" => nil,
      "swedish_identity_number" => nil}],
   "meta" => %{"cursors" => %{"after" => nil, "before" => nil}, "limit" => 50}}}

update_customer(t, map)

@callback update_customer(String.t(), map()) :: tuple()

Updates a Customer based on their ID in GoCardless

Examples

iex> params = %{email: "new@email.com"}
iex> Gocardlex.Client.update_customer("CU000999999998", %{customers: params})
{:ok,
 %{"customers" => %{"address_line1" => nil, "address_line2" => nil,
     "address_line3" => nil, "city" => nil, "company_name" => nil,
     "country_code" => "GB", "created_at" => "2017-06-23T13:04:45.459Z",
     "email" => "new@email.com", "family_name" => "Lastname",
     "given_name" => "Firstname", "id" => "CU000999999998", "language" => "en",
     "metadata" => %{}, "postal_code" => nil, "region" => nil,
     "swedish_identity_number" => nil}}}