A library for working with Paystack in Elixir with out of the box support for telemetry events.
Comprehensive documentation available on HexDocs
This package requires Elixir v1.12+
Add the following to your mix.exs
file
{:paystack, "~> 0.7.0"}
Then run mix deps.get
to pull in the package
Add the following to your config.exs
or runtime.exs
file
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.
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}
This library executes the following telemetry events:
-
[:paystack, :request, :start]
- Executed before sending a request Measurementssystem_time
- The system time
-
[:paystack, :request, :stop]
- Executed after sending the final response Measurementsduration
- The system time in:native
unit
Metadata
url
- The paystack url requestedrequest_type
- The http request type (:get
,:post
,:put
or:delete
)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!
All modules implement a base behaviour. For instance, the Paystack.Transaction
module implements a Paystack.Transaction.Base
behaviour which makes it easy to mock with libraries such as https://hex.pm/packages/mox
MIT