Popularity
7.0
Growing
Activity
4.1
-
29
3
7

Programming language: Crystal
License: MIT License
Tags: Third-party APIs    
Latest version: v1.0

stripe.cr alternatives and similar shards

Based on the "Third-party APIs" category.
Alternatively, view stripe.cr alternatives based on common mentions on social networks and blogs.

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

Add another 'Third-party APIs' Shard

README

Stripe

Stripe API wrapper for Crystal.

This version (>1.0) is changed to follow Ruby's method and class structure. We will follow Stripe::Class.method but follow crystal parameters to take care of the types automatically.

Notice

This api wrapper was tested on api version 2020-03-02 but have been trying to make it flexible with String? and correspondent in the types.

Installation

Add this to your application's shard.yml:

dependencies:
  stripe:
    github: confact/stripe.cr

Usage

require "stripe"

Stripe.api_key = "YOUR_API_TOKEN"

token = Stripe::Token.create(card: {
  number: "4242424242424242",
  exp_month: 12,
  exp_year: 2019,
  cvc: 123,
})

customer = Stripe::Customer.create(source: token)
charge = Stripe::Charge.create(amount: 1000, currency: "usd", customer: customer)

custom API version

You can set custom api version if needed. Version need to be set before first api call is called. otherwise it won't be used.

require "stripe"

Stripe.api_key = "YOUR_API_TOKEN"
Stripe.version = "2019-03-29"

Example of setting up a subscription

Here is a simple way to setup a subscription by using payment_method.

Follow the instruction for setting up an subscription at stripe: https://stripe.com/docs/billing/subscriptions/set-up-subscription

When the step is at server code, check the code below that is corresponding towards the ruby code for same step.

Setting up an customer:

  token = params['StripeToken'] # or what the param for the token is called for you.
  customer = Stripe::Customer.create(email: email,
                         description: name, # just example
                         payment_method: token, # or token.payment_method.id  
                         # depends what you do in the frontend to handle the token.
                         invoice_settings: { default_payment_method: token })

create a subscription with that customer:

Stripe::Subscription.create(customer: customer,
plan: STRIPE_PLAN_ID,
expand: ["latest_invoice.payment_intent"]) # yes - create_subscription support expand.

The rest is frontend to check SCA and more. You should not need to do more than this on the backend.

But follow https://stripe.com/docs/billing/subscriptions/set-up-subscription for the frontend part to make sure it works for SCA and other things.

Progress

API methods

Core

Balance
  • [x] Retrieve balance

  • [ ] Retrieve a balance transaction

  • [ ] List all balance history

Charges
  • [x] Create a charge

  • [x] Retrieve a charge

  • [ ] Update a charge

  • [ ] Capture a charge

  • [ ] List all charges

Sources
  • [x] Create a source

  • [x] Retrieve a source

  • [x] Attach a source to customer

  • [x] Detach a source from customer

  • [ ] Update a source

Subscriptions
  • [x] Create a Subscription

  • [x] Retrieve a Subscription

  • [x] Update a Subscription

  • [x] Delete a Subscription

  • [x] List all Subscriptions

Setup Intent
  • [x] Create a Setup Intent

  • [x] Retrieve a Setup Intent

  • [x] Confirm a Setup Intent

  • [ ] Update a Setup Intent

  • [ ] Cancel a Setup Intent

  • [ ] Delete a Setup Intent

  • [x] List all Setup Intents

Payment Intent
  • [x] Create a Payment Intent

  • [x] Retrieve a Payment Intent

  • [x] Confirm a Payment Intent

  • [ ] Update a Payment Intent

  • [ ] Cancel a Payment Intent

  • [ ] Delete a Payment Intent

  • [x] List all Payment Intents

Customers
  • [x] Create a customer

  • [x] Retrieve a customer

  • [x] Update a customer

  • [x] Delete a customer

  • [x] List all customers

Customer Tax IDs
  • [x] Create a customer tax ID

  • [x] Retrieve a customer tax ID

  • [x] Delete a customer tax ID

Refund
  • [x] Create a refund

  • [x] Retrieve a refund

  • [ ] Update a refund

  • [ ] List all refunds

Tax Rate
  • [x] Create a tax rate

  • [x] retrieve a tax rate

  • [ ] Update a tax rate

  • [ ] List all tax rates

Tokens
  • [x] Create a card token

  • [ ] Create a bank account token

  • [ ] Create a PII token

  • [ ] Create an account token

  • [ ] Retrieve a token

Invoices
  • [x] Create a invoice

  • [x] Retrieve a invoice

  • [x] Update a invoice

  • [ ] Delete a invoice

  • [x] List all invoices

Objects

Core

  • [x] Balance

  • [ ] Balance transaction

  • [x] Charge

  • [x] Plan

  • [x] Product

  • [x] Customer

  • [x] Customer Tax ID

  • [x] Subscription

  • [x] Invoice

  • [ ] Dispute

  • [ ] Dispute evidence

  • [ ] Event

  • [ ] File

  • [ ] File link

  • [ ] Payout

  • [x] Refund

  • [x] Tax Rate

  • [x] Token

  • [x] Payment Intent

  • [x] Setup Intent

Payment methods

  • [x] Payment Method

  • [x] Bank account

  • [x] Card

  • [x] Source

Connect

  • [ ] Account

  • [ ] Login link

  • [ ] Application fee refund

  • [ ] Application fee

  • [ ] Country spec

  • [ ] Top-up

  • [ ] Transfer

  • [ ] Transfer reversal

Development

TODO: Write development instructions here

Contributing

  1. Fork it (https://github.com/confact/stripe.cr/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors