Packages

A simple wrapper to help you interect with the Juno API!

Current section

Files

Jump to
junex lib junex.ex
Raw

lib/junex.ex

defmodule Junex do
@moduledoc """
Junex is a library for help you to interact to the Juno API in a easier way!
## WARNINGS
1. Although you can build the maps mannualy, like `charge_info` and `payment_billing_info`,
Junex provide a bunch of helper functions to build the exactly structure that the Juno API requests, so
consider using them!
2. All main function receive as last param an atom that could be `:prod` or `:sandbox`
# Example
As an example, see how you could create a charge and a payment:
First, you need an `access_token`, to get one, you need to have a `client_id` and `client_secret` pair.
You can generate one for production or sandbox on the Juno's Integration screen.
After that:
defmodule MyApp.Payment do
alias Junex.Auth
def jwt_token(client_id, client_secret) do
case Auth.get_access_token(client_id, client_secret, :sandbox) do
{:ok, token} ->
token
{:error, error} ->
{:error, error}
end
end
end
Now you have an `access_token` you can make another requests! Let create a charge now:
For this, you need first to create a client, providing the `access_token` and also the `resource_token`, that
is the `Private Token` that you also can generate on the Integration screen.
defmodule MyApp.Payment do
alias Junex.Client
def charges do
{:ok, client} = Client.create(access_token, resource_token)
charge_info = Client.get_charge_info/3 or /4
charge_billing_info = Client.get_charge_billing_info/4
case Client.create_charge(client, charge_info, charge_billing_info, :sandbox) do
{:ok, charges} ->
charges
{:error, error} ->
{:error, error}
end
end
end
Ok, charges created and returned as a list, so, if the `payment_type` was `:credit_card`, you can
generate the payment in sequence
defmodule MyApp.Payment do
alias Junex.Client
def payment do
{:ok, client} = Clien.create/2
card_info = Client.get_card_info/1
payment_billing_info = Client.get_payment_billing_info/3
for charge <- charges do
payment_info = Client.get_payment_info(charge["id"], card_info, payment_billing_info)
case Client.create_payment(client, payment_info, :sandbox) do
{:ok, payment} ->
payment
{:error, error} ->
{:error, error}
end
end
end
end
"""
end