Sha256: b58351d9acf7a0981b37f14683b328577ba60e95b8cd02ad0aedbe7a8ca96f63

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module LedgerSync
  module Stripe
    class Customer
      module Operations
        class Create < Stripe::Operation::Create
          class Contract < LedgerSync::Ledgers::Contract
            params do
              required(:external_id).maybe(:string)
              required(:ledger_id).value(:nil)
              required(:email).maybe(:string)
              required(:name).filled(:string)
              required(:phone_number).maybe(:string)
            end
          end

          private

          def operate
            stripe_customer = ::Stripe::Customer.create(
              email: resource.email,
              metadata: {
                external_id: resource.external_id
              },
              name: resource.name,
              phone: resource.phone_number
            )

            resource.ledger_id = stripe_customer.id

            success(
              resource: resource,
              response: stripe_customer
            )
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ledger_sync-stripe-0.1.0 lib/ledger_sync/stripe/customer/operations/create.rb