Class: Stripe::PaymentMethodService

Inherits:
StripeService show all
Defined in:
lib/stripe/services/payment_method_service.rb

Instance Method Summary collapse

Methods inherited from StripeService

#initialize, #request, #request_stream

Constructor Details

This class inherits a constructor from Stripe::StripeService

Instance Method Details

#attach(payment_method, params = {}, opts = {}) ⇒ Object

Attaches a PaymentMethod object to a Customer.

To attach a new PaymentMethod to a customer for future payments, we recommend you use a SetupIntent or a PaymentIntent with setup_future_usage. These approaches will perform any necessary steps to set up the PaymentMethod for future payments. Using the /v1/payment_methods/:id/attach endpoint without first using a SetupIntent or PaymentIntent with setup_future_usage does not optimize the PaymentMethod for future use, which makes later declines and payment friction more likely. See Optimizing cards for future payments for more information about setting up future payments.

To use this PaymentMethod as the default for invoice or subscription payments, set invoice_settings.default_payment_method, on the Customer to the PaymentMethod's ID.



19
20
21
22
23
24
25
26
27
# File 'lib/stripe/services/payment_method_service.rb', line 19

def attach(payment_method, params = {}, opts = {})
  request(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/attach", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts,
    base_address: :api
  )
end

#check_balance(payment_method, params = {}, opts = {}) ⇒ Object

Retrieves a PaymentMethod's Balance.



30
31
32
33
34
35
36
37
38
# File 'lib/stripe/services/payment_method_service.rb', line 30

def check_balance(payment_method, params = {}, opts = {})
  request(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/check_balance", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts,
    base_address: :api
  )
end

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

Creates a PaymentMethod object. Read the Stripe.js reference to learn how to create PaymentMethods via Stripe.js.

Instead of creating a PaymentMethod directly, we recommend using the [PaymentIntents API to accept a payment immediately or the SetupIntent](https://docs.stripe.com/docs/payments/accept-a-payment) API to collect payment method details ahead of a future payment.



43
44
45
46
47
48
49
50
51
# File 'lib/stripe/services/payment_method_service.rb', line 43

def create(params = {}, opts = {})
  request(
    method: :post,
    path: "/v1/payment_methods",
    params: params,
    opts: opts,
    base_address: :api
  )
end

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

Detaches a PaymentMethod object from a Customer. Detachment is permanent and irreversible — once detached, a PaymentMethod can no longer be used for payments or re-attached to a Customer.



54
55
56
57
58
59
60
61
62
# File 'lib/stripe/services/payment_method_service.rb', line 54

def detach(payment_method, params = {}, opts = {})
  request(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/detach", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts,
    base_address: :api
  )
end

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

Returns a list of all PaymentMethods.



65
66
67
68
69
70
71
72
73
# File 'lib/stripe/services/payment_method_service.rb', line 65

def list(params = {}, opts = {})
  request(
    method: :get,
    path: "/v1/payment_methods",
    params: params,
    opts: opts,
    base_address: :api
  )
end

#retrieve(payment_method, params = {}, opts = {}) ⇒ Object

Retrieves a PaymentMethod object attached to the StripeAccount. To retrieve a payment method attached to a Customer, you should use Retrieve a Customer's PaymentMethods



76
77
78
79
80
81
82
83
84
# File 'lib/stripe/services/payment_method_service.rb', line 76

def retrieve(payment_method, params = {}, opts = {})
  request(
    method: :get,
    path: format("/v1/payment_methods/%<payment_method>s", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts,
    base_address: :api
  )
end

#serialize_batch_attach(payment_method, params = {}, opts = {}) ⇒ Object

Serializes a PaymentMethod attach request into a batch job JSONL line.



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/stripe/services/payment_method_service.rb', line 87

def serialize_batch_attach(payment_method, params = {}, opts = {})
  request_id = SecureRandom.uuid
  stripe_version = opts[:stripe_version] || Stripe.api_version

  request_body = {
    id: request_id,
    params: params,
    stripe_version: stripe_version,
  }
  request_body[:path_params] = { payment_method: payment_method }
  request_body[:context] = opts[:stripe_context] if opts[:stripe_context]
  JSON.generate(request_body)
end

#update(payment_method, params = {}, opts = {}) ⇒ Object

Updates a PaymentMethod object. A PaymentMethod must be attached to a customer to be updated.



102
103
104
105
106
107
108
109
110
# File 'lib/stripe/services/payment_method_service.rb', line 102

def update(payment_method, params = {}, opts = {})
  request(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts,
    base_address: :api
  )
end