1. Giới thiệu

    • Stripe Ruby cung cấp SDK cho việc truy cập thuận tiện vào các Stripe API từ ứng dụng được viết bằng ngôn ngữ Ruby. Nó cũng cấp 1 tập hợp các nguồn được định nghĩa sẵn cho phép khởi tạo các requestresponses ho các API
    • Các chức năng khác ràng buộc. Ví dụ
      • Dễ dàng configuration và sử dụng
      • Sử dụng pagination
        ....
  2. Cài đặt

    • Yêu cầu:

      • Ruby 1.9.3 hoặc cao hơn.
      • rest-client
    • Cách 1

      Ruby
                    gem install stripe
        
      • Nếu bạn muốn xây dựng gem từ nguồn
      Ruby
                    gem build stripe.gemspec
        
    • Cách 2 sử dụng bundle, thêm gem "stripe" vào Gemfile

      Ruby
                    gem "stripe"
        
  3. Sử dụng

    • Tạo stripe client

      Ruby
                    Stripe.api_key = ENV["STRIPE_SECRET_KEY"]
        
    • HTTP status code<br>

    Http Code Descriptions
    200 - OK
    400 - Bad Request
    401 - Unauthorized
    402 - Request Failed
    404 - Not Found
    409 - Conflict
    429 - Too Many Requests
    500, 502, 503, 504 - Server Errors
    • Errors
    Errors Code Descriptions
    api_connection_error
    api_error
    authentication_error
    card_error
    invalid_request_error
    rate_limit_error
    • CODES
    Code Descriptions
    invalid_number
    invalid_expiry_month
    invalid_expiry_year
    invalid_cvc
    invalid_swipe_data
    incorrect_number
    expired_card
    incorrect_cvc
    incorrect_zip
    card_declined
    missing
    processing_error
    • Handling errors

      Ruby
                begin
                .......................
                rescue Stripe::CardError => e
                  if e.json_body[:error][:type] == "card_error"
                    errors.add :base, I18n.t(e.json_body[:error][:code], scope: "stripe.status_code.card_error")
                  end
                  return false
                rescue Stripe::RateLimitError => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Too many requests made to the API too quickly"
                  StripeMailer.delay.send_error e.json_body[:error][:message]
                  return false
                rescue Stripe::InvalidRequestError => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Invalid parameters were supplied to Stripe's API"
                  StripeMailer.delay.send_error e.json_body[:error][:message]
                  return false
                rescue Stripe::AuthenticationError => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Authentication with Stripe's API failed"
                  StripeMailer.delay.send_error e.json_body[:error][:message]
                  return false
                rescue Stripe::APIConnectionError => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Network communication with Stripe failed"
                  StripeMailer.delay.send_error e.json_body[:error][:message]
                  return false
                rescue Stripe::StripeError => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Display a very generic error to the user"
                  StripeMailer.delay.send_error e.json_body[:error][:message]
                  return false
                rescue => e
                  errors.add :base, I18n.t("stripe.status_code.unknown_error")
                  Rails.logger.error "Something else happened, completely unrelated to Stripe"
                  return false
                end
        
    • Create CardToken

      Ruby
              response = Stripe::Token.create(
                card:{
                  number: card_number,
                  exp_month: card_exp_month,
                  exp_year: card_exp_year,
                  cvc: card_cvc,
                  name: card_name
                }
              )
        

    <br>

    • Response
      JSON
                #<Stripe::Token id=tok_189fl82eZvKYlo2CYPt0jHMX 0x00000a>
                JSON: {
                  "id": "tok_189fl82eZvKYlo2CYPt0jHMX",
                  "object": "token",
                  "card": {
                    "id": "card_189fl82eZvKYlo2C0EiJscSI",
                    "object": "card",
                    "address_city": null,
                    "address_country": null,
                    "address_line1": null,
                    "address_line1_check": null,
                    "address_line2": null,
                    "address_state": null,
                    "address_zip": null,
                    "address_zip_check": null,
                    "brand": "Visa",
                    "country": "US",
                    "cvc_check": null,
                    "dynamic_last4": null,
                    "exp_month": 8,
                    "exp_year": 2017,
                    "funding": "credit",
                    "last4": "4242",
                    "metadata": {
                    },
                    "name": null,
                    "tokenization_method": null
                  },
                  "client_ip": null,
                  "created": 1462905546,
                  "livemode": false,
                  "type": "card",
                  "used": false
                }