12/08/2018, 14:31
Sử dụng Stripe trong thanh toán trực tuyến
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 request và responses ho các API Các chức năng khác ràng buộc. Ví dụ Dễ dàng configuration ...
-
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 request và responses 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 ....
-
Cài đặt
-
Yêu cầu:
- Ruby 1.9.3 hoặc cao hơn.
- rest-client
-
Cách 1
gem install stripe
- Nếu bạn muốn xây dựng gem từ nguồn
gem build stripe.gemspec
-
Cách 2 sử dụng bundle, thêm gem "stripe" vào Gemfile
gem "stripe"
-
-
Sử dụng
-
Tạo stripe client
Stripe.api_key = ENV["STRIPE_SECRET_KEY"]
-
HTTP status code
Http Code Descriptions 200 - OK Everything worked as expected. 400 - Bad Request Yêu cầu là không được chấp nhận, thường là do thiếu thông số cần thiết. 401 - Unauthorized Lỗi xác thực 402 - Request Failed Các thông số này có giá trị nhưng yêu cầu không thành. 404 - Not Found Không có api đã request 409 - Conflict Yêu cầu bị xung đột với yêu cầu khác 429 - Too Many Requests Có quá nhiều request tới API cùng lúc 500, 502, 503, 504 - Server Errors Có lỗi với server - Errors
Errors Code Descriptions api_connection_error Lỗi khi connect ới stripe's API api_error Lỗi API bao gồm bất kỳ loại vấn đề authentication_error Lỗi xác thực khi gửi request card_error Lỗi thẻ khi người dùng nhập 1 thẻ lỗi invalid_request_error Lỗi yêu cầu không hợp lệ phát sinh khi yêu cầu của bạn có các tham số không hợp lệ. rate_limit_error Quá nhiều yêu cầu nhấn API quá nhanh. - CODES
Code Descriptions invalid_number Số thẻ không phải là một số thẻ tín dụng hợp lệ. invalid_expiry_month Tháng hết hạn của thẻ là không hợp lệ. invalid_expiry_year Năm hết hạn của thẻ không hợp lệ invalid_cvc Mã bảo mật của thẻ là không hợp lệ. invalid_swipe_data Các dữ liệu thẻ swipe là không hợp lệ. incorrect_number Số thẻ không chính xác expired_card Thẻ đã hết hạn incorrect_cvc Mã bảo mật không chính xác incorrect_zip Mã Zip không chính xác card_declined Thẻ bị từ chối missing Không có thẻ trên một khách hàng mà đang được thanh toán. processing_error Có lỗi xảy ra trong khi xử lý thẻ. -
Handling errors
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
response = Stripe::Token.create( card:{ number: card_number, exp_month: card_exp_month, exp_year: card_exp_year, cvc: card_cvc, name: card_name } )
- 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 } ``` -