View Source Paystack (Paystack v0.7.0)
Paystack
A library for working with Paystack in Elixir
Installation
Add paystack to your dependencies list in mix.exs
{:paystack, "~> 0.7.0"}
Then run mix deps.get
Configuration
Add the following configuration to your runtime.exs
or config.exs
file. The runtime file is preferred if your secret key is injected into your environment at runtime.
config :paystack, secret_key: System.get_env("PAYSTACK_SECRET_KEY")
Your environment variable does not have to be PAYSTACK_SECRET_KEY
, as the package only depends on the config key.
Response
This package returns responses in the format of {:ok, Paystack.Response{}} | {:error, any}
. This means a successful request would look like this;
iex> Paystack.Transaction.initialize(%{ email: "customer@email.com", amount: "20000" })
{:ok,
%Paystack.Response{
data: %{
"access_code" => "0peioxfhpn",
"authorization_url" => "https://checkout.paystack.com/0peioxfhpn",
"reference" => "7PVGX8MEk85tgeEpVDtD"
},
message: "Authorization URL created",
meta: nil,
status_code: 200,
success: true
}}
An unsuccessful response would look like this;
iex> Paystack.Transaction.initialize(%{ email: "customer@email.com", amount: "20000" })
{:ok,
%Paystack.Response{
data: nil,
message: "Invalid key",
meta: nil,
status_code: 401,
success: false
}}
while an unexpected response would look like this.
iex> Paystack.Transaction.initialize(%{ email: "customer@email.com", amount: "20000" })
{:error, :nxdomain}
Telemetry
This library executes the following telemetry events:
[:paystack, :request, :start]
- Executed before sending a request
Measurements
system_time
- The system time[:paystack, :request, :stop]
- Executed after sending the final responseMeasurements
duration
- The system time in:native
unitMetadata
url
- The paystack url requestedrequest_type
- The http request type (:get
,:post
, or:put
)status_code
- The http response status code e.g201
,400
,401
, e.t.c.response_type
- The library's response type (:ok
or:error
) Happy coding!