pub struct CreatePaymentIntent<'a> {
Show 30 fields pub amount: i64, pub application_fee_amount: Option<i64>, pub automatic_payment_methods: Option<CreatePaymentIntentAutomaticPaymentMethods>, pub capture_method: Option<PaymentIntentCaptureMethod>, pub confirm: Option<bool>, pub confirmation_method: Option<PaymentIntentConfirmationMethod>, pub currency: Currency, pub customer: Option<CustomerId>, pub description: Option<&'a str>, pub error_on_requires_action: Option<bool>, pub expand: &'a [&'a str], pub mandate: Option<MandateId>, pub mandate_data: Option<CreatePaymentIntentMandateData>, pub metadata: Option<Metadata>, pub off_session: Option<PaymentIntentOffSession>, pub on_behalf_of: Option<&'a str>, pub payment_method: Option<PaymentMethodId>, pub payment_method_data: Option<CreatePaymentIntentPaymentMethodData>, pub payment_method_options: Option<CreatePaymentIntentPaymentMethodOptions>, pub payment_method_types: Option<Vec<String>>, pub radar_options: Option<CreatePaymentIntentRadarOptions>, pub receipt_email: Option<&'a str>, pub return_url: Option<&'a str>, pub setup_future_usage: Option<PaymentIntentSetupFutureUsage>, pub shipping: Option<CreatePaymentIntentShipping>, pub statement_descriptor: Option<&'a str>, pub statement_descriptor_suffix: Option<&'a str>, pub transfer_data: Option<CreatePaymentIntentTransferData>, pub transfer_group: Option<&'a str>, pub use_stripe_sdk: Option<bool>,
}
Expand description

The parameters for PaymentIntent::create.

Fields

amount: i64

Amount intended to be collected by this PaymentIntent.

A positive integer representing how much to charge in the smallest currency unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is $0.50 US or equivalent in charge currency. The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of $999,999.99).

application_fee_amount: Option<i64>

The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner’s Stripe account.

The amount of the application fee collected will be capped at the total payment amount. For more information, see the PaymentIntents use case for connected accounts.

automatic_payment_methods: Option<CreatePaymentIntentAutomaticPaymentMethods>

When enabled, this PaymentIntent will accept payment methods that you have enabled in the Dashboard and are compatible with this PaymentIntent’s other parameters.

capture_method: Option<PaymentIntentCaptureMethod>

Controls when the funds will be captured from the customer’s account.

confirm: Option<bool>

Set to true to attempt to confirm this PaymentIntent immediately.

This parameter defaults to false. When creating and confirming a PaymentIntent at the same time, parameters available in the confirm API may also be provided.

confirmation_method: Option<PaymentIntentConfirmationMethod>currency: Currency

Three-letter ISO currency code, in lowercase.

Must be a supported currency.

customer: Option<CustomerId>

ID of the Customer this PaymentIntent belongs to, if one exists.

Payment methods attached to other Customers cannot be used with this PaymentIntent.

If present in combination with setup_future_usage, this PaymentIntent’s payment method will be attached to the Customer after the PaymentIntent has been confirmed and any required actions from the user are complete.

description: Option<&'a str>

An arbitrary string attached to the object.

Often useful for displaying to users.

error_on_requires_action: Option<bool>

Set to true to fail the payment attempt if the PaymentIntent transitions into requires_action.

This parameter is intended for simpler integrations that do not handle customer actions, like saving cards without authentication. This parameter can only be used with confirm=true.

expand: &'a [&'a str]

Specifies which fields in the response should be expanded.

mandate: Option<MandateId>

ID of the mandate to be used for this payment.

This parameter can only be used with confirm=true.

mandate_data: Option<CreatePaymentIntentMandateData>

This hash contains details about the Mandate to create.

This parameter can only be used with confirm=true.

metadata: Option<Metadata>

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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

off_session: Option<PaymentIntentOffSession>

Set to true to indicate that the customer is not in your checkout flow during this payment attempt, and therefore is unable to authenticate.

This parameter is intended for scenarios where you collect card details and charge them later. This parameter can only be used with confirm=true.

on_behalf_of: Option<&'a str>

The Stripe account ID for which these funds are intended.

For details, see the PaymentIntents use case for connected accounts.

payment_method: Option<PaymentMethodId>

ID of the payment method (a PaymentMethod, Card, or compatible Source object) to attach to this PaymentIntent.

If this parameter is omitted with confirm=true, customer.default_source will be attached as this PaymentIntent’s payment instrument to improve the migration experience for users of the Charges API.

We recommend that you explicitly provide the payment_method going forward.

payment_method_data: Option<CreatePaymentIntentPaymentMethodData>

If provided, this hash will be used to create a PaymentMethod.

The new PaymentMethod will appear in the payment_method property on the PaymentIntent.

payment_method_options: Option<CreatePaymentIntentPaymentMethodOptions>

Payment-method-specific configuration for this PaymentIntent.

payment_method_types: Option<Vec<String>>

The list of payment method types (e.g.

card) that this PaymentIntent is allowed to use. If this is not provided, defaults to [“card”]. Use automatic_payment_methods to manage payment methods from the Stripe Dashboard.

radar_options: Option<CreatePaymentIntentRadarOptions>

Options to configure Radar.

See Radar Session for more information.

receipt_email: Option<&'a str>

Email address that the receipt for the resulting payment will be sent to.

If receipt_email is specified for a payment in live mode, a receipt will be sent regardless of your email settings.

return_url: Option<&'a str>

The URL to redirect your customer back to after they authenticate or cancel their payment on the payment method’s app or site.

If you’d prefer to redirect to a mobile application, you can alternatively supply an application URI scheme. This parameter can only be used with confirm=true.

setup_future_usage: Option<PaymentIntentSetupFutureUsage>

Indicates that you intend to make future payments with this PaymentIntent’s payment method.

Providing this parameter will attach the payment method to the PaymentIntent’s Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete.

If no Customer was provided, the payment method can still be attached to a Customer after the transaction completes. When processing card payments, Stripe also uses setup_future_usage to dynamically optimize your payment flow and comply with regional legislation and network rules, such as SCA.

shipping: Option<CreatePaymentIntentShipping>

Shipping information for this PaymentIntent.

statement_descriptor: Option<&'a str>

For non-card charges, you can use this value as the complete description that appears on your customers’ statements.

Must contain at least one letter, maximum 22 characters.

statement_descriptor_suffix: Option<&'a str>

Provides information about a card payment that customers see on their statements.

Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor.

transfer_data: Option<CreatePaymentIntentTransferData>

The parameters used to automatically create a Transfer when the payment succeeds. For more information, see the PaymentIntents use case for connected accounts.

transfer_group: Option<&'a str>

A string that identifies the resulting payment as part of a group.

See the PaymentIntents use case for connected accounts for details.

use_stripe_sdk: Option<bool>

Set to true only when using manual confirmation and the iOS or Android SDKs to handle additional authentication steps.

Implementations

Examples found in repository?
examples/payment-intent.rs (line 43)
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
async fn main() {
    let secret_key = std::env::var("STRIPE_SECRET_KEY").expect("Missing STRIPE_SECRET_KEY in env");
    let client = Client::new(secret_key);

    let customer = Customer::create(
        &client,
        CreateCustomer {
            name: Some("Alexander Lyon"),
            email: Some("test@async-stripe.com"),
            description: Some(
                "A fake customer that is used to illustrate the examples in async-stripe.",
            ),
            metadata: Some(
                [("async-stripe".to_string(), "true".to_string())].iter().cloned().collect(),
            ),

            ..Default::default()
        },
    )
    .await
    .unwrap();

    println!("created a customer at https://dashboard.stripe.com/test/customers/{}", customer.id);

    // we create an intent to pay
    let payment_intent = {
        let mut create_intent = CreatePaymentIntent::new(1000, Currency::USD);
        create_intent.payment_method_types = Some(vec!["card".to_string()]);
        create_intent.statement_descriptor = Some("Purchasing a new car");
        create_intent.metadata =
            Some([("color".to_string(), "red".to_string())].iter().cloned().collect());

        PaymentIntent::create(&client, create_intent).await.unwrap()
    };

    println!(
        "created a payment intent at https://dashboard.stripe.com/test/payments/{} with status '{}'",
        payment_intent.id, payment_intent.status
    );

    let payment_method = {
        let pm = PaymentMethod::create(
            &client,
            CreatePaymentMethod {
                type_: Some(PaymentMethodTypeFilter::Card),
                card: Some(CreatePaymentMethodCardUnion::CardDetailsParams(CardDetailsParams {
                    number: "4000008260000000".to_string(), // UK visa
                    exp_year: 2025,
                    exp_month: 1,
                    cvc: Some("123".to_string()),
                    ..Default::default()
                })),
                ..Default::default()
            },
        )
        .await
        .unwrap();

        PaymentMethod::attach(
            &client,
            &pm.id,
            AttachPaymentMethod { customer: customer.id.clone() },
        )
        .await
        .unwrap();

        pm
    };

    println!(
        "created a payment method with id {} and attached it to {}",
        payment_method.id,
        customer.name.unwrap()
    );

    // lets update the payment intent with their details
    let payment_intent = PaymentIntent::update(
        &client,
        &payment_intent.id,
        UpdatePaymentIntent {
            payment_method: Some(payment_method.id),
            customer: Some(customer.id), // this is not strictly required but good practice to ensure we have the right person
            ..Default::default()
        },
    )
    .await
    .unwrap();

    println!("updated payment intent with status '{}'", payment_intent.status);

    let payment_intent = PaymentIntent::confirm(
        &client,
        &payment_intent.id,
        PaymentIntentConfirmParams { ..Default::default() },
    )
    .await
    .unwrap();

    println!("completed payment intent with status {}", payment_intent.status);
}

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more