Use this file to discover all available pages before exploring further.
O SDK Ruby fornece uma maneira simples e intuitiva de integrar Dodo Payments em suas aplicações Ruby. Ele segue as convenções e melhores práticas do Ruby, oferecendo tratamento de erros abrangente, paginação e suporte a middleware.
Sempre use a versão mais recente do SDK para acessar os recursos mais novos do Dodo Payments. Execute bundle update dodopayments regularmente para manter-se atualizado.
Em seguida, execute:
bundle install
O SDK é compatível com Ruby 3.2.0 e versões posteriores, com tipos completos, tratamento de erros e mecanismos de retentativa.
Inicialize o cliente e crie uma sessão de checkout:
require "bundler/setup"require "dodopayments"dodo_payments = Dodopayments::Client.new( bearer_token: ENV["DODO_PAYMENTS_API_KEY"], # This is the default and can be omitted environment: "test_mode" # defaults to "live_mode")checkout_session_response = dodo_payments.checkout_sessions.create( product_cart: [{product_id: "product_id", quantity: 1}])puts(checkout_session_response.session_id)
Armazene suas chaves de API com segurança usando variáveis de ambiente. Nunca as commitie no controle de versão ou as exponha no código.
# Create a subscriptionsubscription = dodo_payments.subscriptions.create( billing: { country: "US", city: "San Francisco", state: "CA", street: "1 Market St", zipcode: "94105" }, customer: { customer_id: "cus_123" }, # or { email: "...", name: "..." } for a new customer product_id: "pdt_456", quantity: 1)# Charge an on-demand subscription# product_price is in the lowest currency denomination (e.g., 2500 = $25.00 USD)charge = dodo_payments.subscriptions.charge( subscription.subscription_id, product_price: 2500)# Update subscription metadataupdated = dodo_payments.subscriptions.update( subscription.subscription_id, metadata: { plan_type: "premium" })
billing requer no mínimo o código ISO country de duas letras. customer aceita { customer_id: "..." } para anexar um cliente existente ou { email: "...", name: "..." } para criar um novo. product_price está na menor denominação da moeda.
page = dodo_payments.payments.list# Fetch single item from pagepayment = page.items[0]puts(payment.brand_id)# Automatically fetches more pages as neededpage.auto_paging_each do |payment| puts(payment.brand_id)end
begin checkout_session = dodo_payments.checkout_sessions.create(product_cart: [{product_id: "product_id", quantity: 1}] )rescue Dodopayments::Errors::APIConnectionError => e puts("The server could not be reached") puts(e.cause) # an underlying Exception, likely raised within `net/http`rescue Dodopayments::Errors::RateLimitError => e puts("A 429 status code was received; we should back off a bit.")rescue Dodopayments::Errors::APIStatusError => e puts("Another non-200-range status code was received") puts(e.status)end
Implemente lógica de repetição com recuo exponencial para erros de limite de taxa para garantir que sua aplicação lide com cenários de alto volume de forma eficiente.
Use Sorbet para parâmetros de requisição de tipos seguros:
# Type-safe using Sorbet RBI definitionsdodo_payments.checkout_sessions.create( product_cart: [ Dodopayments::ProductItemReq.new( product_id: "product_id", quantity: 1 ) ])# Hashes work, but are not typesafedodo_payments.checkout_sessions.create( product_cart: [{product_id: "product_id", quantity: 1}])# You can also splat a full Params classparams = Dodopayments::CheckoutSessionCreateParams.new( product_cart: [ Dodopayments::ProductItemReq.new( product_id: "product_id", quantity: 1 ) ])dodo_payments.checkout_sessions.create(**params)