Popularity
3.6
Stable
Activity
4.7
Declining
26
1
4
Monthly Downloads: 0
Programming language: Elixir
License: MIT License
Tags:
Third Party APIs
Latest version: v1.2.2
extripe alternatives and similar packages
Based on the "Third Party APIs" category.
Alternatively, view extripe alternatives based on common mentions on social networks and blogs.
-
MongoosePush
MongoosePush is a simple Elixir RESTful service allowing to send push notification via FCM and/or APNS. -
sparkpost
SparkPost client library for Elixir https://developers.sparkpost.com -
elixtagram
:camera: Instagram API client for the Elixir language (elixir-lang) -
google_sheets
Elixir library for fetching Google Spreadsheet data in CSV format -
pay_pal
:money_with_wings: PayPal REST API client for the Elixir language (elixir-lang) -
amazon_product_advertising_client
An Amazon Product Advertising API client for Elixir -
cashier
Cashier is an Elixir library that aims to be an easy to use payment gateway, whilst offering the fault tolerance and scalability benefits of being built on top of Erlang/OTP -
elixir_ipfs_api
The Elixir library that is used to communicate with the IPFS REST endpoint.
Access the most powerful time series database as a service
Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.
Promo
www.influxdata.com
Do you think we are missing an alternative of extripe or a related project?
README
Extripe
Stripe API wrapper in Elixir Read Documentation
Installation
- Add extripe to your list of dependencies in
mix.exs
:
def deps do
[{:extripe, "~> 1.0"}]
end
- Ensure
httpoison
is started before your application:
def application do
[applications: [:httpoison]]
end
Usage
- Use with env var
stripe_secret_key
stripe_secret_key=sk_test_abcdefg12345678 iex -S mix
- Or config it
config :extripe,
stripe_secret_key: "sk_test_abcdefg12345678"
Features
Simple CRUD
Using Plan
, Customer
and Subscirption
in the following examples, all entities should be supported, if you find anything that is not supported or new endpoints coming out from stripe, don't hesitate to file an issue
iex(1)> Extripe.Plan.index
{:ok,
%{"data" => [%{"amount" => 1500, "created" => 1455733031, "currency" => "gbp",
"id" => "regular_gb", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "Regular GB",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => nil},
%{"amount" => 1000, "created" => 1455632453, "currency" => "aud",
"id" => "regular_au", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "Regular AU",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15},
%{"amount" => 1000, "created" => 1455593353, "currency" => "usd",
"id" => "regular", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "REGULAR",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15}], "has_more" => false, "object" => "list",
"url" => "/v1/plans"}}
iex(2)> Extripe.Plan.show "regular"
{:ok,
%{"amount" => 1000, "created" => 1455593353, "currency" => "usd",
"id" => "regular", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "REGULAR",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15}}
iex(3)> Extripe.Plan.create %{id: "test", name: "My Test Plan", amount: 1999, interval: "month", currency: "usd"}
{:ok,
%{"amount" => 1999, "created" => 1455736111,
"currency" => "usd", "id" => "test", "interval" => "month",
"interval_count" => 1, "livemode" => false, "metadata" => %{},
"name" => "My Test Plan", "object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => nil}}
# or Extripe.Plan.update "test_id", %{name: "MY TTTTEST PLAN"}
iex(4)> Extripe.Plan.update %{id: "test_id", name: "MY TTTTEST PLAN"}
{:ok,
%{"amount" => 1999, "created" => 1455736111,
"currency" => "usd", "id" => "test", "interval" => "month",
"interval_count" => 1, "livemode" => false, "metadata" => %{},
"name" => "MY TTTTEST PLAN", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => nil}}
iex(5)> Extripe.Plan.delete "test"
{:ok, %{"deleted" => true, "id" => "test"}}
Response
All actions return either {:ok, body :: map}
or {:error, reason :: binary}
Nested resources
# find a customer first
iex(1)> Extripe.Customer.index
{:ok,
%{"data" => [%{"account_balance" => 0, "created" => 1455721994,
"currency" => "usd", "default_source" => nil, "delinquent" => false,
"description" => "test self", "discount" => nil,
"email" => "[email protected]", "id" => "cus_7vNk0duWVulcPe",
"livemode" => false, "metadata" => %{}, "object" => "customer",
"shipping" => nil,
"sources" => %{"data" => [], "has_more" => false, "object" => "list",
"total_count" => 0,
"url" => "/v1/customers/cus_7vNk0duWVulcPe/sources"},
"subscriptions" => %{"data" => [], "has_more" => false,
"object" => "list", "total_count" => 0,
"url" => "/v1/customers/cus_7vNk0duWVulcPe/subscriptions"}}],
"has_more" => false, "object" => "list", "url" => "/v1/customers"}}
# find the subscriptions that belong to the customer
iex(2)> Extripe.Subscription.index customer: "cus_7vNk0duWVulcPe"
{:ok,
%{"data" => [], "has_more" => false,
"object" => "list",
"url" => "/v1/customers/cus_7vNk0duWVulcPe/subscriptions"}}
# manipulations...
iex(3)> Extripe.Subscription.create customer: "cus_7vNk0duWVulcPe", %{plan: "regular"}
{:ok,
%{"application_fee_percent" => nil,
"cancel_at_period_end" => false, "canceled_at" => nil,
"current_period_end" => 1457032418, "current_period_start" => 1455736418,
"customer" => "cus_7vNk0duWVulcPe", "discount" => nil, "ended_at" => nil,
"id" => "sub_7vRdUiQQhv3M7u", "metadata" => %{}, "object" => "subscription",
"plan" => %{"amount" => 1000, "created" => 1455593353, "currency" => "usd",
"id" => "regular", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "REGULAR",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15}, "quantity" => 1, "start" => 1455736418,
"status" => "trialing", "tax_percent" => nil, "trial_end" => 1457032418,
"trial_start" => 1455736418}}
iex(4)> Extripe.Subscription.delete "sub_7vRdUiQQhv3M7u"
{:ok,
%{"application_fee_percent" => nil,
"cancel_at_period_end" => false, "canceled_at" => 1455736452,
"current_period_end" => 1457032418, "current_period_start" => 1455736418,
"customer" => "cus_7vNk0duWVulcPe", "discount" => nil,
"ended_at" => 1455736452, "id" => "sub_7vRdUiQQhv3M7u", "metadata" => %{},
"object" => "subscription",
"plan" => %{"amount" => 1000, "created" => 1455593353, "currency" => "usd",
"id" => "regular", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "REGULAR",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15}, "quantity" => 1, "start" => 1455736418,
"status" => "canceled", "tax_percent" => nil, "trial_end" => 1457032418,
"trial_start" => 1455736418}}
Pagination
iex(1)> Extripe.Plan.index starting_after: "regular_au"
{:ok,
%{"data" => [%{"amount" => 1000, "created" => 1455593353, "currency" => "usd",
"id" => "regular", "interval" => "month", "interval_count" => 1,
"livemode" => false, "metadata" => %{}, "name" => "REGULAR",
"object" => "plan", "statement_descriptor" => nil,
"trial_period_days" => 15}], "has_more" => false, "object" => "list",
"url" => "/v1/plans"}}
iex(2)> Extripe.Plan.index ending_before: "regular_au"
{:ok,
%{"data" => [%{"amount" => 1500,
"created" => 1455733031, "currency" => "gbp", "id" => "regular_gb",
"interval" => "month", "interval_count" => 1, "livemode" => false,
"metadata" => %{}, "name" => "Regular GB", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => nil}],
"has_more" => false, "object" => "list", "url" => "/v1/plans"}}
iex(3)> Extripe.Plan.index limit: 1
{:ok,
%{"data" => [%{"amount" => 1500,
"created" => 1455733031, "currency" => "gbp", "id" => "regular_gb",
"interval" => "month", "interval_count" => 1, "livemode" => false,
"metadata" => %{}, "name" => "Regular GB", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => nil}],
"has_more" => true, "object" => "list", "url" => "/v1/plans"}}
iex(4)> {:ok, events} = Extripe.Event.index created: [lt: 1455733031]
{:ok,
%{"data" => [%{"api_version" => "2016-02-03", "created" => 1455732840,
"data" => %{"object" => %{"amount" => 1000, "created" => 1455593353,
"currency" => "usd", "id" => "regular", "interval" => "month",
"interval_count" => 1, "livemode" => false, "metadata" => %{},
"name" => "REGULAR", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => 15},
"previous_attributes" => %{"name" => "Regular"}},
"id" => "evt_17fZoKEhB5xMvgQ7Fdl7krpl", "livemode" => false,
"object" => "event", "pending_webhooks" => 0,
"request" => "req_7vQfTWcjfnH7JW", "type" => "plan.updated"},
%{"api_version" => "2016-02-03", "created" => 1455732634,
"data" => %{"object" => %{"amount" => 1500, "created" => 1455730831,
"currency" => "gbp", "id" => "regular_gb", "interval" => "month",
"interval_count" => 1, "livemode" => false, "metadata" => %{},
"name" => "REGULAR GB", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => nil}},
"id" => "evt_17fZl0EhB5xMvgQ7Ekqu42UQ", "livemode" => false,
"object" => "event", "pending_webhooks" => 0,
"request" => "req_7vQc2AYrZYzkv3", "type" => "plan.deleted"},
%{"api_version" => "2016-02-03", "created" => 1455732348,
"data" => %{"object" => %{"application_fee_percent" => nil,
"cancel_at_period_end" => false, "canceled_at" => 1455732348,
"current_period_end" => 1457027674,
"current_period_start" => 1455731674,
"customer" => "cus_7vNk0duWVulcPe", "discount" => nil,
"ended_at" => 1455732348, "id" => "sub_7vQMcLg9Qvbuzn",
"metadata" => %{}, "object" => "subscription",
"plan" => %{"amount" => 1000, "created" => 1455593353,
"currency" => "usd", "id" => "regular", "interval" => "month",
"interval_count" => 1, "livemode" => false, "metadata" => %{},
"name" => "Regular", "object" => "plan",
"statement_descriptor" => nil, "trial_period_days" => 15},
"quantity" => 1, "start" => 1455731674, "status" => "canceled",
"tax_percent" => nil, "trial_end" => 1457027674,
"trial_start" => 1455731674}}, "id" => "evt_17fZgOEhB5xMvgQ750S7kXaH",
"livemode" => false, "object" => "event", "pending_webhooks" => 0,
"request" => "req_7vQXJ6d8hVgjA5",
"type" => "customer.subscription.deleted"},
...]}}
iex(5)> {:ok, events} = Extripe.Event.index created: [gt: 1455733031]
# similar to the previous one
# and you also have gte, lte
# or you could just specify an integer unix timestamp for :created instead of a map or a keyword list
Contributing
# Adding a new resource
defmodule Extripe.NewResource do
# normal resource
# note: new_resource is probably plural
use Extripe.Actions.CRUD, resource: "new_resource"
# not fully CRUDable resource
use Extripe.Actions.CRUD, only: [:index, :show], resource: "new_resource"
# or
use Extripe.Actions.CRUD, except: [:delete], resource: "new_resource"
# nested resource
# when the scoping resource is plural, e.g. /v1/customers/customer_id/subscriptions
use Extripe.Actions.CRUD, scope: "customers", resource: "subscriptions"
# when the scoping resource is singular, e.g. /v1/balance/history
use Extripe.Actions.CRUD, scope: {"balance", :singular}, resource: "history"
# singluar resource
# currently only Balance is of this kind, /v1/balance
use Extripe.Actions.CRUD, only: [:show], resource: "balance", singular: true
# special case implementations
def pay(id), do: # pay bill
# special CRUD implementations
def list do
# special implementation of list
end
end