Class: Stripe::Source

Inherits:
APIResource show all
Extended by:
Gem::Deprecate, APIOperations::Create, APIOperations::NestedResource
Includes:
APIOperations::Save
Defined in:
lib/stripe/resources/source.rb

Overview

‘Source` objects allow you to accept a variety of payment methods. They represent a customer’s payment instrument, and can be used with the Stripe API just like a ‘Card` object: once chargeable, they can be charged, or can be attached to customers.

Stripe doesn’t recommend using the deprecated [Sources API](docs.stripe.com/api/sources). We recommend that you adopt the [PaymentMethods API](docs.stripe.com/api/payment_methods). This newer API provides access to our latest features and payment method types.

Related guides: [Sources API](docs.stripe.com/sources) and [Sources & Customers](docs.stripe.com/sources/customers).

Defined Under Namespace

Classes: AchCreditTransfer, AchDebit, AcssDebit, Alipay, AuBecsDebit, Bancontact, Card, CardPresent, CodeVerification, Eps, Giropay, Ideal, Klarna, Multibanco, Owner, P24, Paypal, Receiver, Redaction, Redirect, SepaCreditTransfer, SepaDebit, Sofort, SourceOrder, ThreeDSecure, Wechat

Constant Summary collapse

OBJECT_NAME =
"source"

Constants inherited from StripeObject

Stripe::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::NestedResource

nested_resource_class_methods

Methods included from APIOperations::Save

included, #save

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

#ach_credit_transferObject (readonly)

Attribute for field ach_credit_transfer



847
848
849
# File 'lib/stripe/resources/source.rb', line 847

def ach_credit_transfer
  @ach_credit_transfer
end

#ach_debitObject (readonly)

Attribute for field ach_debit



849
850
851
# File 'lib/stripe/resources/source.rb', line 849

def ach_debit
  @ach_debit
end

#acss_debitObject (readonly)

Attribute for field acss_debit



851
852
853
# File 'lib/stripe/resources/source.rb', line 851

def acss_debit
  @acss_debit
end

#alipayObject (readonly)

Attribute for field alipay



853
854
855
# File 'lib/stripe/resources/source.rb', line 853

def alipay
  @alipay
end

#allow_redisplayObject (readonly)

This field indicates whether this payment method can be shown again to its customer in a checkout flow. Stripe products such as Checkout and Elements use this field to determine whether a payment method can be shown as a saved payment method in a checkout flow. The field defaults to “unspecified”.



855
856
857
# File 'lib/stripe/resources/source.rb', line 855

def allow_redisplay
  @allow_redisplay
end

#amountObject (readonly)

A positive integer in the smallest currency unit (that is, 100 cents for $1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount associated with the source. This is the amount for which the source will be chargeable once ready. Required for ‘single_use` sources.



857
858
859
# File 'lib/stripe/resources/source.rb', line 857

def amount
  @amount
end

#au_becs_debitObject (readonly)

Attribute for field au_becs_debit



859
860
861
# File 'lib/stripe/resources/source.rb', line 859

def au_becs_debit
  @au_becs_debit
end

#bancontactObject (readonly)

Attribute for field bancontact



861
862
863
# File 'lib/stripe/resources/source.rb', line 861

def bancontact
  @bancontact
end

#cardObject (readonly)

Attribute for field card



863
864
865
# File 'lib/stripe/resources/source.rb', line 863

def card
  @card
end

#card_presentObject (readonly)

Attribute for field card_present



865
866
867
# File 'lib/stripe/resources/source.rb', line 865

def card_present
  @card_present
end

#client_secretObject (readonly)

The client secret of the source. Used for client-side retrieval using a publishable key.



867
868
869
# File 'lib/stripe/resources/source.rb', line 867

def client_secret
  @client_secret
end

#code_verificationObject (readonly)

Attribute for field code_verification



869
870
871
# File 'lib/stripe/resources/source.rb', line 869

def code_verification
  @code_verification
end

#createdObject (readonly)

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



871
872
873
# File 'lib/stripe/resources/source.rb', line 871

def created
  @created
end

#currencyObject (readonly)

Three-letter [ISO code for the currency](stripe.com/docs/currencies) associated with the source. This is the currency for which the source will be chargeable once ready. Required for ‘single_use` sources.



873
874
875
# File 'lib/stripe/resources/source.rb', line 873

def currency
  @currency
end

#customerObject (readonly)

The ID of the customer to which this source is attached. This will not be present when the source has not been attached to a customer.



875
876
877
# File 'lib/stripe/resources/source.rb', line 875

def customer
  @customer
end

#epsObject (readonly)

Attribute for field eps



877
878
879
# File 'lib/stripe/resources/source.rb', line 877

def eps
  @eps
end

#flowObject (readonly)

The authentication ‘flow` of the source. `flow` is one of `redirect`, `receiver`, `code_verification`, `none`.



879
880
881
# File 'lib/stripe/resources/source.rb', line 879

def flow
  @flow
end

#giropayObject (readonly)

Attribute for field giropay



881
882
883
# File 'lib/stripe/resources/source.rb', line 881

def giropay
  @giropay
end

#idObject (readonly)

Unique identifier for the object.



883
884
885
# File 'lib/stripe/resources/source.rb', line 883

def id
  @id
end

#idealObject (readonly)

Attribute for field ideal



885
886
887
# File 'lib/stripe/resources/source.rb', line 885

def ideal
  @ideal
end

#klarnaObject (readonly)

Attribute for field klarna



887
888
889
# File 'lib/stripe/resources/source.rb', line 887

def klarna
  @klarna
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`.



889
890
891
# File 'lib/stripe/resources/source.rb', line 889

def livemode
  @livemode
end

#metadataObject (readonly)

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



891
892
893
# File 'lib/stripe/resources/source.rb', line 891

def 
  @metadata
end

#multibancoObject (readonly)

Attribute for field multibanco



893
894
895
# File 'lib/stripe/resources/source.rb', line 893

def multibanco
  @multibanco
end

#objectObject (readonly)

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



895
896
897
# File 'lib/stripe/resources/source.rb', line 895

def object
  @object
end

#ownerObject (readonly)

Information about the owner of the payment instrument that may be used or required by particular source types.



897
898
899
# File 'lib/stripe/resources/source.rb', line 897

def owner
  @owner
end

#p24Object (readonly)

Attribute for field p24



899
900
901
# File 'lib/stripe/resources/source.rb', line 899

def p24
  @p24
end

#paypalObject (readonly)

Attribute for field paypal



901
902
903
# File 'lib/stripe/resources/source.rb', line 901

def paypal
  @paypal
end

#receiverObject (readonly)

Attribute for field receiver



903
904
905
# File 'lib/stripe/resources/source.rb', line 903

def receiver
  @receiver
end

#redactionObject (readonly)

Redaction status of this source. If not null, this source is associated to a redaction job.



905
906
907
# File 'lib/stripe/resources/source.rb', line 905

def redaction
  @redaction
end

#redirectObject (readonly)

Attribute for field redirect



907
908
909
# File 'lib/stripe/resources/source.rb', line 907

def redirect
  @redirect
end

#sepa_credit_transferObject (readonly)

Attribute for field sepa_credit_transfer



909
910
911
# File 'lib/stripe/resources/source.rb', line 909

def sepa_credit_transfer
  @sepa_credit_transfer
end

#sepa_debitObject (readonly)

Attribute for field sepa_debit



911
912
913
# File 'lib/stripe/resources/source.rb', line 911

def sepa_debit
  @sepa_debit
end

#sofortObject (readonly)

Attribute for field sofort



913
914
915
# File 'lib/stripe/resources/source.rb', line 913

def sofort
  @sofort
end

#source_orderObject (readonly)

Attribute for field source_order



915
916
917
# File 'lib/stripe/resources/source.rb', line 915

def source_order
  @source_order
end

#statement_descriptorObject (readonly)

Extra information about a source. This will appear on your customer’s statement every time you charge the source.



917
918
919
# File 'lib/stripe/resources/source.rb', line 917

def statement_descriptor
  @statement_descriptor
end

#statusObject (readonly)

The status of the source, one of ‘canceled`, `chargeable`, `consumed`, `failed`, or `pending`. Only `chargeable` sources can be used to create a charge.



919
920
921
# File 'lib/stripe/resources/source.rb', line 919

def status
  @status
end

#three_d_secureObject (readonly)

Attribute for field three_d_secure



921
922
923
# File 'lib/stripe/resources/source.rb', line 921

def three_d_secure
  @three_d_secure
end

#typeObject (readonly)

The ‘type` of the source. The `type` is a payment method, one of `ach_credit_transfer`, `ach_debit`, `alipay`, `bancontact`, `card`, `card_present`, `eps`, `giropay`, `ideal`, `multibanco`, `klarna`, `p24`, `sepa_debit`, `sofort`, `three_d_secure`, or `wechat`. An additional hash is included on the source with a name matching this value. It contains additional information specific to the [payment method](docs.stripe.com/sources) used.



923
924
925
# File 'lib/stripe/resources/source.rb', line 923

def type
  @type
end

#usageObject (readonly)

Either ‘reusable` or `single_use`. Whether this source should be reusable or not. Some source types may or may not be reusable by construction, while others may leave the option at creation. If an incompatible value is passed, an error will be returned.



925
926
927
# File 'lib/stripe/resources/source.rb', line 925

def usage
  @usage
end

#wechatObject (readonly)

Attribute for field wechat



927
928
929
# File 'lib/stripe/resources/source.rb', line 927

def wechat
  @wechat
end

Class Method Details

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

Creates a new source object.



930
931
932
# File 'lib/stripe/resources/source.rb', line 930

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

.field_remappingsObject



1022
1023
1024
# File 'lib/stripe/resources/source.rb', line 1022

def self.field_remappings
  @field_remappings = {}
end

.inner_class_typesObject



991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
# File 'lib/stripe/resources/source.rb', line 991

def self.inner_class_types
  @inner_class_types = {
    ach_credit_transfer: AchCreditTransfer,
    ach_debit: AchDebit,
    acss_debit: AcssDebit,
    alipay: Alipay,
    au_becs_debit: AuBecsDebit,
    bancontact: Bancontact,
    card: Card,
    card_present: CardPresent,
    code_verification: CodeVerification,
    eps: Eps,
    giropay: Giropay,
    ideal: Ideal,
    klarna: Klarna,
    multibanco: Multibanco,
    owner: Owner,
    p24: P24,
    paypal: Paypal,
    receiver: Receiver,
    redaction: Redaction,
    redirect: Redirect,
    sepa_credit_transfer: SepaCreditTransfer,
    sepa_debit: SepaDebit,
    sofort: Sofort,
    source_order: SourceOrder,
    three_d_secure: ThreeDSecure,
    wechat: Wechat,
  }
end

.object_nameObject



21
22
23
# File 'lib/stripe/resources/source.rb', line 21

def self.object_name
  "source"
end

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

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

This request accepts the metadata and owner as arguments. It is also possible to update type specific information for selected payment methods. Please refer to our [payment method guides](docs.stripe.com/docs/sources) for more detail.



937
938
939
940
941
942
943
944
# File 'lib/stripe/resources/source.rb', line 937

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

.verify(source, params = {}, opts = {}) ⇒ Object

Verify a given source.



957
958
959
960
961
962
963
964
# File 'lib/stripe/resources/source.rb', line 957

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

Instance Method Details

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



966
967
968
969
970
971
972
973
974
975
976
977
978
# File 'lib/stripe/resources/source.rb', line 966

def detach(params = {}, opts = {})
  if !respond_to?(:customer) || customer.nil? || customer.empty?
    raise NotImplementedError,
          "This source object does not appear to be currently attached " \
          "to a customer object."
  end

  url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources" \
        "/#{CGI.escape(id)}"
  opts = Util.normalize_opts(opts)
  APIRequestor.active_requestor.execute_request_initialize_from(:delete, url, :api, self,
                                                                params: params, opts: RequestOptions.extract_opts_from_hash(opts))
end

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



980
981
982
983
984
985
986
987
# File 'lib/stripe/resources/source.rb', line 980

def source_transactions(params = {}, opts = {})
  request_stripe_object(
    method: :get,
    path: resource_url + "/source_transactions",
    params: params,
    opts: opts
  )
end

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

Verify a given source.



947
948
949
950
951
952
953
954
# File 'lib/stripe/resources/source.rb', line 947

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