Popularity
4.2
Declining
Activity
0.0
Stable
20
2
8

Monthly Downloads: 2
Programming language: Elixir
License: MIT License
Tags: Third Party APIs    

stripe alternatives and similar packages

Based on the "Third Party APIs" category

Do you think we are missing an alternative of stripe or a related project?

Add another 'Third Party APIs' Package

README

Stripe

Stripe API client for Elixir

** Work in progress **

Scope

The goal is to map all objects in the Stripe API 1-1

TODO

Resources

  • [ ] Charges
  • [ ] Refunds
  • [ ] Customers
  • [ ] Cards
  • [ ] Subscriptions
  • [ ] Plans
  • [ ] Coupons
  • [ ] Discounts
  • [ ] Invoices
  • [ ] Invoice Items
  • [ ] Disputes
  • [ ] Transfers
  • [ ] Recipients
  • [ ] Application Fees
  • [ ] Application Fee Refunds
  • [ ] Account
  • [ ] Balance
  • [ ] Events
  • [ ] Tokens

Features

  • [ ] Cast nested resources

Authentication

Authentication for Stripe's API is done via a single Bearer token. The library will check the STRIPE_SECRET_KEY environment variable and fallback to Application.get_env(:stripe, :secret_key).

Usage

The RESTfulness of the Stripe API makes this easy. In essence, for every object in the Stripe ecosystem, we should be able to make calls such as:

Stripe.start

customers = Stripe.Customers.get
# => [%Stripe.Customer{account_balance: 0,...]

length customers
# => 10

customer = List.first customers
  # => %Stripe.Customer{account_balance: 0,
  #      cards: %{"data" => [%{"address_city" => nil, "address_country" => nil,
  #            "address_line1" => nil, "address_line1_check" => nil,
  #            "address_line2" => nil, "address_state" => nil, "address_zip" => nil,
  #            "address_zip_check" => nil, "brand" => "Visa", "country" => "US",
  #            "customer" => "cus_5HYg9UxTAsC84D", "cvc_check" => "pass",
  #            "dynamic_last4" => nil, "exp_month" => 11, "exp_year" => 2016,
  #            "fingerprint" => "Xt5EWLLDS7FJjR1c", "funding" => "credit",
  #            "id" => "card_156zZS2eZvKYlo2CcevEs4Be", "last4" => "4242", "name" => nil,
  #            "object" => "card"}], "has_more" => false, "object" => "list",
  #         "total_count" => 1, "url" => "/v1/customers/cus_5HYg9UxTAsC84D/cards"},
  #      created: 1417937711, currency: nil,
  #      default_card: "card_156zZS2eZvKYlo2CcevEs4Be", delinquent: false,
  #      description: "erikyuzwa@gmail.com", discount: nil, id: "cus_5HYg9UxTAsC84D",
  #      livemode: false, metadata: %{}, object: "customer",
  #      subscriptions: %{"data" => [], "has_more" => false, "object" => "list",
  #         "total_count" => 0,
  #         "url" => "/v1/customers/cus_5HYg9UxTAsC84D/subscriptions"}}

# Get a customer by ID
customer_id = customer.id
Stripe.Customers.get %{id: customer_id}
# => %Stripe.Customer{account_balance: 0, ...

# Get a card (nested under customers)
Stripe.Cards.get %{customer_id: customer_id, id: customer.default_card}
# => %Stripe.Card{address_city: nil, address_country: nil, address_line1: nil,
#         address_line1_check: nil, address_line2: nil, address_state: nil,
#         address_zip: nil, address_zip_check: nil, brand: "Visa", country: "US",
#         customer: "cus_5HYg9UxTAsC84D", cvc_check: "pass", dynamic_last4: nil,
#         exp_month: 11, exp_year: 2016, fingerprint: "Xt5EWLLDS7FJjR1c",
#         funding: "credit", id: "card_156zZS2eZvKYlo2CcevEs4Be", last4: "4242",
#         name: nil, object: "card"}