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 to configure pricing in Payment Links, Checkout, and Subscriptions.

Related guides: Set up a subscription, share a Payment Link, accept payments with Checkout, and more about Products and Prices

Defined Under Namespace

Classes: Identifiers, ManagedPayments, MarketingFeature, PackageDimensions, TaxDetails

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?, field_encodings, #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.



129
130
131
# File 'lib/stripe/resources/product.rb', line 129

def active
  @active
end

#createdObject (readonly)

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



131
132
133
# File 'lib/stripe/resources/product.rb', line 131

def created
  @created
end

#default_priceObject (readonly)

The ID of the Price object that is the default price for this product.



133
134
135
# File 'lib/stripe/resources/product.rb', line 133

def default_price
  @default_price
end

#deletedObject (readonly)

Always true for a deleted object



135
136
137
# File 'lib/stripe/resources/product.rb', line 135

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.



137
138
139
# File 'lib/stripe/resources/product.rb', line 137

def description
  @description
end

#idObject (readonly)

Unique identifier for the object.



139
140
141
# File 'lib/stripe/resources/product.rb', line 139

def id
  @id
end

#identifiersObject (readonly)

Attribute for field identifiers



141
142
143
# File 'lib/stripe/resources/product.rb', line 141

def identifiers
  @identifiers
end

#imagesObject (readonly)

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



143
144
145
# File 'lib/stripe/resources/product.rb', line 143

def images
  @images
end

#livemodeObject (readonly)

If the object exists in live mode, the value is true. If the object exists in test mode, the value is false.



145
146
147
# File 'lib/stripe/resources/product.rb', line 145

def livemode
  @livemode
end

#managed_paymentsObject (readonly)

Attribute for field managed_payments



147
148
149
# File 'lib/stripe/resources/product.rb', line 147

def managed_payments
  @managed_payments
end

#marketing_featuresObject (readonly)

A list of up to 15 marketing features for this product. These are displayed in pricing tables.



149
150
151
# File 'lib/stripe/resources/product.rb', line 149

def marketing_features
  @marketing_features
end

#metadataObject (readonly)

Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.



151
152
153
# File 'lib/stripe/resources/product.rb', line 151

def 
  @metadata
end

#nameObject (readonly)

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



153
154
155
# File 'lib/stripe/resources/product.rb', line 153

def name
  @name
end

#objectObject (readonly)

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



155
156
157
# File 'lib/stripe/resources/product.rb', line 155

def object
  @object
end

#package_dimensionsObject (readonly)

The dimensions of this product for shipping purposes.



157
158
159
# File 'lib/stripe/resources/product.rb', line 157

def package_dimensions
  @package_dimensions
end

#shippableObject (readonly)

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



159
160
161
# File 'lib/stripe/resources/product.rb', line 159

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.



161
162
163
# File 'lib/stripe/resources/product.rb', line 161

def statement_descriptor
  @statement_descriptor
end

#tax_codeObject (readonly)

A tax code ID.



163
164
165
# File 'lib/stripe/resources/product.rb', line 163

def tax_code
  @tax_code
end

#tax_detailsObject (readonly)

Tax details for this product, including the tax code and an optional performance location.



165
166
167
# File 'lib/stripe/resources/product.rb', line 165

def tax_details
  @tax_details
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.



167
168
169
# File 'lib/stripe/resources/product.rb', line 167

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.



169
170
171
# File 'lib/stripe/resources/product.rb', line 169

def unit_label
  @unit_label
end

#updatedObject (readonly)

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



171
172
173
# File 'lib/stripe/resources/product.rb', line 171

def updated
  @updated
end

#urlObject (readonly)

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



173
174
175
# File 'lib/stripe/resources/product.rb', line 173

def url
  @url
end

Class Method Details

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

Creates a new product object.



176
177
178
# File 'lib/stripe/resources/product.rb', line 176

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.



181
182
183
184
185
186
187
188
# File 'lib/stripe/resources/product.rb', line 181

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



233
234
235
# File 'lib/stripe/resources/product.rb', line 233

def self.field_remappings
  @field_remappings = {}
end

.inner_class_typesObject



223
224
225
226
227
228
229
230
231
# File 'lib/stripe/resources/product.rb', line 223

def self.inner_class_types
  @inner_class_types = {
    identifiers: Identifiers,
    managed_payments: ManagedPayments,
    marketing_features: MarketingFeature,
    package_dimensions: PackageDimensions,
    tax_details: TaxDetails,
  }
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.



201
202
203
# File 'lib/stripe/resources/product.rb', line 201

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



205
206
207
# File 'lib/stripe/resources/product.rb', line 205

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



209
210
211
# File 'lib/stripe/resources/product.rb', line 209

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.



214
215
216
217
218
219
220
221
# File 'lib/stripe/resources/product.rb', line 214

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.



191
192
193
194
195
196
197
198
# File 'lib/stripe/resources/product.rb', line 191

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