Sử dụng Stripe trong thanh toán trực tuyến



    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
                  }
          

Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.