Class: Stripe::Product

Inherits:
APIResource show all
Extended by:
APIOperations::Create, APIOperations::List, APIOperations::NestedResource, APIOperations::Search
Includes:
APIOperations::Delete, APIOperations::Save
Defined in:
lib/stripe/resources/product.rb

Overview

Products describe the specific goods or services you offer to your customers. For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product. They can be used in conjunction with [Prices](stripe.com/docs/api#prices) to configure pricing in Payment Links, Checkout, and Subscriptions.

Related guides: [Set up a subscription](stripe.com/docs/billing/subscriptions/set-up-subscription), [share a Payment Link](stripe.com/docs/payment-links), [accept payments with Checkout](stripe.com/docs/payments/accept-a-payment#create-product-prices-upfront), and more about [Products and Prices](stripe.com/docs/products-prices/overview)

Defined Under Namespace

Classes: CreateParams, DeleteParams, ListParams, MarketingFeature, PackageDimensions, SearchParams, UpdateParams

Constant Summary collapse

OBJECT_NAME =
"product"

Constants inherited from StripeObject

StripeObject::RESERVED_FIELD_NAMES

Instance Attribute Summary collapse

Attributes inherited from APIResource

#save_with_parent

Attributes inherited from StripeObject

#last_response

Class Method Summary collapse

Instance Method Summary collapse

Methods included from APIOperations::Create

create

Methods included from APIOperations::List

list

Methods included from APIOperations::NestedResource

nested_resource_class_methods

Methods included from APIOperations::Search

_search

Methods included from APIOperations::Save

included, #save

Methods included from APIOperations::Delete

included

Methods inherited from APIResource

class_name, custom_method, #refresh, #request_stripe_object, resource_url, #resource_url, retrieve, save_nested_resource

Methods included from APIOperations::Request

included

Methods inherited from StripeObject

#==, #[], #[]=, #_get_inner_class_type, additive_object_param, additive_object_param?, #as_json, construct_from, #deleted?, #dirty!, #each, #eql?, #hash, #initialize, #inspect, #keys, #marshal_dump, #marshal_load, protected_fields, #serialize_params, #to_hash, #to_json, #to_s, #update_attributes, #values

Constructor Details

This class inherits a constructor from Stripe::StripeObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Stripe::StripeObject

Instance Attribute Details

#activeObject (readonly)

Whether the product is currently available for purchase.



475
476
477
# File 'lib/stripe/resources/product.rb', line 475

def active
  @active
end

#createdObject (readonly)

Time at which the object was created. Measured in seconds since the Unix epoch.



477
478
479
# File 'lib/stripe/resources/product.rb', line 477

def created
  @created
end

#default_priceObject (readonly)

The ID of the [Price](stripe.com/docs/api/prices) object that is the default price for this product.



479
480
481
# File 'lib/stripe/resources/product.rb', line 479

def default_price
  @default_price
end

#deletedObject (readonly)

Always true for a deleted object



513
514
515
# File 'lib/stripe/resources/product.rb', line 513

def deleted
  @deleted
end

#descriptionObject (readonly)

The product’s description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.



481
482
483
# File 'lib/stripe/resources/product.rb', line 481

def description
  @description
end

#idObject (readonly)

Unique identifier for the object.



483
484
485
# File 'lib/stripe/resources/product.rb', line 483

def id
  @id
end

#imagesObject (readonly)

A list of up to 8 URLs of images for this product, meant to be displayable to the customer.



485
486
487
# File 'lib/stripe/resources/product.rb', line 485

def images
  @images
end

#livemodeObject (readonly)

Has the value ‘true` if the object exists in live mode or the value `false` if the object exists in test mode.



487
488
489
# File 'lib/stripe/resources/product.rb', line 487

def livemode
  @livemode
end

#marketing_featuresObject (readonly)

A list of up to 15 marketing features for this product. These are displayed in [pricing tables](stripe.com/docs/payments/checkout/pricing-table).



489
490
491
# File 'lib/stripe/resources/product.rb', line 489

def marketing_features
  @marketing_features
end

#metadataObject (readonly)

Set of [key-value pairs](stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.



491
492
493
# File 'lib/stripe/resources/product.rb', line 491

def 
  @metadata
end

#nameObject (readonly)

The product’s name, meant to be displayable to the customer.



493
494
495
# File 'lib/stripe/resources/product.rb', line 493

def name
  @name
end

#objectObject (readonly)

String representing the object’s type. Objects of the same type share the same value.



495
496
497
# File 'lib/stripe/resources/product.rb', line 495

def object
  @object
end

#package_dimensionsObject (readonly)

The dimensions of this product for shipping purposes.



497
498
499
# File 'lib/stripe/resources/product.rb', line 497

def package_dimensions
  @package_dimensions
end

#shippableObject (readonly)

Whether this product is shipped (i.e., physical goods).



499
500
501
# File 'lib/stripe/resources/product.rb', line 499

def shippable
  @shippable
end

#statement_descriptorObject (readonly)

Extra information about a product which will appear on your customer’s credit card statement. In the case that multiple products are billed at once, the first statement descriptor will be used. Only used for subscription payments.



501
502
503
# File 'lib/stripe/resources/product.rb', line 501

def statement_descriptor
  @statement_descriptor
end

#tax_codeObject (readonly)



503
504
505
# File 'lib/stripe/resources/product.rb', line 503

def tax_code
  @tax_code
end

#typeObject (readonly)

The type of the product. The product is either of type ‘good`, which is eligible for use with Orders and SKUs, or `service`, which is eligible for use with Subscriptions and Plans.



505
506
507
# File 'lib/stripe/resources/product.rb', line 505

def type
  @type
end

#unit_labelObject (readonly)

A label that represents units of this product. When set, this will be included in customers’ receipts, invoices, Checkout, and the customer portal.



507
508
509
# File 'lib/stripe/resources/product.rb', line 507

def unit_label
  @unit_label
end

#updatedObject (readonly)

Time at which the object was last updated. Measured in seconds since the Unix epoch.



509
510
511
# File 'lib/stripe/resources/product.rb', line 509

def updated
  @updated
end

#urlObject (readonly)

A URL of a publicly-accessible webpage for this product.



511
512
513
# File 'lib/stripe/resources/product.rb', line 511

def url
  @url
end

Class Method Details

.create(params = {}, opts = {}) ⇒ Object

Creates a new product object.



516
517
518
# File 'lib/stripe/resources/product.rb', line 516

def self.create(params = {}, opts = {})
  request_stripe_object(method: :post, path: "/v1/products", params: params, opts: opts)
end

.delete(id, params = {}, opts = {}) ⇒ Object

Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with type=good is only possible if it has no SKUs associated with it.



521
522
523
524
525
526
527
528
# File 'lib/stripe/resources/product.rb', line 521

def self.delete(id, params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/products/%<id>s", { id: CGI.escape(id) }),
    params: params,
    opts: opts
  )
end

.field_remappingsObject



570
571
572
# File 'lib/stripe/resources/product.rb', line 570

def self.field_remappings
  @field_remappings = {}
end

.inner_class_typesObject



563
564
565
566
567
568
# File 'lib/stripe/resources/product.rb', line 563

def self.inner_class_types
  @inner_class_types = {
    marketing_features: MarketingFeature,
    package_dimensions: PackageDimensions,
  }
end

.list(params = {}, opts = {}) ⇒ Object

Returns a list of your products. The products are returned sorted by creation date, with the most recently created products appearing first.



541
542
543
# File 'lib/stripe/resources/product.rb', line 541

def self.list(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/products", params: params, opts: opts)
end

.object_nameObject



22
23
24
# File 'lib/stripe/resources/product.rb', line 22

def self.object_name
  "product"
end

.search(params = {}, opts = {}) ⇒ Object



545
546
547
# File 'lib/stripe/resources/product.rb', line 545

def self.search(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/products/search", params: params, opts: opts)
end

.search_auto_paging_each(params = {}, opts = {}, &blk) ⇒ Object



549
550
551
# File 'lib/stripe/resources/product.rb', line 549

def self.search_auto_paging_each(params = {}, opts = {}, &blk)
  search(params, opts).auto_paging_each(&blk)
end

.update(id, params = {}, opts = {}) ⇒ Object

Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged.



554
555
556
557
558
559
560
561
# File 'lib/stripe/resources/product.rb', line 554

def self.update(id, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/products/%<id>s", { id: CGI.escape(id) }),
    params: params,
    opts: opts
  )
end

Instance Method Details

#delete(params = {}, opts = {}) ⇒ Object

Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with type=good is only possible if it has no SKUs associated with it.



531
532
533
534
535
536
537
538
# File 'lib/stripe/resources/product.rb', line 531

def delete(params = {}, opts = {})
  request_stripe_object(
    method: :delete,
    path: format("/v1/products/%<id>s", { id: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end