@stripe/stripe-js
Version: 
Stripe.js loading utility
196 lines (155 loc) • 5.86 kB
TypeScript
import {StripeElements} from '../stripe-js';
import {Address} from './shared';
import {PaymentMethod, PaymentMethodCreateParams} from './payment-methods';
import {PaymentIntent} from './payment-intents';
/**
 * The ConfirmationToken object.
 */
export interface ConfirmationToken {
  /**
   * Unique identifier for the object.
   */
  id: string;
  /**
   * String representing the object's type. Objects of the same type share the same value.
   */
  object: 'confirmation_token';
  /**
   * Time at which the object was created. Measured in seconds since the Unix epoch.
   */
  created: number;
  /**
   * Time at which this ConfirmationToken expires and can no longer be used to confirm a PaymentIntent or SetupIntent. This is set to null once this ConfirmationToken has been used. Measured in seconds since the Unix epoch.
   */
  expires_at: number;
  /**
   * Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
   */
  livemode: boolean;
  /**
   * ID of the PaymentIntent that this ConfirmationToken was used to confirm, or null if this ConfirmationToken has not yet been used.
   */
  payment_intent: null | string;
  /**
   * Payment details collected by the Payment Element, used to create a PaymentMethod when a PaymentIntent or SetupIntent is confirmed with this ConfirmationToken.
   */
  payment_method_preview: ConfirmationToken.PaymentMethodPreview;
  /**
   * The URL your customer is redirected to after they complete the payment.
   */
  return_url: string | null;
  /**
   * Indicates that you intend to make future payments with this ConfirmationToken’s payment method.
   *
   * The presence of this property will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent’s Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete.
   *
   * Stripe uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules. For example, if your customer is impacted by [SCA](https://stripe.com/docs/strong-customer-authentication), using `off_session` will ensure that they are authenticated while processing this PaymentIntent. You will then be able to collect [off-session payments](https://stripe.com/docs/payments/cards/charging-saved-cards#off-session-payments-with-saved-cards) for this customer.
   */
  setup_future_usage: PaymentIntent.SetupFutureUsage | null;
  /**
   * ID of the SetupIntent that this ConfirmationToken was used to confirm, or null if this ConfirmationToken has not yet been used.
   */
  setup_intent: null | string;
  /**
   * Shipping information for this ConfirmationToken.
   */
  shipping: PaymentIntent.Shipping | null;
  /**
   * Set to true when confirming server-side and using Stripe.js, iOS, or Android client-side SDKs to handle the next actions.
   */
  use_stripe_sdk: boolean;
}
export interface ConfirmationTokenCreateParams {
  /**
   * Data used to create a new payment method.
   *
   */
  payment_method_data?: {
    /**
     * The customer's billing details.
     */
    billing_details?: PaymentMethodCreateParams.BillingDetails;
    /**
     * Specifies if the PaymentMethod should be redisplayed when using the Saved Payment Method feature
     */
    allow_redisplay?: 'always' | 'limited' | 'unspecified';
    /**
     * 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
     * @docs https://docs.stripe.com/metadata
     */
    metadata?: Record<string, string>;
  };
  /**
   * Shipping information.
   */
  shipping?: ConfirmationToken.Shipping;
  /**
   * The url your customer will be directed to after they complete authentication.
   */
  return_url?: string | null;
}
export interface CreateConfirmationToken {
  /**
   * The Elements instance.
   *
   * @docs https://stripe.com/docs/js/elements_object
   */
  elements: StripeElements;
  /**
   * Parameters for creating the ConfirmationToken.
   * Details collected by Elements will be overriden by values passed here.
   */
  params?: ConfirmationTokenCreateParams;
}
export namespace ConfirmationToken {
  export interface Shipping {
    /**
     * Recipient address.
     */
    address: Address;
    /**
     * Recipient name.
     */
    name: string | null;
    /**
     * Recipient phone (including extension).
     */
    phone?: string | null;
  }
  export interface PaymentMethodPreview {
    /**
     * The type of the PaymentMethod. An additional hash is included on payment_method_preview with a name matching this value. It contains additional information specific to the PaymentMethod type.
     */
    type: string;
    billing_details: PaymentMethod.BillingDetails;
    acss_debit?: PaymentMethod.AcssDebit;
    affirm?: PaymentMethod.Affirm;
    afterpay_clearpay?: PaymentMethod.AfterpayClearpay;
    au_becs_debit?: PaymentMethod.AuBecsDebit;
    card?: PaymentMethod.Card;
    card_present?: PaymentMethod.CardPresent;
    eps?: PaymentMethod.Eps;
    fpx?: PaymentMethod.Fpx;
    grabpay?: PaymentMethod.GrabPay;
    ideal?: PaymentMethod.Ideal;
    p24?: PaymentMethod.P24;
    sepa_debit?: PaymentMethod.SepaDebit;
    us_bank_account?: PaymentMethod.UsBankAccount;
  }
  export interface MandateData {
    customer_acceptance: {
      type: 'online';
      online?: {
        /**
         * The IP address from which the Mandate was accepted by the customer.
         */
        ip_address: string;
        /**
         * The user agent of the browser from which the Mandate was accepted by the customer.
         */
        user_agent: string;
      };
    };
  }
}