File Coverage

lib/Net/API/Stripe/Payment/Source.pm
Criterion Covered Total %
statement 19 99 19.1
branch n/a
condition n/a
subroutine 7 87 8.0
pod 80 80 100.0
total 106 266 39.8


line stmt bran cond sub pod time code
1             ##----------------------------------------------------------------------------
2             ## Stripe API - ~/lib/Net/API/Stripe/Payment/Source.pm
3             ## Version v0.100.0
4             ## Copyright(c) 2019 DEGUEST Pte. Ltd.
5             ## Author: Jacques Deguest <jack@deguest.jp>
6             ## Created 2019/11/02
7             ## Modified 2020/05/15
8             ##
9             ##----------------------------------------------------------------------------
10             ## https://stripe.com/docs/api/sources/object
11             package Net::API::Stripe::Payment::Source;
12             BEGIN
13             {
14 2     2   21269297 use strict;
  2         15  
  2         70  
15 2     2   12 use warnings;
  2         5  
  2         63  
16 2     2   15 use parent qw( Net::API::Stripe::Generic );
  2         9  
  2         10  
17 2     2   172 use vars qw( $VERSION );
  2         11  
  2         141  
18 2     2   57 our( $VERSION ) = 'v0.100.0';
19             };
20              
21 2     2   13 use strict;
  2         8  
  2         46  
22 2     2   10 use warnings;
  2         4  
  2         3775  
23              
24 0     0 1   sub id { return( shift->_set_get_scalar( 'id', @_ ) ); }
25              
26 0     0 1   sub object { return( shift->_set_get_scalar( 'object', @_ ) ); }
27              
28 0     0 1   sub ach_credit_transfer { return( shift->_set_get_object( 'ach_credit_transfer', 'Net::API::Stripe::Payment::Source::ACHCreditTransfer', @_ ) ); }
29              
30 0     0 1   sub ach_debit { return( shift->_set_get_object( 'ach_debit', 'Net::API::Stripe::Payment::Source::ACHDebit', @_ ) ); }
31              
32 0     0 1   sub account { return( shift->_set_get_scalar_or_object( 'account', 'Net::API::Stripe::Connect::Account', @_ ) ); }
33              
34 0     0 1   sub account_holder_name { return( shift->_set_get_scalar( 'account_holder_name', @_ ) ); }
35              
36 0     0 1   sub account_holder_type { return( shift->_set_get_scalar( 'account_holder_type', @_ ) ); }
37              
38 0     0 1   sub active { return( shift->_set_get_scalar( 'active', @_ ) ); }
39              
40 0     0 1   sub address { return( shift->_address_populate( @_ ) ); }
41              
42 0     0 1   sub address_city { return( shift->_set_get_scalar( 'address_city', @_ ) ); }
43              
44 0     0 1   sub address_country { return( shift->_set_get_scalar( 'address_country', @_ ) ); }
45              
46 0     0 1   sub address_line1 { return( shift->_set_get_scalar( 'address_line1', @_ ) ); }
47              
48 0     0 1   sub address_line1_check { return( shift->_set_get_scalar( 'address_line1_check', @_ ) ); }
49              
50 0     0 1   sub address_line2 { return( shift->_set_get_scalar( 'address_line2', @_ ) ); }
51              
52 0     0 1   sub address_state { return( shift->_set_get_scalar( 'address_state', @_ ) ); }
53              
54 0     0 1   sub address_zip { return( shift->_set_get_scalar( 'address_zip', @_ ) ); }
55              
56 0     0 1   sub address_zip_check { return( shift->_set_get_scalar( 'address_zip_check', @_ ) ); }
57              
58 0     0 1   sub alipay { return( shift->_set_get_hash_as_object( 'alipay', 'Net::API::Stripe::Payment::Method::Details::Alipay', @_ ) ); }
59              
60 0     0 1   sub amount { return( shift->_set_get_number( 'amount', @_ ) ); }
61              
62 0     0 1   sub amount_received { return( shift->_set_get_number( 'amount_received', @_ ) ); }
63              
64 0     0 1   sub available_payout_methods { return( shift->_set_get_array( 'available_payout_methods', @_ ) ); }
65              
66 0     0 1   sub bancontact { return( shift->_set_get_hash_as_object( 'bancontact', 'Net::API::Stripe::Payment::Method::Details::BanContact', @_ ) ); }
67              
68 0     0 1   sub bank_name { return( shift->_set_get_scalar( 'bank_name', @_ ) ); }
69              
70 0     0 1   sub bitcoin_amount { return( shift->_set_get_number( 'bitcoin_amount', @_ ) ); }
71              
72 0     0 1   sub bitcoin_amount_received { return( shift->_set_get_number( 'bitcoin_amount_received', @_ ) ); }
73              
74 0     0 1   sub bitcoin_uri { return( shift->_set_get_uri( 'bitcoin_uri', @_ ) ); }
75              
76 0     0 1   sub brand { return( shift->_set_get_scalar( 'brand', @_ ) ); }
77              
78             ## If type is set to "card"
79 0     0 1   sub card { return( shift->_set_get_object( 'card', 'Net::API::Stripe::Connect::ExternalAccount::Card', @_ ) ); }
80              
81 0     0 1   sub card_present { return( shift->_set_get_hash_as_object( 'card_present', 'Net::API::Stripe::Payment::Method::Details::CardPresent', @_ ) ); }
82              
83 0     0 1   sub client_secret { return( shift->_set_get_scalar( 'client_secret', @_ ) ); }
84              
85 0     0 1   sub code_verification { return( shift->_set_get_object( 'code_verification', 'Net::API::Stripe::Payment::Source::CodeVerification', @_ ) ); }
86              
87 0     0 1   sub country { return( shift->_set_get_scalar( 'country', @_ ) ); }
88              
89 0     0 1   sub created { return( shift->_set_get_datetime( 'created', @_ ) ); }
90              
91 0     0 1   sub currency { return( shift->_set_get_scalar( 'currency', @_ ) ); }
92              
93 0     0 1   sub customer { return( shift->_set_get_scalar_or_object( 'customer', 'Net::API::Stripe::Customer', @_ ) ); }
94              
95 0     0 1   sub cvc_check { return( shift->_set_get_scalar( 'cvc_check', @_ ) ); }
96              
97 0     0 1   sub description { return( shift->_set_get_scalar( 'description', @_ ) ); }
98              
99 0     0 1   sub dynamic_last4 { return( shift->_set_get_scalar( 'dynamic_last4', @_ ) ); }
100              
101 0     0 1   sub email { return( shift->_set_get_scalar( 'email', @_ ) ); }
102              
103 0     0 1   sub eps { return( shift->_set_get_hash_as_object( 'eps', 'Net::API::Stripe::Payment::Method::Details::EPS', @_ ) ); }
104              
105 0     0 1   sub exp_month { return( shift->_set_get_number( 'exp_month', @_ ) ); }
106              
107 0     0 1   sub exp_year { return( shift->_set_get_number( 'exp_year', @_ ) ); }
108              
109 0     0 1   sub filled { return( shift->_set_get_scalar( 'filled', @_ ) ); }
110              
111 0     0 1   sub fingerprint { return( shift->_set_get_scalar( 'fingerprint', @_ ) ); }
112              
113 0     0 1   sub flow { return( shift->_set_get_scalar( 'flow', @_ ) ); }
114              
115 0     0 1   sub funding { return( shift->_set_get_scalar( 'funding', @_ ) ); }
116              
117 0     0 1   sub giropay { return( shift->_set_get_hash_as_object( 'giropay', 'Net::API::Stripe::Payment::Method::Details::Giropay', @_ ) ); }
118              
119 0     0 1   sub ideal { return( shift->_set_get_hash_as_object( 'ideal', 'Net::API::Stripe::Payment::Method::Details::Ideal', @_ ) ); }
120              
121 0     0 1   sub inbound_address { return( shift->_set_get_scalar( 'inbound_address', @_ ) ); }
122              
123 0     0 1   sub klarna { return( shift->_set_get_hash_as_object( 'klarna', 'Net::API::Stripe::Payment::Method::Details::Klarna', @_ ) ); }
124              
125 0     0 1   sub last4 { return( shift->_set_get_scalar( 'last4', @_ ) ); }
126              
127 0     0 1   sub livemode { return( shift->_set_get_boolean( 'livemode', @_ ) ); }
128              
129 0     0 1   sub metadata { return( shift->_set_get_hash( 'metadata', @_ ) ); }
130              
131 0     0 1   sub multibanco { return( shift->_set_get_hash_as_object( 'multibanco', 'Net::API::Stripe::Payment::Method::Details::MultiBanco', @_ ) ); }
132              
133 0     0 1   sub name { return( shift->_set_get_scalar( 'name', @_ ) ); }
134              
135 0     0 1   sub owner { return( shift->_set_get_object( 'owner', 'Net::API::Stripe::Payment::Source::Owner', @_ ) ); }
136              
137 0     0 1   sub p24 { return( shift->_set_get_hash_as_object( 'p24', 'Net::API::Stripe::Payment::Method::Details::P24', @_ ) ); }
138              
139 0     0 1   sub payment { return( shift->_set_get_scalar( 'payment', @_ ) ); }
140              
141 0     0 1   sub payment_amount { return( shift->_set_get_number( 'payment_amount', @_ ) ); }
142              
143 0     0 1   sub payment_currency { return( shift->_set_get_scalar( 'payment_currency', @_ ) ); }
144              
145             ## "Information related to the receiver flow. Present if the source is a receiver (flow is receiver)."
146 0     0 1   sub receiver { return( shift->_set_get_object( 'receiver', 'Net::API::Stripe::Payment::Source::Receiver', @_ ) ); }
147              
148 0     0 1   sub redirect { return( shift->_set_get_object( 'redirect', 'Net::API::Stripe::Payment::Source::Redirect', @_ ) ); }
149              
150 0     0 1   sub refund_address { return( shift->_set_get_scalar( 'refund_address', @_ ) ); }
151              
152 0     0 1   sub recipient { return( shift->_set_get_scalar_or_object( 'recipient', 'Net::API::Stripe::Customer', @_ ) ); }
153              
154 0     0 1   sub routing_number { return( shift->_set_get_scalar( 'routing_number', @_ ) ); }
155              
156 0     0 1   sub reusable { return( shift->_set_get_scalar( 'reusable', @_ ) ); }
157              
158 0     0 1   sub sofort { return( shift->_set_get_hash_as_object( 'sofort', 'Net::API::Stripe::Payment::Method::Details::Sofort', @_ ) ); }
159              
160 0     0 1   sub source_order { return( shift->_set_get_object( 'source_order', 'Net::API::Stripe::Order', @_ ) ); }
161              
162 0     0 1   sub statement_descriptor { return( shift->_set_get_scalar( 'statement_descriptor', @_ ) ); }
163              
164 0     0 1   sub status { return( shift->_set_get_scalar( 'status', @_ ) ); }
165              
166 0     0 1   sub stripe_account { return( shift->_set_get_hash_as_object( 'stripe_account', 'Net::API::Stripe::Payment::Method::Details::StripeAccount', @_ ) ); }
167              
168 0     0 1   sub tokenization_method { return( shift->_set_get_scalar( 'tokenization_method', @_ ) ); }
169              
170 0     0 1   sub transactions { return( shift->_set_get_object( 'transactions', 'Net::API::Stripe::List', @_ ) ); }
171              
172 0     0 1   sub type { return( shift->_set_get_scalar( 'type', @_ ) ); }
173              
174 0     0 1   sub uncaptured_funds { return( shift->_set_get_scalar( 'uncaptured_funds', @_ ) ); }
175              
176 0     0 1   sub usage { return( shift->_set_get_scalar( 'usage', @_ ) ); }
177              
178 0     0 1   sub used { return( shift->_set_get_scalar( 'used', @_ ) ); }
179              
180 0     0 1   sub used_for_payment { return( shift->_set_get_scalar( 'used_for_payment', @_ ) ); }
181              
182 0     0 1   sub username { return( shift->_set_get_scalar( 'username', @_ ) ); }
183              
184 0     0 1   sub wechat { return( shift->_set_get_hash_as_object( 'wechat', 'Net::API::Stripe::Payment::Method::Details::WeChat', @_ ) ); }
185              
186             1;
187              
188             __END__
189              
190             =encoding utf8
191              
192             =head1 NAME
193              
194             Net::API::Stripe::Payment::Source - A Stripe Payment Source Object
195              
196             =head1 SYNOPSIS
197              
198             my $source = $stripe->source({
199             account => $account_object,
200             account_holder_name => 'John Doe',
201             account_holder_type => 'individual',
202             active => $stripe->true,
203             # Or maybe more simply you pass a Net::API::Stripe::Address object
204             # address => $address_object
205             address_line1 => '1-2-3 Kudan-Minami, Chiyoda-ku',
206             address_line2 => 'Big Bldg 12F',
207             address_city => 'Tokyo',
208             address_state => undef,
209             address_zip => '123-4567',
210             address_country => 'jp',
211             amount => 2000,
212             brand => 'Visa',
213             card => $card_object,
214             country => 'jp',
215             currency => 'jpy',
216             description => 'Primary source for customer',
217             email => 'john.doe@example.com',
218             exp_month => 4,
219             exp_year => 2030,
220             funding => 'debit',
221             metadata => { transaction_id => 123, customer_id => 456 },
222             name => 'John Doe',
223             statement_descriptor => 'Big Corp Services',
224             type => 'card',
225             });
226              
227             See documentation in L<Net::API::Stripe> for example to make api calls to Stripe to create those objects.
228              
229             =head1 VERSION
230              
231             v0.100.0
232              
233             =head1 DESCRIPTION
234              
235             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.
236              
237             Stripe states this approach for card is deprecated in favour or PaymentIntent: L<https://stripe.com/docs/sources/cards>
238              
239             =head1 CONSTRUCTOR
240              
241             =head2 new( %ARG )
242              
243             Creates a new L<Net::API::Stripe::Payment::Source> object.
244              
245             =head1 METHODS
246              
247             =head2 id string
248              
249             Unique identifier for the object.
250              
251             =head2 object string, value is "source"
252              
253             String representing the object’s type. Objects of the same type share the same value.
254              
255             =head2 account custom only string (expandable)
256              
257             The account this card belongs to. This attribute will not be in the card object if the card belongs to a customer or recipient instead.
258              
259             When expanded, this is a L<Net::API::Stripe::Connect::Account>
260              
261             =head2 account_holder_name string
262              
263             The name of the person or business that owns the bank account.
264              
265             =head2 account_holder_type string
266              
267             The type of entity that holds the account. This can be either individual or company.
268              
269             =head2 ach_credit_transfer
270              
271             If B<type> is set to C<ach_credit_transfer>, this is a L<Net::API::Stripe::Payment::Source::ACHCreditTransfer> object.
272              
273             It is not very clear in the Stripe API, but in the B<type> property, they mention "An additional hash is included on the source with a name matching this value. It contains additional information specific to the payment method (L<https://stripe.com/docs/sources>) used." :/
274              
275             =head2 ach_debit
276              
277             If B<type> is set to C<ach_debit>, this is a L<Net::API::Stripe::Payment::Source::ACHDebit> object.
278              
279             It is not very clear in the Stripe API, but in the B<type> property, they mention "An additional hash is included on the source with a name matching this value. It contains additional information specific to the payment method (L<https://stripe.com/docs/sources>) used." :/
280              
281             =head2 active boolean
282              
283             True when this bitcoin receiver has received a non-zero amount of bitcoin.
284              
285             =head2 address L<Net::API::Stripe::Address> object or hash
286              
287             This is a helper method. Provided with either a L<Net::API::Stripe::Address> object or a hash with same properties, this will assign all the address_* properties by calling its method.
288              
289             =head2 address L<Net::API::Stripe::Address> object or hash
290              
291             This is a helper method. Provided with either a L<Net::API::Stripe::Address> object or a hash with same properties, this will assign all the address_* properties by calling its method.
292              
293             =head2 address_city string
294              
295             City/District/Suburb/Town/Village.
296              
297             =head2 address_country string
298              
299             Billing address country, if provided when creating card.
300              
301             =head2 address_line1 string
302              
303             Address line 1 (Street address/PO Box/Company name).
304              
305             =head2 address_line1_check string
306              
307             If address_line1 was provided, results of the check: pass, fail, unavailable, or unchecked.
308              
309             =head2 address_line2 string
310              
311             Address line 2 (Apartment/Suite/Unit/Building).
312              
313             =head2 address_state string
314              
315             State/County/Province/Region.
316              
317             =head2 address_zip string
318              
319             ZIP or postal code.
320              
321             =head2 address_zip_check string
322              
323             If address_zip was provided, results of the check: pass, fail, unavailable, or unchecked.
324              
325             =head2 alipay
326              
327             If B<type> is set to C<alipay>, this is a L<Net::API::Stripe::Payment::Method::Details::Alipay> object.
328              
329             =head2 amount integer
330              
331             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.
332              
333             =head2 amount_received positive integer or zero
334              
335             The amount of currency to which bitcoin_amount_received has been converted.
336              
337             =head2 available_payout_methods array
338              
339             A set of available payout methods for this card. Will be either ["standard"] or ["standard", "instant"]. Only values from this set should be passed as the method when creating a transfer.
340              
341             =head2 bancontact
342              
343             If B<type> is set to C<bancontact>, this is a L<Net::API::Stripe::Payment::Method::Details::BanContact> object.
344              
345             =head2 bank_name string
346              
347             Name of the bank associated with the routing number (e.g., WELLS FARGO).
348              
349             =head2 bitcoin_amount positive integer
350              
351             The amount of bitcoin that the customer should send to fill the receiver. The bitcoin_amount is denominated in Satoshi: there are 10^8 Satoshi in one bitcoin.
352              
353             =head2 bitcoin_amount_received positive integer or zero
354              
355             The amount of bitcoin that has been sent by the customer to this receiver.
356              
357             =head2 bitcoin_uri string
358              
359             This URI can be displayed to the customer as a clickable link (to activate their bitcoin client) or as a QR code (for mobile wallets).
360              
361             =head2 brand string
362              
363             Card brand. Can be American Express, Diners Club, Discover, JCB, MasterCard, UnionPay, Visa, or Unknown.
364              
365             =head2 card object
366              
367             If B<type> is set to C<card>, this is a L<Net::API::Stripe::Payment::Card> object. See also L<https://stripe.com/docs/sources/cards>.
368              
369             =head2 card_present
370              
371             If B<type> is set to C<card_present>, this is a L<Net::API::Stripe::Payment::Method::Details::CardPresent> object.
372              
373             =head2 client_secret string
374              
375             The client secret of the source. Used for client-side retrieval using a publishable key.
376              
377             =head2 code_verification hash
378              
379             Information related to the code verification flow. Present if the source is authenticated by a verification code (flow is code_verification).
380              
381             This is a L<Net::API::Stripe::Payment::Source::CodeVerification> object.
382              
383             =head2 country string
384              
385             Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you’ve collected.
386              
387             =head2 created timestamp
388              
389             Time at which the object was created. Measured in seconds since the Unix epoch.
390              
391             =head2 currency currency
392              
393             Three-letter ISO code for the currency associated with the source. This is the currency for which the source will be chargeable once ready. Required for single_use sources.
394              
395             =head2 customer string
396              
397             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. If it is expanded, this would be a L<Net::API::Stripe::Customer> object.
398              
399             =head2 cvc_check string
400              
401             If a CVC was provided, results of the check: pass, fail, unavailable, or unchecked.
402              
403             =head2 description string
404              
405             An arbitrary string attached to the object. Often useful for displaying to users.
406              
407             =head2 dynamic_last4 string
408              
409             (For tokenized numbers only.) The last four digits of the device account number.
410              
411             =head2 email string
412              
413             The customer’s email address, set by the API call that creates the receiver.
414              
415             =head2 eps
416              
417             If B<type> is set to C<eps>, this is a L<Net::API::Stripe::Payment::Method::Details::EPS> object.
418              
419             =head2 exp_month integer
420              
421             Two-digit number representing the card’s expiration month.
422              
423             =head2 exp_year integer
424              
425             Four-digit number representing the card’s expiration year.
426              
427             =head2 filled boolean
428              
429             This flag is initially false and updates to true when the customer sends the bitcoin_amount to this receiver.
430              
431             =head2 fingerprint string
432              
433             Uniquely identifies this particular card number. You can use this attribute to check whether two customers who’ve signed up with you are using the same card number, for example.
434              
435             =head2 flow string
436              
437             The authentication flow of the source. flow is one of redirect, receiver, code_verification, none.
438              
439             =head2 livemode boolean
440              
441             Has the value true if the object exists in live mode or the value false if the object exists in test mode.
442              
443             =head2 funding string
444              
445             Card funding type. Can be credit, debit, prepaid, or unknown.
446              
447             =head2 giropay
448              
449             If B<type> is set to C<giropay>, this is a L<Net::API::Stripe::Payment::Method::Details::Giropay> object.
450              
451             =head2 ideal
452              
453             If B<type> is set to C<ideal>, this is a L<Net::API::Stripe::Payment::Method::Details::Ideal> object.
454              
455             =head2 inbound_address string
456              
457             A bitcoin address that is specific to this receiver. The customer can send bitcoin to this address to fill the receiver.
458              
459             =head2 klarna
460              
461             If B<type> is set to C<klarna>, this is a L<Net::API::Stripe::Payment::Method::Details::Klarna> object.
462              
463             =head2 last4 string
464              
465             The last four digits of the card.
466              
467             =head2 livemode boolean
468              
469             Has the value true if the object exists in live mode or the value false if the object exists in test mode.
470              
471             =head2 metadata hash
472              
473             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.
474              
475             =head2 multibanco
476              
477             If B<type> is set to C<multibanco>, this is a L<Net::API::Stripe::Payment::Method::Details::MultiBanco> object.
478              
479             =head2 name string
480              
481             Cardholder name.
482              
483             =head2 p24
484              
485             If B<type> is set to C<p24>, this is a L<Net::API::Stripe::Payment::Method::Details::P24> object.
486              
487             =head2 payment string
488              
489             The ID of the payment created from the receiver, if any. Hidden when viewing the receiver with a publishable key.
490              
491             =head2 owner hash
492              
493             Information about the owner of the payment instrument that may be used or required by particular source types.
494              
495             This is a L<Net::API::Stripe::Payment::Source::Owner> object.
496              
497             =head2 payment_amount positive integer
498              
499             If the Alipay account object is not reusable, the exact amount that you can create a charge for.
500              
501             =head2 payment_currency currency
502              
503             If the Alipay account object is not reusable, the exact currency that you can create a charge for.
504              
505             =head2 receiver hash
506              
507             Information related to the receiver flow. Present if the source is a receiver (flow is receiver).
508              
509             This is a L<Net::API::Stripe::Payment::Source::Receiver> object.
510              
511             =head2 recipient string (expandable)
512              
513             The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
514              
515             When expanded, this is a L<Net::API::Stripe::Customer>.
516              
517             =head2 redirect hash
518              
519             Information related to the redirect flow. Present if the source is authenticated by a redirect (flow is redirect).
520              
521             This is a L<Net::API::Stripe::Payment::Source::Redirect> object.
522              
523             =head2 reusable boolean
524              
525             True if you can create multiple payments using this account. If the account is reusable, then you can freely choose the amount of each payment.
526              
527             =head2 refund_address string
528              
529             The refund address of this bitcoin receiver.
530              
531             =head2 routing_number string
532              
533             The routing transit number for the bank account.
534              
535             =head2 sofort hash
536              
537             If B<type> is set to C<sofort>, this is a L<Net::API::Stripe::Payment::Details::Sofort> virtual object, ie it is created dynamically by L<Nodule::Generic/"set_get_hash_as_object">
538              
539             =head2 source_order hash
540              
541             Information about the items and shipping associated with the source. Required for transactional credit (for example Klarna) sources before you can charge it. This is a L<Net::API::Stripe::Order> object.
542              
543             =over 4
544              
545             =item I<amount> integer
546              
547             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 for the order.
548              
549             =item I<currency> currency
550              
551             Three-letter ISO currency code, in lowercase. Must be a supported currency.
552              
553             =item I<email> string
554              
555             The email address of the customer placing the order.
556              
557             =item I<items> array of hashes
558              
559             List of items constituting the order. This is an array of L<Net::API::Stripe::Order::Item> objects.
560              
561             =item I<shipping> hash
562              
563             The shipping address for the order. Present if the order is for goods to be shipped. This is a L<Net::API::Stripe::Shipping> object
564              
565             =back
566              
567             =head2 statement_descriptor string
568              
569             Extra information about a source. This will appear on your customer’s statement every time you charge the source.
570              
571             =head2 status string
572              
573             The status of the source, one of canceled, chargeable, consumed, failed, or pending. Only chargeable sources can be used to create a charge.
574              
575             =head2 stripe_account
576              
577             If B<type> is set to C<stripe_account>, this is a L<Net::API::Stripe::Payment::Method::Details::StripeAccount> object.
578              
579             =head2 tokenization_method string
580              
581             If the card number is tokenized, this is the method that was used. Can be apple_pay or google_pay.
582              
583             =head2 transactions
584              
585             A list (L<Net::API::Stripe::List>) of L<Net::API::Stripe::Bitcoin::Transaction> object
586              
587             =head2 type string
588              
589             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 (L<https://stripe.com/docs/sources>) used.
590              
591             =head2 uncaptured_funds boolean
592              
593             This receiver contains uncaptured funds that can be used for a payment or refunded.
594              
595             =head2 usage string
596              
597             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.
598              
599             =head2 used boolean
600              
601             Whether this Alipay account object has ever been used for a payment.
602              
603             =head2 used_for_payment boolean
604              
605             Indicate if this source is used for payment.
606              
607             =head2 username string
608              
609             The username for the Alipay account.
610              
611             =head2 wechat
612              
613             If L</type> is set to C<wechat>, this is a L<Net::API::Stripe::Payment::Method::Details::WeChat> object.
614              
615             =head1 API SAMPLE
616              
617             {
618             "id": "src_fake123456789",
619             "object": "source",
620             "ach_credit_transfer": {
621             "account_number": "test_52796e3294dc",
622             "routing_number": "110000000",
623             "fingerprint": "anvbmbvmnbvmab",
624             "bank_name": "TEST BANK",
625             "swift_code": "TSTEZ122"
626             },
627             "amount": null,
628             "client_secret": "src_client_secret_fake123456789",
629             "created": 1571314413,
630             "currency": "jpy",
631             "flow": "receiver",
632             "livemode": false,
633             "metadata": {},
634             "owner": {
635             "address": null,
636             "email": "jenny.rosen@example.com",
637             "name": null,
638             "phone": null,
639             "verified_address": null,
640             "verified_email": null,
641             "verified_name": null,
642             "verified_phone": null
643             },
644             "receiver": {
645             "address": "121042882-38381234567890123",
646             "amount_charged": 0,
647             "amount_received": 0,
648             "amount_returned": 0,
649             "refund_attributes_method": "email",
650             "refund_attributes_status": "missing"
651             },
652             "statement_descriptor": null,
653             "status": "pending",
654             "type": "ach_credit_transfer",
655             "usage": "reusable"
656             }
657              
658             =head1 HISTORY
659              
660             =head2 v0.1
661              
662             Initial version
663              
664             =head1 STRIPE HISTORY
665              
666             =head2 2018-01-23
667              
668             When being viewed by a platform, cards and bank accounts created on behalf of connected accounts will have a fingerprint that is universal across all connected accounts. For accounts that are not connect platforms, there will be no change.
669              
670             =head1 AUTHOR
671              
672             Jacques Deguest E<lt>F<jack@deguest.jp>E<gt>
673              
674             =head1 SEE ALSO
675              
676             Stripe API documentation:
677              
678             L<https://stripe.com/docs/api/sources>, L<https://stripe.com/docs/sources>, L<https://stripe.com/docs/sources/customers>
679              
680             =head1 COPYRIGHT & LICENSE
681              
682             Copyright (c) 2019-2020 DEGUEST Pte. Ltd.
683              
684             You can use, copy, modify and redistribute this package and associated
685             files under the same terms as Perl itself.
686              
687             =cut
688