Hi, I am writing a Phoenix app where I need to integrate with Stripe. mainly for subscriptions and plans. Have you used any available open source Elixir Stripe library? What is your experience?
Have a look at this:
You may also be interested in this:
Hi, I’ve had some success with Stripity Stripe (https://hex.pm/packages/stripity_stripe) to sign people up to subscription plans, and a bit of Stripe Connect to make charges on behalf of other users. Unfortunately it looks like I picked it a the time the library was going through a major re-write so whilst it works for me at the moment it’s on my list of things to reassess in the future. I do incoming webhook handling mostly manually, using the signatures or re-fetching the event directly using the API is also on my todo list for now.
I had to make a few tiny changes to the code at the time, but since their development’s moved on it’s not going to get merged back in so I’m a bit out on a limb now but none the less it works ok. It’s here: https://github.com/wardes/stripity_stripe/commits/wardes-cust-patch-1
So maybe worth seeing what their current version is like instead. They do all seem to have different approaches to wrapping the API and data structures.
Cheers.
We just managed without one. Stripe’s api is very clean and well documented. building and sending requests was not hard. e.g.
def create_a_charge(charge, token) do
%{"object" => "customer", "id" => stripe_customer_id} = token
data = %{
amount: charge.amount,
currency: "GBP",
customer: stripe_customer_id,
description: charge.description,
metadata: charge.metadata,
}
request = request(:POST, "/v1/charges")
|> set_authorization(:bearer, api_secret())
|> set_header("idempotency-key", charge.transaction_id)
|> accept(:json)
|> send_form(data)
handle_response(send_sync(request, api_host()))
end
FWIW: I emailed Stripe sometime ago and I’m happy to say they finally added Elixir as a language to the Community Libraries section:
I never mentioned here what send_sync
was. Previously it was a cumbersome wrapper around HTTPoison
. Now I am working on a Client library that takes full request objects and just handles sending them.
You can see it in this Pull Request. Currently looking for feedback.
I agree with this. Stripe’s API is so well documented and clean that I had no problem implementing it on my own.
For me I only needed to implement a few endpoints, so it was easy enough.